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);
+
}