Browse Source

Pulled methods and fields up into AbstractFilterInvocationDefinitionSource to make it easier to query the map size etc, regardless of the specific type.

2.0.x
Luke Taylor 18 years ago
parent
commit
4f3bbb52f6
  1. 23
      core/src/main/java/org/springframework/security/intercept/web/AbstractFilterInvocationDefinitionSource.java
  2. 26
      core/src/main/java/org/springframework/security/intercept/web/PathBasedFilterInvocationDefinitionMap.java
  3. 27
      core/src/main/java/org/springframework/security/intercept/web/RegExpBasedFilterInvocationDefinitionMap.java

23
core/src/main/java/org/springframework/security/intercept/web/AbstractFilterInvocationDefinitionSource.java

@ -17,6 +17,9 @@ package org.springframework.security.intercept.web; @@ -17,6 +17,9 @@ package org.springframework.security.intercept.web;
import org.springframework.security.ConfigAttributeDefinition;
import java.util.List;
import java.util.Vector;
/**
* Abstract implementation of <Code>FilterInvocationDefinitionSource</code>.
@ -26,6 +29,10 @@ import org.springframework.security.ConfigAttributeDefinition; @@ -26,6 +29,10 @@ import org.springframework.security.ConfigAttributeDefinition;
*/
public abstract class AbstractFilterInvocationDefinitionSource implements FilterInvocationDefinitionSource {
protected List requestMap = new Vector();
private boolean convertUrlToLowercaseBeforeComparison = false;
//~ Methods ========================================================================================================
public ConfigAttributeDefinition getAttributes(Object object)
@ -58,4 +65,20 @@ public abstract class AbstractFilterInvocationDefinitionSource implements Filter @@ -58,4 +65,20 @@ public abstract class AbstractFilterInvocationDefinitionSource implements Filter
public boolean supports(Class clazz) {
return FilterInvocation.class.isAssignableFrom(clazz);
}
public int getMapSize() {
return this.requestMap.size();
}
public boolean isConvertUrlToLowercaseBeforeComparison() {
return convertUrlToLowercaseBeforeComparison;
}
public void setConvertUrlToLowercaseBeforeComparison(boolean convertUrlToLowercaseBeforeComparison) {
this.convertUrlToLowercaseBeforeComparison = convertUrlToLowercaseBeforeComparison;
}
List getRequestMap() {
return requestMap;
}
}

26
core/src/main/java/org/springframework/security/intercept/web/PathBasedFilterInvocationDefinitionMap.java

@ -49,22 +49,18 @@ public class PathBasedFilterInvocationDefinitionMap extends AbstractFilterInvoca @@ -49,22 +49,18 @@ public class PathBasedFilterInvocationDefinitionMap extends AbstractFilterInvoca
private static final Log logger = LogFactory.getLog(PathBasedFilterInvocationDefinitionMap.class);
//~ Instance fields ================================================================================================
private List requestMap = new Vector();
private PathMatcher pathMatcher = new AntPathMatcher();
private boolean convertUrlToLowercaseBeforeComparison = false;
//~ Methods ========================================================================================================
public void addSecureUrl(String antPath, ConfigAttributeDefinition attr) {
// SEC-501: If using lower case comparison, we should convert the paths to lower case
// as any upper case characters included by mistake will prevent the URL from ever being matched.
if (convertUrlToLowercaseBeforeComparison) {
if (isConvertUrlToLowercaseBeforeComparison()) {
antPath = antPath.toLowerCase();
}
requestMap.add(new EntryHolder(antPath, attr));
getRequestMap().add(new EntryHolder(antPath, attr));
if (logger.isDebugEnabled()) {
logger.debug("Added Ant path: " + antPath + "; attributes: " + attr);
@ -73,7 +69,7 @@ public class PathBasedFilterInvocationDefinitionMap extends AbstractFilterInvoca @@ -73,7 +69,7 @@ public class PathBasedFilterInvocationDefinitionMap extends AbstractFilterInvoca
public Iterator getConfigAttributeDefinitions() {
Set set = new HashSet();
Iterator iter = requestMap.iterator();
Iterator iter = getRequestMap().iterator();
while (iter.hasNext()) {
EntryHolder entryHolder = (EntryHolder) iter.next();
@ -83,14 +79,6 @@ public class PathBasedFilterInvocationDefinitionMap extends AbstractFilterInvoca @@ -83,14 +79,6 @@ public class PathBasedFilterInvocationDefinitionMap extends AbstractFilterInvoca
return set.iterator();
}
public int getMapSize() {
return this.requestMap.size();
}
public boolean isConvertUrlToLowercaseBeforeComparison() {
return convertUrlToLowercaseBeforeComparison;
}
public ConfigAttributeDefinition lookupAttributes(String url) {
// Strip anything after a question mark symbol, as per SEC-161. See also SEC-321
int firstQuestionMarkIndex = url.indexOf("?");
@ -127,14 +115,6 @@ public class PathBasedFilterInvocationDefinitionMap extends AbstractFilterInvoca @@ -127,14 +115,6 @@ public class PathBasedFilterInvocationDefinitionMap extends AbstractFilterInvoca
return null;
}
public void setConvertUrlToLowercaseBeforeComparison(boolean convertUrlToLowercaseBeforeComparison) {
this.convertUrlToLowercaseBeforeComparison = convertUrlToLowercaseBeforeComparison;
}
List getRequestMap() {
return requestMap;
}
//~ Inner Classes ==================================================================================================
protected class EntryHolder {

27
core/src/main/java/org/springframework/security/intercept/web/RegExpBasedFilterInvocationDefinitionMap.java

@ -46,17 +46,12 @@ public class RegExpBasedFilterInvocationDefinitionMap extends AbstractFilterInvo @@ -46,17 +46,12 @@ public class RegExpBasedFilterInvocationDefinitionMap extends AbstractFilterInvo
private static final Log logger = LogFactory.getLog(RegExpBasedFilterInvocationDefinitionMap.class);
//~ Instance fields ================================================================================================
private List requestMap = new Vector();
private boolean convertUrlToLowercaseBeforeComparison = false;
//~ Methods ========================================================================================================
public void addSecureUrl(String regExp, ConfigAttributeDefinition attr) {
Pattern pattern = Pattern.compile(regExp);
requestMap.add(new EntryHolder(pattern, attr));
getRequestMap().add(new EntryHolder(pattern, attr));
if (logger.isDebugEnabled()) {
logger.debug("Added regular expression: " + regExp + "; attributes: " + attr);
@ -65,7 +60,7 @@ public class RegExpBasedFilterInvocationDefinitionMap extends AbstractFilterInvo @@ -65,7 +60,7 @@ public class RegExpBasedFilterInvocationDefinitionMap extends AbstractFilterInvo
public Iterator getConfigAttributeDefinitions() {
Set set = new HashSet();
Iterator iter = requestMap.iterator();
Iterator iter = getRequestMap().iterator();
while (iter.hasNext()) {
EntryHolder entryHolder = (EntryHolder) iter.next();
@ -75,16 +70,8 @@ public class RegExpBasedFilterInvocationDefinitionMap extends AbstractFilterInvo @@ -75,16 +70,8 @@ public class RegExpBasedFilterInvocationDefinitionMap extends AbstractFilterInvo
return set.iterator();
}
public int getMapSize() {
return this.requestMap.size();
}
public boolean isConvertUrlToLowercaseBeforeComparison() {
return convertUrlToLowercaseBeforeComparison;
}
public ConfigAttributeDefinition lookupAttributes(String url) {
Iterator iter = requestMap.iterator();
Iterator iter = getRequestMap().iterator();
if (isConvertUrlToLowercaseBeforeComparison()) {
url = url.toLowerCase();
@ -114,14 +101,6 @@ public class RegExpBasedFilterInvocationDefinitionMap extends AbstractFilterInvo @@ -114,14 +101,6 @@ public class RegExpBasedFilterInvocationDefinitionMap extends AbstractFilterInvo
return null;
}
public void setConvertUrlToLowercaseBeforeComparison(boolean convertUrlToLowercaseBeforeComparison) {
this.convertUrlToLowercaseBeforeComparison = convertUrlToLowercaseBeforeComparison;
}
List getRequestMap() {
return requestMap;
}
//~ Inner Classes ==================================================================================================
protected class EntryHolder {

Loading…
Cancel
Save