From ce4f192676aeb433f8aa020977b62cda0fedf27b Mon Sep 17 00:00:00 2001 From: Yasser Zamani Date: Sun, 24 Feb 2019 17:53:45 +0330 Subject: [PATCH] add properties support to XWorkTestCase.loadButAdd also includes cleanups for PRs #292 and #320 (cherry picked from commit a15c12a) --- .../opensymphony/xwork2/XWorkTestCase.java | 23 +++-- .../xwork2/ognl/OgnlUtilTest.java | 76 +++++----------- .../xwork2/ognl/OgnlValueStackTest.java | 33 ------- .../xwork-test-allowstatic-devmode-false.xml | 86 ------------------ .../xwork-test-allowstatic-devmode-true.xml | 86 ------------------ .../providers/xwork-test-allowstatic-true.xml | 86 ------------------ .../providers/xwork-test-devmode-true.xml | 86 ------------------ .../xwork-test-staticfield-false.xml | 87 ------------------- .../providers/xwork-test-staticfield-true.xml | 87 ------------------- 9 files changed, 34 insertions(+), 616 deletions(-) delete mode 100644 core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-false.xml delete mode 100644 core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-true.xml delete mode 100644 core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-true.xml delete mode 100644 core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-devmode-true.xml delete mode 100644 core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-staticfield-false.xml delete mode 100644 core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-staticfield-true.xml diff --git a/core/src/main/java/com/opensymphony/xwork2/XWorkTestCase.java b/core/src/main/java/com/opensymphony/xwork2/XWorkTestCase.java index 21442dabc7..bc6b0a8e5e 100644 --- a/core/src/main/java/com/opensymphony/xwork2/XWorkTestCase.java +++ b/core/src/main/java/com/opensymphony/xwork2/XWorkTestCase.java @@ -27,6 +27,7 @@ import com.opensymphony.xwork2.util.XWorkTestCaseHelper; import com.opensymphony.xwork2.util.location.LocatableProperties; import junit.framework.TestCase; +import org.apache.commons.lang3.ClassUtils; /** * Base JUnit TestCase to extend for XWork specific JUnit tests. Uses @@ -78,16 +79,20 @@ protected void loadButAdd(final Class type, final String name, final Object i @Override public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException { - builder.factory(type, name, new Factory() { - public Object create(Context context) throws Exception { - return impl; - } + if (impl instanceof String || ClassUtils.isPrimitiveOrWrapper(impl.getClass())) { + props.setProperty(name, "" + impl); + } else { + builder.factory(type, name, new Factory() { + public Object create(Context context) throws Exception { + return impl; + } - @Override - public Class type() { - return impl.getClass(); - } - }, Scope.SINGLETON); + @Override + public Class type() { + return impl.getClass(); + } + }, Scope.SINGLETON); + } } }); } 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 81308f0f1d..c226bb82db 100644 --- a/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java @@ -19,19 +19,19 @@ package com.opensymphony.xwork2.ognl; import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.XWorkException; import com.opensymphony.xwork2.XWorkTestCase; -import com.opensymphony.xwork2.config.ConfigurationManager; -import com.opensymphony.xwork2.config.ConfigurationProvider; -import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider; +import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.conversion.impl.XWorkConverter; -import com.opensymphony.xwork2.inject.Container; +import com.opensymphony.xwork2.inject.ContainerBuilder; import com.opensymphony.xwork2.interceptor.ChainingInterceptor; +import com.opensymphony.xwork2.test.StubConfigurationProvider; import com.opensymphony.xwork2.test.User; import com.opensymphony.xwork2.util.*; +import com.opensymphony.xwork2.util.location.LocatableProperties; import com.opensymphony.xwork2.util.reflection.ReflectionContextState; import ognl.*; +import org.apache.struts2.StrutsConstants; import java.lang.reflect.Method; import java.text.DateFormat; @@ -1312,61 +1312,25 @@ public void testGetExcludedPackageNamePatterns() { } private void reloadTestContainerConfiguration(boolean devMode, boolean allowStaticMethod) throws Exception { - super.tearDown(); - - ConfigurationProvider configurationProvider; - if (devMode == true && allowStaticMethod == true) { - configurationProvider = new XmlConfigurationProvider("com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-true.xml", true); - } - else if (devMode == true && allowStaticMethod == false) { - configurationProvider = new XmlConfigurationProvider("com/opensymphony/xwork2/config/providers/xwork-test-devmode-true.xml", true); - } - else if (devMode == false && allowStaticMethod == true) { - configurationProvider = new XmlConfigurationProvider("com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-true.xml", true); - } - else { // devMode, allowStatic both false - configurationProvider = new XmlConfigurationProvider("com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-false.xml", true); - } - - configurationManager = new ConfigurationManager(Container.DEFAULT_NAME); - configurationManager.addContainerProvider(configurationProvider); - configuration = configurationManager.getConfiguration(); - container = configuration.getContainer(); - container.inject(configurationProvider); - configurationProvider.init(configuration); - actionProxyFactory = container.getInstance(ActionProxyFactory.class); - - // Reset the value stack - ValueStack stack = container.getInstance(ValueStackFactory.class).createValueStack(); - stack.getContext().put(ActionContext.CONTAINER, container); - ActionContext.setContext(new ActionContext(stack.getContext())); - + loadConfigurationProviders(new StubConfigurationProvider() { + @Override + public void register(ContainerBuilder builder, + LocatableProperties props) throws ConfigurationException { + props.setProperty(StrutsConstants.STRUTS_DEVMODE, "" + devMode); + props.setProperty(StrutsConstants.STRUTS_ALLOW_STATIC_METHOD_ACCESS, "" + allowStaticMethod); + } + }); ognlUtil = container.getInstance(OgnlUtil.class); } private void reloadTestContainerConfiguration(boolean allowStaticField) throws Exception { - super.tearDown(); - - ConfigurationProvider configurationProvider; - if (allowStaticField) { - configurationProvider = new XmlConfigurationProvider("com/opensymphony/xwork2/config/providers/xwork-test-staticfield-true.xml", true); - } else { - configurationProvider = new XmlConfigurationProvider("com/opensymphony/xwork2/config/providers/xwork-test-staticfield-false.xml", true); - } - - configurationManager = new ConfigurationManager(Container.DEFAULT_NAME); - configurationManager.addContainerProvider(configurationProvider); - configuration = configurationManager.getConfiguration(); - container = configuration.getContainer(); - container.inject(configurationProvider); - configurationProvider.init(configuration); - actionProxyFactory = container.getInstance(ActionProxyFactory.class); - - // Reset the value stack - ValueStack stack = container.getInstance(ValueStackFactory.class).createValueStack(); - stack.getContext().put(ActionContext.CONTAINER, container); - ActionContext.setContext(new ActionContext(stack.getContext())); - + loadConfigurationProviders(new StubConfigurationProvider() { + @Override + public void register(ContainerBuilder builder, + LocatableProperties props) throws ConfigurationException { + props.setProperty(StrutsConstants.STRUTS_ALLOW_STATIC_FIELD_ACCESS, "" + allowStaticField); + } + }); ognlUtil = container.getInstance(OgnlUtil.class); } diff --git a/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java b/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java index c7fd3686fc..9209e73bf9 100644 --- a/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlValueStackTest.java @@ -980,39 +980,6 @@ public void testWarnAboutInvalidProperties() { assertEquals(null, stack.findValue("address.country.name", String.class)); } - private void reloadTestContainerConfiguration(boolean devMode, boolean allowStatic) throws Exception { - super.tearDown(); - - ConfigurationProvider configurationProvider; - if (devMode == true && allowStatic == true) { - configurationProvider = new XmlConfigurationProvider("com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-true.xml", true); - } - else if (devMode == true && allowStatic == false) { - configurationProvider = new XmlConfigurationProvider("com/opensymphony/xwork2/config/providers/xwork-test-devmode-true.xml", true); - } - else if (devMode == false && allowStatic == true) { - configurationProvider = new XmlConfigurationProvider("com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-true.xml", true); - } - else { // devMode, allowStatic both false - configurationProvider = new XmlConfigurationProvider("com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-false.xml", true); - } - - configurationManager = new ConfigurationManager(Container.DEFAULT_NAME); - configurationManager.addContainerProvider(configurationProvider); - configuration = configurationManager.getConfiguration(); - container = configuration.getContainer(); - container.inject(configurationProvider); - configurationProvider.init(configuration); - actionProxyFactory = container.getInstance(ActionProxyFactory.class); - - // Reset the value stack - ValueStack stack = container.getInstance(ValueStackFactory.class).createValueStack(); - stack.getContext().put(ActionContext.CONTAINER, container); - ActionContext.setContext(new ActionContext(stack.getContext())); - - ognlUtil = container.getInstance(OgnlUtil.class); - } - class BadJavaBean { private int count; private int count2; diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-false.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-false.xml deleted file mode 100644 index b2779461db..0000000000 --- a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-false.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-true.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-true.xml deleted file mode 100644 index c04dc9eb9d..0000000000 --- a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-devmode-true.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-true.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-true.xml deleted file mode 100644 index 816d65407c..0000000000 --- a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-allowstatic-true.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-devmode-true.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-devmode-true.xml deleted file mode 100644 index 0a2f09d1d6..0000000000 --- a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-devmode-true.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-staticfield-false.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-staticfield-false.xml deleted file mode 100644 index c6aeb4ad5b..0000000000 --- a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-staticfield-false.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-staticfield-true.xml b/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-staticfield-true.xml deleted file mode 100644 index 8cde065376..0000000000 --- a/core/src/test/resources/com/opensymphony/xwork2/config/providers/xwork-test-staticfield-true.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file