1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package net.sf.jguard.core.authorization.permissions;
29
30
31 import java.io.Serializable;
32 import java.security.Permission;
33 import java.security.PermissionCollection;
34 import java.util.HashSet;
35 import java.util.Iterator;
36 import java.util.Set;
37
38
39
40
41
42
43
44
45
46
47 public class Domain extends JGPermissionCollection implements Comparable,Cloneable,Serializable{
48
49 private static final long serialVersionUID = 178066544850786962L;
50
51 private String name;
52
53
54 public Domain(String domainName){
55 super();
56 name = domainName;
57 }
58 public Domain(String domainName,PermissionCollection pcoll){
59 name = domainName;
60 permissions = new HashSet();
61 super.addAll(pcoll);
62 }
63
64
65
66 public String getName() {
67 return name;
68 }
69
70
71
72 public void setName(String domainName) {
73
74 this.name = domainName;
75 }
76
77
78
79
80
81
82 public boolean equals(Object obj){
83 Domain domain = (Domain)obj;
84 if(this.name.equals(domain.getName())){
85 return true;
86 }
87 return false;
88 }
89
90
91
92
93
94
95
96 public int hashCode() {
97 return name.toString().hashCode();
98 }
99
100
101
102
103
104
105 public Object clone()throws CloneNotSupportedException{
106 JGPermissionCollection dom = new Domain(new String(this.name));
107 Set perms = new HashSet();
108 Iterator itPermissions = permissions.iterator();
109 while(itPermissions.hasNext()){
110 Permission perm = (Permission)itPermissions.next();
111 String permName = perm.getName();
112 String permActions = perm.getActions();
113 Class permClass = perm.getClass();
114 Permission newPerm;
115 try {
116 newPerm = PermissionUtils.getPermission(permClass.getName(),permName,permActions);
117 } catch (ClassNotFoundException e) {
118 throw new CloneNotSupportedException(e.getMessage());
119 }
120 perms.add(newPerm);
121 }
122 dom.setPermissions(perms);
123 return dom;
124 }
125
126
127
128
129
130
131 public int compareTo(Object o) {
132 Domain domain = (Domain)o;
133 return this.name.compareTo(domain.getName());
134 }
135
136
137
138
139
140
141 public String toString(){
142 StringBuffer sb = new StringBuffer();
143 sb.append("\n");
144 sb.append(" name="+name);
145 sb.append("\n");
146 sb.append(" permissions=\n"+super.toString());
147 sb.append("\n");
148 return sb.toString();
149 }
150
151 public boolean implies(Permission permission){
152 Iterator it = permissions.iterator();
153 Permission p;
154
155 while(it.hasNext()){
156 p = (Permission) it.next();
157 if (p.implies(permission)) {
158 return true;
159 }
160 }
161 return false;
162 }
163
164 }