KickJava   Java API By Example, From Geeks To Geeks.

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


1 package net.sf.jguard.core.authorization.permissions;
2
3 import java.io.Serializable JavaDoc;
4 import java.util.Arrays JavaDoc;
5 import java.util.Collection JavaDoc;
6 import java.util.HashSet JavaDoc;
7 import java.util.Iterator JavaDoc;
8 import java.util.List JavaDoc;
9 import java.util.Set JavaDoc;
10
11 import org.apache.commons.lang.StringEscapeUtils;
12
13 /**
14  * Used to resolve URLPermission with parameters
15  * @author <a HREF="mailto:vberetti@users.sourceforge.net">Vincent Beretti</a>
16  */

17 public class URLParameterCollection implements Serializable JavaDoc{
18
19     private static final long serialVersionUID = -6533685803360570616L;
20
21     private Set JavaDoc parameters;
22
23     private boolean impliesMissingKeyParameters;
24
25     public URLParameterCollection() {
26         parameters = new HashSet JavaDoc();
27         impliesMissingKeyParameters = false;
28     }
29
30     public void add(URLParameter parameter) {
31         parameters.add(parameter);
32     }
33
34     public boolean implies(URLParameter impliedParameter) {
35         Iterator JavaDoc itParameter = parameters.iterator();
36         while (itParameter.hasNext()) {
37             URLParameter parameter = (URLParameter) itParameter.next();
38             if (parameter.impliesKey(impliedParameter.getKey())) {
39                 if (parameter.impliesValues(impliedParameter.getValue())) {
40                     return true;
41                 }else{
42                     return false;
43                 }
44             }
45         }
46         // impliedParameter has not been implied for key
47
if(!impliesMissingKeyParameters){
48             return false;
49         }
50         return true;
51     }
52
53     public boolean getImpliesMissingKeyParameters() {
54         return impliesMissingKeyParameters;
55     }
56
57     public void setImpliesMissingKeyParameters(
58             boolean impliesMissingKeyParameters) {
59         this.impliesMissingKeyParameters = impliesMissingKeyParameters;
60     }
61
62     public boolean isEmpty(){
63         return parameters.isEmpty();
64     }
65
66     /**
67      * from an URI and a Permission associated
68      *
69      * @param strParams
70      * @return
71      */

72     protected static URLParameterCollection getURLParameters(String JavaDoc strParams) {
73
74         URLParameterCollection parametersCollection = new URLParameterCollection();
75         strParams = StringEscapeUtils.unescapeHtml(strParams);
76         if (strParams != null && strParams != "") {
77             List JavaDoc tokens = Arrays.asList(strParams.split("&"));
78             Iterator JavaDoc itTokens = tokens.iterator();
79             while (itTokens.hasNext()) {
80                 String JavaDoc token = (String JavaDoc) itTokens.next();
81                 String JavaDoc[] parts = token.split("=");
82                 if (parts.length == 2) {
83                     URLParameter param = new URLParameter();
84                     param.setKey(URLPermission.buildRegexpFromString(parts[0]));
85                     String JavaDoc[] values = parts[1].split(";");
86                     for (int i=0; i<values.length; i++){
87                         values[i]=URLPermission.buildRegexpFromString(values[i]);
88                     }
89                     param.setValue(values);
90                     parametersCollection.add(param);
91                 }else if(parts.length == 1 && "*".equals(parts[0])){
92                     parametersCollection.setImpliesMissingKeyParameters(true);
93                 }
94             }
95
96         }
97         return parametersCollection;
98     }
99
100     public int size() {
101         return parameters.size();
102     }
103
104     public Collection JavaDoc getParameters() {
105         return parameters;
106     }
107 }
108
Popular Tags