This is an automated email from the ASF dual-hosted git repository.
lukaszlenart pushed a commit to branch struts-2-5-x
in repository https://gitbox.apache.org/repos/asf/struts.git
The following commit(s) were added to refs/heads/struts-2-5-x by this push:
new bad9a49 Fixes how dependencies are injected into constructor
bad9a49 is described below
commit bad9a49060b5d9ddb03f2700cbdeeea5cf51e125
Author: Lukasz Lenart <lukaszlenart@apache.org>
AuthorDate: Wed Jun 27 08:15:21 2018 +0200
Fixes how dependencies are injected into constructor
---
.../com/opensymphony/xwork2/ognl/OgnlUtil.java | 49 ++++++++++------------
core/src/main/resources/struts-default.xml | 1 -
.../com/opensymphony/xwork2/ognl/OgnlUtilTest.java | 10 ++---
3 files changed, 28 insertions(+), 32 deletions(-)
diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
index ad4f9d5..024371b 100644
--- a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
+++ b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java
@@ -70,26 +70,10 @@ public class OgnlUtil {
private boolean allowStaticMethodAccess;
private boolean disallowProxyMemberAccess;
- public OgnlUtil(
- @Inject(value = XWorkConstants.OGNL_EXCLUDED_CLASSES, required = false)
- String commaDelimitedClasses,
- @Inject(value = XWorkConstants.OGNL_EXCLUDED_PACKAGE_NAME_PATTERNS, required = false)
- String commaDelimitedPackagePatterns,
- @Inject(value = XWorkConstants.OGNL_EXCLUDED_PACKAGE_NAMES, required = false)
- String commaDelimitedPackageNames
- ) {
- excludedClasses = Collections.unmodifiableSet(parseExcludedClasses(commaDelimitedClasses));
- excludedPackageNamePatterns = Collections.unmodifiableSet(parseExcludedPackageNamePatterns(commaDelimitedPackagePatterns));
- excludedPackageNames = Collections.unmodifiableSet(parseExcludedPackageNames(commaDelimitedPackageNames));
- }
-
- /**
- * Constructor used by internal DI
- */
public OgnlUtil() {
- excludedClasses = Collections.emptySet();
- excludedPackageNamePatterns = Collections.emptySet();
- excludedPackageNames = Collections.emptySet();
+ excludedClasses = new HashSet<>();
+ excludedPackageNamePatterns = new HashSet<>();
+ excludedPackageNames = new HashSet<>();
}
@Inject
@@ -116,6 +100,13 @@ public class OgnlUtil {
}
}
+ @Inject(value = XWorkConstants.OGNL_EXCLUDED_CLASSES, required = false)
+ public void setExcludedClasses(String commaDelimitedClasses) {
+ Set<Class<?>> excludedClasses = this.excludedClasses;
+ excludedClasses.addAll(parseExcludedClasses(commaDelimitedClasses));
+ this.excludedClasses = Collections.unmodifiableSet(excludedClasses);
+ }
+
private Set<Class<?>> parseExcludedClasses(String commaDelimitedClasses)
{
Set<String> classNames = TextParseUtil.commaDelimitedStringToSet(commaDelimitedClasses);
Set<Class<?>> classes = new HashSet<>();
@@ -131,6 +122,12 @@ public class OgnlUtil {
return classes;
}
+ @Inject(value = XWorkConstants.OGNL_EXCLUDED_PACKAGE_NAME_PATTERNS, required = false)
+ public void setExcludedPackageNamePatterns(String commaDelimitedPackagePatterns) {
+ Set<Pattern> excludedPackageNamePatterns = this.excludedPackageNamePatterns;
+ excludedPackageNamePatterns.addAll(parseExcludedPackageNamePatterns(commaDelimitedPackagePatterns));
+ this.excludedPackageNamePatterns = Collections.unmodifiableSet(excludedPackageNamePatterns);
+ }
private Set<Pattern> parseExcludedPackageNamePatterns(String commaDelimitedPackagePatterns)
{
Set<String> packagePatterns = TextParseUtil.commaDelimitedStringToSet(commaDelimitedPackagePatterns);
@@ -143,6 +140,13 @@ public class OgnlUtil {
return packageNamePatterns;
}
+ @Inject(value = XWorkConstants.OGNL_EXCLUDED_PACKAGE_NAMES, required = false)
+ public void setExcludedPackageNames(String commaDelimitedPackageNames) {
+ Set<String> excludedPackageNames = this.excludedPackageNames;
+ excludedPackageNames.addAll(parseExcludedPackageNames(commaDelimitedPackageNames));
+ this.excludedPackageNames = Collections.unmodifiableSet(excludedPackageNames);
+ }
+
private Set<String> parseExcludedPackageNames(String commaDelimitedPackageNames)
{
return TextParseUtil.commaDelimitedStringToSet(commaDelimitedPackageNames);
}
@@ -718,13 +722,6 @@ public class OgnlUtil {
return Ognl.createDefaultContext(root, resolver, defaultConverter, memberAccess);
}
- protected void addExcludedClasses(String commaDelimitedClasses) {
- Set<Class<?>> existingClasses = new HashSet<>(excludedClasses);
- existingClasses.addAll(parseExcludedClasses(commaDelimitedClasses));
-
- excludedClasses = Collections.unmodifiableSet(existingClasses);
- }
-
private interface OgnlTask<T> {
T execute(Object tree) throws OgnlException;
}
diff --git a/core/src/main/resources/struts-default.xml b/core/src/main/resources/struts-default.xml
index 9d72390..fda6cfb 100644
--- a/core/src/main/resources/struts-default.xml
+++ b/core/src/main/resources/struts-default.xml
@@ -59,7 +59,6 @@
freemarker.core.,
freemarker.template.,
freemarker.ext.rhino.,
- freemarker.ext.beans.,
sun.reflect.,
javassist.,
com.opensymphony.xwork2.ognl.,
diff --git a/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java b/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java
index a9af6e2..ca11433 100644
--- a/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java
+++ b/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java
@@ -653,7 +653,7 @@ public class OgnlUtilTest extends XWorkTestCase {
Exception expected = null;
try {
- ognlUtil.addExcludedClasses(Object.class.getName());
+ ognlUtil.setExcludedClasses(Object.class.getName());
ognlUtil.setValue("class.classLoader.defaultAssertionStatus", ognlUtil.createDefaultContext(foo),
foo, true);
fail();
} catch (OgnlException e) {
@@ -669,7 +669,7 @@ public class OgnlUtilTest extends XWorkTestCase {
Exception expected = null;
try {
- ognlUtil.addExcludedClasses(Object.class.getName());
+ ognlUtil.setExcludedClasses(Object.class.getName());
ognlUtil.setValue("Class.ClassLoader.DefaultAssertionStatus", ognlUtil.createDefaultContext(foo),
foo, true);
fail();
} catch (OgnlException e) {
@@ -685,7 +685,7 @@ public class OgnlUtilTest extends XWorkTestCase {
Exception expected = null;
try {
- ognlUtil.addExcludedClasses(Object.class.getName());
+ ognlUtil.setExcludedClasses(Object.class.getName());
ognlUtil.setValue("class['classLoader']['defaultAssertionStatus']", ognlUtil.createDefaultContext(foo),
foo, true);
fail();
} catch (OgnlException e) {
@@ -716,7 +716,7 @@ public class OgnlUtilTest extends XWorkTestCase {
Exception expected = null;
try {
- ognlUtil.addExcludedClasses(Object.class.getName());
+ ognlUtil.setExcludedClasses(Object.class.getName());
ognlUtil.setValue("class[\"classLoader\"]['defaultAssertionStatus']", ognlUtil.createDefaultContext(foo),
foo, true);
fail();
} catch (OgnlException e) {
@@ -762,7 +762,7 @@ public class OgnlUtilTest extends XWorkTestCase {
Exception expected = null;
try {
- ognlUtil.addExcludedClasses(Runtime.class.getName());
+ ognlUtil.setExcludedClasses(Runtime.class.getName());
ognlUtil.setValue("@java.lang.Runtime@getRuntime().exec('mate')", ognlUtil.createDefaultContext(foo),
foo, true);
fail();
} catch (OgnlException e) {
|