You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/05/14 08:27:59 UTC

[48/50] [abbrv] git commit: Uses checker instead set of patterns to check if param is excluded

Uses checker instead set of patterns to check if param is excluded


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/5ec47b1e
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/5ec47b1e
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/5ec47b1e

Branch: refs/heads/feature/exclude-object-class
Commit: 5ec47b1e6df6c59ff3fa466d20f28fda46b60254
Parents: 3d77c34
Author: Lukasz Lenart <lu...@apache.org>
Authored: Wed May 14 08:25:50 2014 +0200
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Wed May 14 08:25:50 2014 +0200

----------------------------------------------------------------------
 .../interceptor/ParametersInterceptor.java      | 43 +++++++-------------
 .../interceptor/ParametersInterceptorTest.java  |  4 +-
 2 files changed, 16 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/5ec47b1e/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
index 6de6aad..460aae2 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
@@ -17,6 +17,7 @@ package com.opensymphony.xwork2.interceptor;
 
 import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.ExcludedPatternsChecker;
 import com.opensymphony.xwork2.ValidationAware;
 import com.opensymphony.xwork2.XWorkConstants;
 import com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler;
@@ -143,12 +144,13 @@ public class ParametersInterceptor extends MethodFilterInterceptor {
 
     protected static final int PARAM_NAME_MAX_LENGTH = 100;
 
+    private ExcludedPatternsChecker excludedPatterns;
+
     private int paramNameMaxLength = PARAM_NAME_MAX_LENGTH;
     private boolean devMode = false;
 
     protected boolean ordered = false;
 
-    protected Set<Pattern> excludeParams = Collections.emptySet();
     protected Set<Pattern> acceptParams = Collections.emptySet();
 
     private ValueStackFactory valueStackFactory;
@@ -163,7 +165,12 @@ public class ParametersInterceptor extends MethodFilterInterceptor {
         devMode = "true".equalsIgnoreCase(mode);
     }
 
-	/**
+    @Inject
+    public void setExcludedPatterns(ExcludedPatternsChecker excludedPatterns) {
+        this.excludedPatterns = excludedPatterns;
+    }
+
+    /**
 	 * Sets a comma-delimited list of regular expressions to match
 	 * parameters that are allowed in the parameter map (aka whitelist).
 	 * <p/>
@@ -306,7 +313,7 @@ public class ParametersInterceptor extends MethodFilterInterceptor {
             //see WW-2761 for more details
             MemberAccessValueStack accessValueStack = (MemberAccessValueStack) newStack;
             accessValueStack.setAcceptProperties(acceptParams);
-            accessValueStack.setExcludeProperties(excludeParams);
+            accessValueStack.setExcludeProperties(excludedPatterns.getExcludedPatterns());
         }
 
         for (Map.Entry<String, Object> entry : acceptableParameters.entrySet()) {
@@ -426,14 +433,10 @@ public class ParametersInterceptor extends MethodFilterInterceptor {
     }
 
     protected boolean isExcluded(String paramName) {
-        if (!this.excludeParams.isEmpty()) {
-            for (Pattern pattern : excludeParams) {
-                Matcher matcher = pattern.matcher(paramName);
-                if (matcher.matches()) {
-                    notifyDeveloper("Parameter [#0] is on the excludeParams list of patterns!", paramName);
-                    return true;
-                }
-            }
+        ExcludedPatternsChecker.IsExcluded result = excludedPatterns.isExcluded(paramName);
+        if (result.isExcluded()) {
+            notifyDeveloper("Parameter [#0] is on the excludeParams list of patterns!", paramName);
+            return true;
         }
         return false;
     }
@@ -467,29 +470,13 @@ public class ParametersInterceptor extends MethodFilterInterceptor {
     }
 
     /**
-     * Gets a set of regular expressions of parameters to remove
-     * from the parameter map
-     *
-     * @return A set of compiled regular expression patterns
-     */
-    protected Set getExcludeParamsSet() {
-        return excludeParams;
-    }
-
-    /**
      * Sets a comma-delimited list of regular expressions to match
      * parameters that should be removed from the parameter map.
      *
      * @param commaDelim A comma-delimited list of regular expressions
      */
     public void setExcludeParams(String commaDelim) {
-        Collection<String> excludePatterns = ArrayUtils.asCollection(commaDelim);
-        if (excludePatterns != null) {
-            excludeParams = new HashSet<Pattern>();
-            for (String pattern : excludePatterns) {
-                excludeParams.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
-            }
-        }
+        excludedPatterns.addExcludedPatterns(commaDelim);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/struts/blob/5ec47b1e/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java
index a2aa92b..156c012 100644
--- a/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java
+++ b/xwork-core/src/test/java/com/opensymphony/xwork2/interceptor/ParametersInterceptorTest.java
@@ -145,7 +145,6 @@ public class ParametersInterceptorTest extends XWorkTestCase {
 
         };
 
-        pi.setExcludeParams("(.*\\.|^)class\\..*");
         container.inject(pi);
         ValueStack vs = ActionContext.getContext().getValueStack();
 
@@ -165,7 +164,7 @@ public class ParametersInterceptorTest extends XWorkTestCase {
         final String pollution2 = "model.class.classLoader.jarPath";
         final String pollution3 = "class.classLoader.defaultAssertionStatus";
 
-        loadConfigurationProviders(new XWorkConfigurationProvider(), new XmlConfigurationProvider("xwork-param-test.xml"));
+        loadConfigurationProviders(new XWorkConfigurationProvider(), new XmlConfigurationProvider("xwork-class-param-test.xml"));
         final Map<String, Object> params = new HashMap<String, Object>() {
             {
                 put(pollution1, "bad");
@@ -308,7 +307,6 @@ public class ParametersInterceptorTest extends XWorkTestCase {
 
         };
 
-        pi.setExcludeParams("(.*\\.|^|.*|\\[('|\"))class(\\.|('|\")]|\\[).*");
         container.inject(pi);
         ValueStack vs = ActionContext.getContext().getValueStack();