]> git.argeo.org Git - lgpl/argeo-commons.git/blob - NodeAuthorization.java
2846069359a2dcb44e95864f824517a70fa5215b
[lgpl/argeo-commons.git] / NodeAuthorization.java
1 package org.argeo.cms.internal.kernel;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.Collection;
6 import java.util.Collections;
7 import java.util.List;
8
9 import org.osgi.service.useradmin.Authorization;
10
11 class NodeAuthorization implements Authorization {
12 private final String name;
13 private final String displayName;
14 private final List<String> systemRoles;
15 private final List<String> roles;
16
17 public NodeAuthorization(String name, String displayName,
18 Collection<String> systemRoles, String[] roles) {
19 this.name = name;
20 this.displayName = displayName;
21 this.systemRoles = Collections.unmodifiableList(new ArrayList<String>(
22 systemRoles));
23 this.roles = Collections.unmodifiableList(Arrays.asList(roles));
24 }
25
26 @Override
27 public String getName() {
28 return name;
29 }
30
31 @Override
32 public boolean hasRole(String name) {
33 if (systemRoles.contains(name))
34 return true;
35 if (roles.contains(name))
36 return true;
37 return false;
38 }
39
40 @Override
41 public String[] getRoles() {
42 int size = systemRoles.size() + roles.size();
43 List<String> res = new ArrayList<String>(size);
44 res.addAll(systemRoles);
45 res.addAll(roles);
46 return res.toArray(new String[size]);
47 }
48
49 @Override
50 public int hashCode() {
51 if (name == null)
52 return super.hashCode();
53 return name.hashCode();
54 }
55
56 @Override
57 public boolean equals(Object obj) {
58 if (!(obj instanceof Authorization))
59 return false;
60 Authorization that = (Authorization) obj;
61 if (name == null)
62 return that.getName() == null;
63 return name.equals(that.getName());
64 }
65
66 @Override
67 public String toString() {
68 return displayName;
69 }
70
71 }