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 import java.security.Permission;
31 import java.security.PermissionCollection;
32 import java.util.Collection;
33 import java.util.Collections;
34 import java.util.Enumeration;
35 import java.util.HashSet;
36 import java.util.Iterator;
37 import java.util.Set;
38 import org.slf4j.Logger;
39 import org.slf4j.LoggerFactory;
40
41
42
43
44
45
46
47
48
49
50
51
52 public abstract class JGPermissionCollection extends PermissionCollection {
53
54
55
56
57 private static final long serialVersionUID = 3834030277143377201L;
58
59 private static final Logger logger = LoggerFactory.getLogger(JGPermissionCollection.class.getName());
60
61 protected Set permissions;
62
63
64
65
66
67 public JGPermissionCollection() {
68
69 permissions = new HashSet();
70 }
71
72
73
74
75
76 public JGPermissionCollection(Collection coll) {
77
78 permissions = new HashSet(coll);
79 }
80
81
82
83
84 public void add(Permission permission) {
85 if(permission!=null){
86 permissions.add(permission);
87 }
88
89 }
90
91
92
93
94
95
96 public void addAll(Set permissionSet) {
97 if(permissionSet!=null){
98 permissions.addAll(permissionSet);
99 }
100
101 }
102
103 public void addAll(PermissionCollection pcColl){
104 Enumeration en = pcColl.elements();
105 while(en.hasMoreElements()){
106 permissions.add((Permission)en.nextElement());
107 }
108 }
109
110
111
112
113
114 public Enumeration elements() {
115 return Collections.enumeration(permissions);
116
117 }
118
119
120
121
122
123
124
125
126
127
128
129 public Permission getPermission (String permissionName) throws NoSuchPermissionException{
130 Permission permission;
131 Iterator it = permissions.iterator();
132 while(it.hasNext()){
133 permission = (Permission)it.next();
134 if(permission.getName().equals(permissionName)){
135 return permission;
136 }
137
138 }
139 logger.warn("permission "+permissionName+" not found in JGPermissionCollection#getPermission!!!");
140 logger.warn("permissions="+permissions);
141 throw new NoSuchPermissionException("permission "+permissionName+" not found in JGPermissionCollection#getPermission");
142
143 }
144
145
146
147
148
149 public void removePermission(Permission permission){
150 if(permission!= null){
151 permissions.remove(permission);
152 }
153 }
154
155
156
157
158
159 public void removePermissions(PermissionCollection permColl){
160 Enumeration permissionsEnum = permColl.elements();
161 while(permissionsEnum.hasMoreElements()){
162 permissions.remove((Permission)permissionsEnum.nextElement());
163 }
164 }
165
166
167
168
169
170 public void clear(){
171 permissions.clear();
172 }
173
174 @Override
175 public String toString(){
176 StringBuffer sb = new StringBuffer();
177 Iterator permissionsIterator = this.permissions.iterator();
178 while(permissionsIterator.hasNext()){
179 Permission permission = (Permission)permissionsIterator.next();
180 sb.append(permission.toString());
181 sb.append("\n");
182 }
183 return sb.toString();
184 }
185
186
187
188
189
190 public int size(){
191 return permissions.size();
192 }
193
194
195
196
197 public Set getPermissions() {
198 return permissions;
199 }
200
201
202
203
204
205
206 public boolean containsPermission(Permission permission) {
207 return permissions.contains(permission);
208 }
209
210
211
212
213 public void setPermissions(Set perms) {
214 this.permissions = perms;
215 }
216
217 }