KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > jguard > core > authorization > permissions > JGPermissionCollection


1 /*
2 jGuard is a security framework based on top of jaas (java authentication and authorization security).
3 it is written for web applications, to resolve simply, access control problems.
4 version $Name$
5 http://sourceforge.net/projects/jguard/
6
7 Copyright (C) 2004 Charles GAY
8
9 This library is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Lesser General Public
11 License as published by the Free Software Foundation; either
12 version 2.1 of the License, or (at your option) any later version.
13
14 This library is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Lesser General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public
20 License along with this library; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
23
24 jGuard project home page:
25 http://sourceforge.net/projects/jguard/
26
27 */

28 package net.sf.jguard.core.authorization.permissions;
29
30 import java.security.Permission JavaDoc;
31 import java.security.PermissionCollection JavaDoc;
32 import java.util.Collection JavaDoc;
33 import java.util.Collections JavaDoc;
34 import java.util.Enumeration JavaDoc;
35 import java.util.HashSet JavaDoc;
36 import java.util.Iterator JavaDoc;
37 import java.util.Set JavaDoc;
38 import java.util.logging.Logger JavaDoc;
39
40
41
42 /**
43  * contains similar permissions.
44  * this class contains similar <strong>java.security.Permission</strong> instances,
45  * with the same type.
46  * it is a "technical" container in opposite to Domain,which is a "functional" container.
47  * Classes extending this abstract class must implements implies method from PermissionCollection.
48  * @author <a HREF="mailto:diabolo512@users.sourceforge.net ">Charles Gay</a>
49  *
50  */

51 public abstract class JGPermissionCollection extends PermissionCollection JavaDoc {
52
53     /**
54      * serial version id.
55      */

56     private static final long serialVersionUID = 3834030277143377201L;
57     /** Logger for this class */
58     private static final Logger JavaDoc logger = Logger.getLogger(JGPermissionCollection.class.getName());
59
60     protected Set JavaDoc permissions;
61
62     /**
63      * default constructor.
64      *
65      */

66     public JGPermissionCollection() {
67
68         permissions = new HashSet JavaDoc();
69     }
70
71     /**
72      * constructor.
73      * @param coll
74      */

75     public JGPermissionCollection(Collection JavaDoc coll) {
76
77         permissions = new HashSet JavaDoc(coll);
78     }
79     /**
80      * add a permission to the set.
81      * @see java.security.PermissionCollection#add(java.security.Permission)
82      */

83     public void add(Permission JavaDoc permission) {
84         permissions.add(permission);
85
86     }
87
88     /**
89      * add permissions to the set.
90      * @param permissionSet
91      * @see java.security.PermissionCollection#add(java.security.Permission)
92      */

93     public void addAll(Set JavaDoc permissionSet) {
94         permissions.addAll(permissionSet);
95
96     }
97     
98     public void addAll(PermissionCollection JavaDoc pcColl){
99         Enumeration JavaDoc en = pcColl.elements();
100         while(en.hasMoreElements()){
101             permissions.add((Permission JavaDoc)en.nextElement());
102         }
103     }
104
105     /**
106      * return all the permissions.
107      * @see java.security.PermissionCollection#elements()
108      */

109     public Enumeration JavaDoc elements() {
110         return Collections.enumeration(permissions);
111
112     }
113
114    
115
116
117
118    /**
119     * return the corresponding permission.
120     * @param permissionName
121     * @return permission
122  * @throws NoSuchPermissionException
123     */

124     public Permission JavaDoc getPermission (String JavaDoc permissionName) throws NoSuchPermissionException{
125         Permission JavaDoc permission;
126         Iterator JavaDoc it = permissions.iterator();
127         while(it.hasNext()){
128             permission = (Permission JavaDoc)it.next();
129             if(permission.getName().equals(permissionName)){
130                 return permission;
131             }
132
133         }
134         logger.warning("permission "+permissionName+" not found in JGPermissionCollection#getPermission!!!");
135         logger.warning("permissions="+permissions);
136         throw new NoSuchPermissionException("permission "+permissionName+" not found in JGPermissionCollection#getPermission");
137
138     }
139
140     /**
141      * remove permission from Permission's collection.
142      * @param permission
143      */

144     public void removePermission(Permission JavaDoc permission){
145         permissions.remove(permission);
146     }
147
148     /**
149      * remove permission from Permission's collection.
150      * @param permission
151      */

152     public void removePermissions(PermissionCollection JavaDoc permColl){
153         Enumeration JavaDoc permissionsEnum = permColl.elements();
154         while(permissionsEnum.hasMoreElements()){
155             permissions.remove((Permission JavaDoc)permissionsEnum.nextElement());
156         }
157     }
158     
159     /**
160      * remove permission from Permission's collection.
161      * @param permission
162      */

163     public void clear(){
164         permissions.clear();
165     }
166     
167     public String JavaDoc toString(){
168         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
169         Iterator JavaDoc permissionsIterator = this.permissions.iterator();
170         while(permissionsIterator.hasNext()){
171             Permission JavaDoc permission = (Permission JavaDoc)permissionsIterator.next();
172             sb.append(permission.toString());
173             sb.append("\n");
174         }
175         return sb.toString();
176     }
177
178     /**
179      *
180      * @return permissions number owned by this JgPermissionCollection.
181      */

182     public int size(){
183         return permissions.size();
184     }
185
186     /**
187      * @return Returns the permissions.
188      */

189     public Set JavaDoc getPermissions() {
190         return permissions;
191     }
192
193     /**
194      *
195      * @param permission
196      * @return
197      */

198     public boolean containsPermission(Permission JavaDoc permission) {
199          return permissions.contains(permission);
200     }
201
202     /**
203      * @param perms The permissions to set.
204      */

205     public void setPermissions(Set JavaDoc perms) {
206     
207         this.permissions = perms;
208     }
209     
210 }
211
Popular Tags