Author: lukaszlenart
Date: Tue May 28 20:14:15 2013
New Revision: 1487092

URL: http://svn.apache.org/r1487092
Log:
WW-4083 Extends support of ParametersNameAware to pass the same behaviour to 
OgnlValueStack

Added:
    
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/PropertiesJudge.java
Modified:
    
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
    
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
    
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
    
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/MemberAccessValueStack.java

Modified: 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java?rev=1487092&r1=1487091&r2=1487092&view=diff
==============================================================================
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
 (original)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java
 Tue May 28 20:14:15 2013
@@ -22,23 +22,13 @@ import com.opensymphony.xwork2.XWorkCons
 import com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler;
 import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.ArrayUtils;
-import com.opensymphony.xwork2.util.ClearableValueStack;
-import com.opensymphony.xwork2.util.LocalizedTextUtil;
-import com.opensymphony.xwork2.util.MemberAccessValueStack;
-import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.ValueStackFactory;
+import com.opensymphony.xwork2.ognl.PropertiesJudge;
+import com.opensymphony.xwork2.util.*;
 import com.opensymphony.xwork2.util.logging.Logger;
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
+import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -272,7 +262,7 @@ public class ParametersInterceptor exten
     protected void addParametersToContext(ActionContext ac, Map<String, 
Object> newParams) {
     }
 
-    protected void setParameters(Object action, ValueStack stack, final 
Map<String, Object> parameters) {
+    protected void setParameters(final Object action, ValueStack stack, final 
Map<String, Object> parameters) {
         Map<String, Object> params;
         Map<String, Object> acceptableParameters;
         if (ordered) {
@@ -313,6 +303,12 @@ public class ParametersInterceptor exten
             MemberAccessValueStack accessValueStack = (MemberAccessValueStack) 
newStack;
             accessValueStack.setAcceptProperties(acceptParams);
             accessValueStack.setExcludeProperties(excludeParams);
+            if (action instanceof ParameterNameAware)
+            accessValueStack.setPropertiesJudge(new PropertiesJudge() {
+                public boolean acceptProperty(String propertyName) {
+                    return ((ParameterNameAware) 
action).acceptableParameterName(propertyName);
+                }
+            });
         }
 
         for (Map.Entry<String, Object> entry : 
acceptableParameters.entrySet()) {

Modified: 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java?rev=1487092&r1=1487091&r2=1487092&view=diff
==============================================================================
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
 (original)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
 Tue May 28 20:14:15 2013
@@ -31,11 +31,7 @@ import com.opensymphony.xwork2.util.logg
 import com.opensymphony.xwork2.util.logging.LoggerFactory;
 import com.opensymphony.xwork2.util.logging.LoggerUtils;
 import com.opensymphony.xwork2.util.reflection.ReflectionContextState;
-import ognl.NoSuchPropertyException;
-import ognl.Ognl;
-import ognl.OgnlContext;
-import ognl.OgnlException;
-import ognl.PropertyAccessor;
+import ognl.*;
 
 import java.io.Serializable;
 import java.util.HashMap;
@@ -463,6 +459,10 @@ public class OgnlValueStack implements S
         securityMemberAccess.setAcceptProperties(acceptedProperties);
     }
 
+    public void setPropertiesJudge(PropertiesJudge judge) {
+        securityMemberAccess.setPropertiesJudge(judge);
+    }
+
     public void setExcludeProperties(Set<Pattern> excludeProperties) {
         securityMemberAccess.setExcludeProperties(excludeProperties);
     }

Added: 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/PropertiesJudge.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/PropertiesJudge.java?rev=1487092&view=auto
==============================================================================
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/PropertiesJudge.java
 (added)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/PropertiesJudge.java
 Tue May 28 20:14:15 2013
@@ -0,0 +1,7 @@
+package com.opensymphony.xwork2.ognl;
+
+public interface PropertiesJudge {
+
+    boolean acceptProperty(String propertyName);
+
+}

Modified: 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java?rev=1487092&r1=1487091&r2=1487092&view=diff
==============================================================================
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
 (original)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java
 Tue May 28 20:14:15 2013
@@ -33,8 +33,9 @@ import java.util.regex.Pattern;
 public class SecurityMemberAccess extends DefaultMemberAccess {
 
     private final boolean allowStaticMethodAccess;
-    Set<Pattern> excludeProperties = Collections.emptySet();
-    Set<Pattern> acceptProperties = Collections.emptySet();
+    private Set<Pattern> excludeProperties = Collections.emptySet();
+    private Set<Pattern> acceptProperties = Collections.emptySet();
+    private PropertiesJudge propertiesJudge;
 
     public SecurityMemberAccess(boolean method) {
         super(false);
@@ -79,7 +80,7 @@ public class SecurityMemberAccess extend
             return true;
         }
 
-        if (isAccepted(name) && !isExcluded(name)) {
+        if ((isAccepted(name) && !isExcluded(name)) || (propertiesJudge != 
null && propertiesJudge.acceptProperty(name))) {
             return true;
         }
         return false;
@@ -121,4 +122,8 @@ public class SecurityMemberAccess extend
     public void setAcceptProperties(Set<Pattern> acceptedProperties) {
         this.acceptProperties = acceptedProperties;
     }
+
+    public void setPropertiesJudge(PropertiesJudge judge) {
+        this.propertiesJudge = judge;
+    }
 }

Modified: 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/MemberAccessValueStack.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/MemberAccessValueStack.java?rev=1487092&r1=1487091&r2=1487092&view=diff
==============================================================================
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/MemberAccessValueStack.java
 (original)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/util/MemberAccessValueStack.java
 Tue May 28 20:14:15 2013
@@ -1,5 +1,7 @@
 package com.opensymphony.xwork2.util;
 
+import com.opensymphony.xwork2.ognl.PropertiesJudge;
+
 import java.util.Set;
 import java.util.regex.Pattern;
 
@@ -8,7 +10,11 @@ import java.util.regex.Pattern;
  * to properties using regular expressions
  */
 public interface MemberAccessValueStack {
+
     void setExcludeProperties(Set<Pattern> excludeProperties);
 
     void setAcceptProperties(Set<Pattern> acceptedProperties);
+
+    void setPropertiesJudge(PropertiesJudge judge);
+
 }


Reply via email to