1 package net.sf.jguard.core.authorization.permissions; 2 3 import java.io.Serializable ; 4 import java.util.Arrays ; 5 import java.util.Collection ; 6 import java.util.HashSet ; 7 import java.util.Iterator ; 8 import java.util.List ; 9 import java.util.Set ; 10 11 import org.apache.commons.lang.StringEscapeUtils; 12 13 17 public class URLParameterCollection implements Serializable { 18 19 private static final long serialVersionUID = -6533685803360570616L; 20 21 private Set parameters; 22 23 private boolean impliesMissingKeyParameters; 24 25 public URLParameterCollection() { 26 parameters = new HashSet (); 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 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 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 72 protected static URLParameterCollection getURLParameters(String strParams) { 73 74 URLParameterCollection parametersCollection = new URLParameterCollection(); 75 strParams = StringEscapeUtils.unescapeHtml(strParams); 76 if (strParams != null && strParams != "") { 77 List tokens = Arrays.asList(strParams.split("&")); 78 Iterator itTokens = tokens.iterator(); 79 while (itTokens.hasNext()) { 80 String token = (String ) itTokens.next(); 81 String [] parts = token.split("="); 82 if (parts.length == 2) { 83 URLParameter param = new URLParameter(); 84 param.setKey(URLPermission.buildRegexpFromString(parts[0])); 85 String [] 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 getParameters() { 105 return parameters; 106 } 107 } 108 | Popular Tags |