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 2011/12/02 17:33:45 UTC
svn commit: r1209569 [39/50] - in /struts/struts2/branches/STRUTS_3_X:
apps/blank/src/main/java/example/ apps/blank/src/test/java/example/
apps/jboss-blank/src/main/java/example/
apps/jboss-blank/src/test/java/example/ apps/mailreader/src/main/java/mai...
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderInterceptorsTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderInterceptorsTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderInterceptorsTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderInterceptorsTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,228 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts2.xwork2.config.providers;
+
+import org.apache.struts2.xwork2.ObjectFactory;
+import org.apache.struts2.xwork2.SimpleAction;
+import org.apache.struts2.xwork2.config.ConfigurationException;
+import org.apache.struts2.xwork2.config.ConfigurationProvider;
+import org.apache.struts2.xwork2.config.RuntimeConfiguration;
+import org.apache.struts2.xwork2.config.entities.InterceptorConfig;
+import org.apache.struts2.xwork2.config.entities.InterceptorStackConfig;
+import org.apache.struts2.xwork2.interceptor.LoggingInterceptor;
+import org.apache.struts2.xwork2.config.entities.ActionConfig;
+import org.apache.struts2.xwork2.config.entities.PackageConfig;
+import org.apache.struts2.xwork2.interceptor.TimerInterceptor;
+import org.apache.struts2.xwork2.mock.MockInterceptor;
+import org.apache.struts2.xwork2.config.entities.InterceptorMapping;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: Mike
+ * Date: May 6, 2003
+ * Time: 3:10:16 PM
+ * To change this template use Options | File Templates.
+ */
+public class XmlConfigurationProviderInterceptorsTest extends ConfigurationTestBase {
+
+ InterceptorConfig loggingInterceptor = new InterceptorConfig.Builder("logging", LoggingInterceptor.class.getName()).build();
+ InterceptorConfig mockInterceptor = new InterceptorConfig.Builder("mock", MockInterceptor.class.getName()).build();
+ InterceptorConfig timerInterceptor = new InterceptorConfig.Builder("timer", TimerInterceptor.class.getName()).build();
+ ObjectFactory objectFactory;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ objectFactory = container.getInstance(ObjectFactory.class);
+ }
+
+
+ public void testBasicInterceptors() throws ConfigurationException {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-interceptors-basic.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+
+ // setup expectations
+ // the test interceptor with a parameter
+ Map<String, String> params = new HashMap<String, String>();
+ params.put("foo", "expectedFoo");
+
+ InterceptorConfig paramsInterceptor = new InterceptorConfig.Builder("test", MockInterceptor.class.getName())
+ .addParams(params).build();
+
+ // the default interceptor stack
+ InterceptorStackConfig defaultStack = new InterceptorStackConfig.Builder("defaultStack")
+ .addInterceptor(new InterceptorMapping("timer", objectFactory.buildInterceptor(timerInterceptor, new HashMap())))
+ .addInterceptor(new InterceptorMapping("test", objectFactory.buildInterceptor(mockInterceptor, params)))
+ .build();
+
+ // the derivative interceptor stack
+ InterceptorStackConfig derivativeStack = new InterceptorStackConfig.Builder("derivativeStack")
+ .addInterceptor(new InterceptorMapping("timer", objectFactory.buildInterceptor(timerInterceptor, new HashMap())))
+ .addInterceptor(new InterceptorMapping("test", objectFactory.buildInterceptor(mockInterceptor, params)))
+ .addInterceptor(new InterceptorMapping("logging", objectFactory.buildInterceptor(loggingInterceptor, new HashMap())))
+ .build();
+
+ // execute the configuration
+ provider.init(configuration);
+ provider.loadPackages();
+
+ PackageConfig pkg = configuration.getPackageConfig("default");
+ Map interceptorConfigs = pkg.getInterceptorConfigs();
+
+ // assertions for size
+ assertEquals(5, interceptorConfigs.size());
+
+ // assertions for interceptors
+ assertEquals(timerInterceptor, interceptorConfigs.get("timer"));
+ assertEquals(loggingInterceptor, interceptorConfigs.get("logging"));
+ assertEquals(paramsInterceptor, interceptorConfigs.get("test"));
+
+ // assertions for interceptor stacks
+ assertEquals(defaultStack, interceptorConfigs.get("defaultStack"));
+ assertEquals(derivativeStack, interceptorConfigs.get("derivativeStack"));
+ }
+
+ public void testInterceptorDefaultRefs() throws ConfigurationException {
+ loadConfigurationProviders(new XmlConfigurationProvider("org/apache/struts2/xwork2/config/providers/xwork-test-interceptor-defaultref.xml"));
+
+ // expectations - the inherited interceptor stack
+ // default package
+ ArrayList<InterceptorMapping> interceptors = new ArrayList<InterceptorMapping>();
+ interceptors.add(new InterceptorMapping("logging", objectFactory.buildInterceptor(loggingInterceptor, new HashMap<String, String>())));
+
+ ActionConfig actionWithOwnRef = new ActionConfig.Builder("", "ActionWithOwnRef", SimpleAction.class.getName())
+ .addInterceptors(interceptors)
+ .build();
+
+ ActionConfig actionWithDefaultRef = new ActionConfig.Builder("", "ActionWithDefaultRef", SimpleAction.class.getName())
+ .addInterceptor(new InterceptorMapping("timer", objectFactory.buildInterceptor(timerInterceptor, new HashMap<String, String>())))
+ .build();
+
+ // sub package
+ // this should inherit
+ ActionConfig actionWithNoRef = new ActionConfig.Builder("", "ActionWithNoRef", SimpleAction.class.getName())
+ .addInterceptor(new InterceptorMapping("timer", objectFactory.buildInterceptor(timerInterceptor, new HashMap<String, String>())))
+ .build();
+
+ interceptors = new ArrayList<InterceptorMapping>();
+ interceptors.add(new InterceptorMapping("logging", objectFactory.buildInterceptor(loggingInterceptor, new HashMap<String, String>())));
+
+ ActionConfig anotherActionWithOwnRef = new ActionConfig.Builder("", "AnotherActionWithOwnRef", SimpleAction.class.getName())
+ .addInterceptor(new InterceptorMapping("logging", objectFactory.buildInterceptor(loggingInterceptor, new HashMap<String, String>())))
+ .build();
+
+ RuntimeConfiguration runtimeConfig = configurationManager.getConfiguration().getRuntimeConfiguration();
+
+ // assertions
+ assertEquals(actionWithOwnRef, runtimeConfig.getActionConfig("", "ActionWithOwnRef"));
+ assertEquals(actionWithDefaultRef, runtimeConfig.getActionConfig("", "ActionWithDefaultRef"));
+
+ assertEquals(actionWithNoRef, runtimeConfig.getActionConfig("", "ActionWithNoRef"));
+ assertEquals(anotherActionWithOwnRef, runtimeConfig.getActionConfig("", "AnotherActionWithOwnRef"));
+ }
+
+ public void testInterceptorInheritance() throws ConfigurationException {
+
+ // expectations - the inherited interceptor stack
+ InterceptorStackConfig inheritedStack = new InterceptorStackConfig.Builder("subDefaultStack")
+ .addInterceptor(new InterceptorMapping("timer", objectFactory.buildInterceptor(timerInterceptor, new HashMap<String, String>())))
+ .build();
+
+ ConfigurationProvider provider = buildConfigurationProvider("org/apache/struts2/xwork2/config/providers/xwork-test-interceptor-inheritance.xml");
+
+ // assertions
+ PackageConfig defaultPkg = configuration.getPackageConfig("default");
+ assertEquals(2, defaultPkg.getInterceptorConfigs().size());
+
+ PackageConfig subPkg = configuration.getPackageConfig("subPackage");
+ assertEquals(1, subPkg.getInterceptorConfigs().size());
+ assertEquals(3, subPkg.getAllInterceptorConfigs().size());
+ assertEquals(inheritedStack, subPkg.getInterceptorConfigs().get("subDefaultStack"));
+
+ // expectations - the inherited interceptor stack
+ inheritedStack = new InterceptorStackConfig.Builder("subSubDefaultStack")
+ .addInterceptor(new InterceptorMapping("timer", objectFactory.buildInterceptor(timerInterceptor, new HashMap<String, String>())))
+ .addInterceptor(new InterceptorMapping("timer", objectFactory.buildInterceptor(timerInterceptor, new HashMap<String, String>())))
+ .build();
+
+ PackageConfig subSubPkg = configuration.getPackageConfig("subSubPackage");
+ assertEquals(1, subSubPkg.getInterceptorConfigs().size());
+ assertEquals(4, subSubPkg.getAllInterceptorConfigs().size());
+ assertEquals(inheritedStack, subSubPkg.getInterceptorConfigs().get("subSubDefaultStack"));
+ }
+
+
+ public void testInterceptorParamOverriding() throws Exception {
+
+ Map<String, String> params = new HashMap<String, String>();
+ params.put("foo", "expectedFoo");
+ params.put("expectedFoo", "expectedFooValue");
+
+ InterceptorStackConfig defaultStack = new InterceptorStackConfig.Builder("defaultStack")
+ .addInterceptor(new InterceptorMapping("timer", objectFactory.buildInterceptor(timerInterceptor, new HashMap<String, String>())))
+ .addInterceptor(new InterceptorMapping("test", objectFactory.buildInterceptor(mockInterceptor, params)))
+ .build();
+
+ ArrayList<InterceptorMapping> interceptors = new ArrayList<InterceptorMapping>();
+ interceptors.addAll(defaultStack.getInterceptors());
+
+ ActionConfig intAction = new ActionConfig.Builder("", "TestInterceptorParam", SimpleAction.class.getName())
+ .addInterceptors(interceptors)
+ .build();
+
+ // TestInterceptorParamOverride action tests that an interceptor with a param override worked
+ HashMap<String, String> interceptorParams = new HashMap<String, String>();
+ interceptorParams.put("expectedFoo", "expectedFooValue2");
+ interceptorParams.put("foo", "foo123");
+
+ InterceptorStackConfig defaultStack2 = new InterceptorStackConfig.Builder("defaultStack")
+ .addInterceptor(new InterceptorMapping("timer", objectFactory.buildInterceptor(timerInterceptor, new HashMap<String, String>())))
+ .addInterceptor(new InterceptorMapping("test", objectFactory.buildInterceptor(mockInterceptor, interceptorParams)))
+ .build();
+
+ interceptors = new ArrayList<InterceptorMapping>();
+
+ interceptors.addAll(defaultStack2.getInterceptors());
+
+ ActionConfig intOverAction = new ActionConfig.Builder("", "TestInterceptorParamOverride", SimpleAction.class.getName())
+ .addInterceptors(interceptors)
+ .build();
+
+ ConfigurationProvider provider = buildConfigurationProvider("org/apache/struts2/xwork2/config/providers/xwork-test-interceptor-params.xml");
+
+
+ PackageConfig pkg = configuration.getPackageConfig("default");
+ Map actionConfigs = pkg.getActionConfigs();
+
+ // assertions
+ assertEquals(2, actionConfigs.size());
+ assertEquals(intAction, actionConfigs.get("TestInterceptorParam"));
+ assertEquals(intOverAction, actionConfigs.get("TestInterceptorParamOverride"));
+
+ ActionConfig ac = (ActionConfig) actionConfigs.get("TestInterceptorParamOverride");
+ assertEquals(defaultStack.getInterceptors(), ac.getInterceptors());
+
+ ActionConfig ac2 = (ActionConfig) actionConfigs.get("TestInterceptorParam");
+ assertEquals(defaultStack2.getInterceptors(), ac2.getInterceptors());
+
+ }
+
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderInvalidFileTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderInvalidFileTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderInvalidFileTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderInvalidFileTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts2.xwork2.config.providers;
+
+import org.apache.struts2.xwork2.config.ConfigurationException;
+import org.apache.struts2.xwork2.config.ConfigurationProvider;
+
+
+/**
+ * XmlConfigurationProviderInvalidFileTest
+ *
+ * @author Jason Carreira
+ * Created Sep 6, 2003 2:36:10 PM
+ */
+public class XmlConfigurationProviderInvalidFileTest extends ConfigurationTestBase {
+
+ public void testInvalidFileThrowsException() {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-invalid-file.xml";
+
+ try {
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+ fail();
+ } catch (ConfigurationException e) {
+ // this is what we expect
+ }
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderMultilevelTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderMultilevelTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderMultilevelTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderMultilevelTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts2.xwork2.config.providers;
+
+import org.apache.struts2.xwork2.ActionChainResult;
+import org.apache.struts2.xwork2.config.ConfigurationProvider;
+import org.apache.struts2.xwork2.config.entities.ActionConfig;
+import org.apache.struts2.xwork2.config.entities.InterceptorMapping;
+import org.apache.struts2.xwork2.config.entities.PackageConfig;
+import org.apache.struts2.xwork2.config.entities.ResultConfig;
+import org.apache.struts2.xwork2.interceptor.ParametersInterceptor;
+import junit.framework.Assert;
+
+
+/**
+ * Verify that Interceptor inheritance is happy for multi-level package derivations
+ *
+ * @author $Author: lukaszlenart $
+ * @version $Revision: 1209415 $
+ */
+public class XmlConfigurationProviderMultilevelTest extends ConfigurationTestBase {
+
+ /**
+ * attempt to load an xwork.xml file that has multilevel levels of inheritance and verify that the interceptors are
+ * correctly propagated through.
+ *
+ * @throws Exception
+ */
+ public void testMultiLevelInheritance() throws Exception {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-multilevel.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+ provider.init(configuration);
+ provider.loadPackages();
+
+ /**
+ * for this test, we expect the action named, action3, in the namespace, namespace3, to have a single
+ * ParameterInterceptor. The ParameterInterceptor, param, has been defined far up namespace3's parentage ...
+ * namespace3 -> namespace2 -> namespace1 -> default
+ */
+ PackageConfig packageConfig = configuration.getPackageConfig("namespace3");
+ Assert.assertNotNull(packageConfig);
+ assertEquals(2, packageConfig.getAllInterceptorConfigs().size());
+
+ ActionConfig actionConfig = packageConfig.getActionConfigs().get("action3");
+
+ assertNotNull(actionConfig);
+ assertNotNull(actionConfig.getInterceptors());
+ assertEquals(2, actionConfig.getInterceptors().size());
+ assertEquals(ParametersInterceptor.class, ((InterceptorMapping) actionConfig.getInterceptors().get(0)).getInterceptor().getClass());
+ assertNotNull(actionConfig.getResults());
+ assertEquals(1, actionConfig.getResults().size());
+ assertTrue(actionConfig.getResults().containsKey("success"));
+
+ ResultConfig resultConfig = (ResultConfig) actionConfig.getResults().get("success");
+ assertEquals(ActionChainResult.class.getName(), resultConfig.getClassName());
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderPackagesTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderPackagesTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderPackagesTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderPackagesTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts2.xwork2.config.providers;
+
+import org.apache.struts2.xwork2.config.ConfigurationException;
+import org.apache.struts2.xwork2.config.ConfigurationProvider;
+import org.apache.struts2.xwork2.config.RuntimeConfiguration;
+import org.apache.struts2.xwork2.config.entities.PackageConfig;
+
+import java.util.List;
+
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: Mike
+ * Date: May 6, 2003
+ * Time: 3:10:16 PM
+ * To change this template use Options | File Templates.
+ */
+public class XmlConfigurationProviderPackagesTest extends ConfigurationTestBase {
+
+ public void testBadInheritance() throws ConfigurationException {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-bad-inheritance.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+ provider.init(configuration);
+ provider.loadPackages();
+ }
+
+ public void testBasicPackages() throws ConfigurationException {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-basic-packages.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+ provider.init(configuration);
+ provider.loadPackages();
+
+ // setup our expectations
+ PackageConfig expectedNamespacePackage = new PackageConfig.Builder("namespacepkg")
+ .namespace("/namespace/set")
+ .isAbstract(false)
+ .build();
+ PackageConfig expectedAbstractPackage = new PackageConfig.Builder("abstractpkg")
+ .isAbstract(true)
+ .build();
+
+ // test expectations
+ assertEquals(3, configuration.getPackageConfigs().size());
+ assertEquals(expectedNamespacePackage, configuration.getPackageConfig("namespacepkg"));
+ assertEquals(expectedAbstractPackage, configuration.getPackageConfig("abstractpkg"));
+ }
+
+ public void testDefaultPackage() throws ConfigurationException {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-default-package.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+ provider.init(configuration);
+ provider.loadPackages();
+
+ // setup our expectations
+ PackageConfig expectedPackageConfig = new PackageConfig.Builder("default").build();
+
+ // test expectations
+ assertEquals(1, configuration.getPackageConfigs().size());
+ assertEquals(expectedPackageConfig, configuration.getPackageConfig("default"));
+ }
+
+ public void testPackageInheritance() throws ConfigurationException {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-package-inheritance.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+
+ provider.init(configuration);
+ provider.loadPackages();
+
+ // test expectations
+ assertEquals(4, configuration.getPackageConfigs().size());
+ PackageConfig defaultPackage = configuration.getPackageConfig("default");
+ assertNotNull(defaultPackage);
+ assertEquals("default", defaultPackage.getName());
+ PackageConfig abstractPackage = configuration.getPackageConfig("abstractPackage");
+ assertNotNull(abstractPackage);
+ assertEquals("abstractPackage", abstractPackage.getName());
+ PackageConfig singlePackage = configuration.getPackageConfig("singleInheritance");
+ assertNotNull(singlePackage);
+ assertEquals("singleInheritance", singlePackage.getName());
+ assertEquals(1, singlePackage.getParents().size());
+ assertEquals(defaultPackage, singlePackage.getParents().get(0));
+ PackageConfig multiplePackage = configuration.getPackageConfig("multipleInheritance");
+ assertNotNull(multiplePackage);
+ assertEquals("multipleInheritance", multiplePackage.getName());
+ assertEquals(3, multiplePackage.getParents().size());
+ List multipleParents = multiplePackage.getParents();
+ assertTrue(multipleParents.contains(defaultPackage));
+ assertTrue(multipleParents.contains(abstractPackage));
+ assertTrue(multipleParents.contains(singlePackage));
+
+ configurationManager.addContainerProvider(provider);
+ configurationManager.reload();
+
+ RuntimeConfiguration runtimeConfiguration = configurationManager.getConfiguration().getRuntimeConfiguration();
+ assertNotNull(runtimeConfiguration.getActionConfig("/multiple", "default"));
+ assertNotNull(runtimeConfiguration.getActionConfig("/multiple", "abstract"));
+ assertNotNull(runtimeConfiguration.getActionConfig("/multiple", "single"));
+ assertNotNull(runtimeConfiguration.getActionConfig("/multiple", "multiple"));
+ assertNotNull(runtimeConfiguration.getActionConfig("/single", "default"));
+ assertNull(runtimeConfiguration.getActionConfig("/single", "abstract"));
+ assertNotNull(runtimeConfiguration.getActionConfig("/single", "single"));
+ assertNull(runtimeConfiguration.getActionConfig("/single", "multiple"));
+
+ }
+
+ public void testDefaultClassRef() throws ConfigurationException {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-defaultclassref-package.xml";
+ final String hasDefaultClassRefPkgName = "hasDefaultClassRef";
+ final String noDefaultClassRefPkgName = "noDefaultClassRef";
+ final String testDefaultClassRef = "org.apache.struts2.xwork2.ActionSupport";
+
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+ provider.init(configuration);
+
+ // setup our expectations
+ PackageConfig expectedDefaultClassRefPackage = new PackageConfig.Builder(hasDefaultClassRefPkgName).defaultClassRef(testDefaultClassRef).build();
+
+ PackageConfig expectedNoDefaultClassRefPackage = new PackageConfig.Builder(noDefaultClassRefPkgName).build();
+
+ // test expectations
+ assertEquals(2, configuration.getPackageConfigs().size());
+ assertEquals(expectedDefaultClassRefPackage, configuration.getPackageConfig(hasDefaultClassRefPkgName));
+ assertEquals(expectedNoDefaultClassRefPackage, configuration.getPackageConfig(noDefaultClassRefPkgName));
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderResultTypesTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderResultTypesTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderResultTypesTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderResultTypesTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts2.xwork2.config.providers;
+
+import org.apache.struts2.xwork2.config.ConfigurationProvider;
+import org.apache.struts2.xwork2.config.entities.ActionConfig;
+import org.apache.struts2.xwork2.config.entities.PackageConfig;
+import org.apache.struts2.xwork2.config.entities.ResultConfig;
+import org.apache.struts2.xwork2.config.entities.ResultTypeConfig;
+import org.apache.struts2.xwork2.mock.MockResult;
+
+import java.util.Map;
+
+
+/**
+ * Test XmlConfigurationProvider's <result-types> ... </result-types>
+ *
+ * @author tm_jee
+ * @version $Date: 2011-12-02 12:24:48 +0100 (Fri, 02 Dec 2011) $ $Id: XmlConfigurationProviderResultTypesTest.java 1209415 2011-12-02 11:24:48Z lukaszlenart $
+ */
+public class XmlConfigurationProviderResultTypesTest extends ConfigurationTestBase {
+
+ public void testPlainResultTypesParams() throws Exception {
+ ConfigurationProvider configurationProvider = buildConfigurationProvider("org/apache/struts2/xwork2/config/providers/xwork-test-result-types.xml");
+
+ PackageConfig packageConfig = configuration.getPackageConfig("xworkResultTypesTestPackage1");
+ Map resultTypesConfigMap = packageConfig.getResultTypeConfigs();
+
+ assertEquals(resultTypesConfigMap.size(), 2);
+ assertTrue(resultTypesConfigMap.containsKey("result1"));
+ assertTrue(resultTypesConfigMap.containsKey("result2"));
+ assertFalse(resultTypesConfigMap.containsKey("result3"));
+
+ ResultTypeConfig result1ResultTypeConfig = (ResultTypeConfig) resultTypesConfigMap.get("result1");
+ Map result1ParamsMap = result1ResultTypeConfig.getParams();
+ ResultTypeConfig result2ResultTypeConfig = (ResultTypeConfig) resultTypesConfigMap.get("result2");
+ Map result2ParamsMap = result2ResultTypeConfig.getParams();
+
+ assertEquals(result1ResultTypeConfig.getName(), "result1");
+ assertEquals(result1ResultTypeConfig.getClazz(), MockResult.class.getName());
+ assertEquals(result2ResultTypeConfig.getName(), "result2");
+ assertEquals(result2ResultTypeConfig.getClazz(), MockResult.class.getName());
+ assertEquals(result1ParamsMap.size(), 3);
+ assertEquals(result2ParamsMap.size(), 2);
+ assertTrue(result1ParamsMap.containsKey("param1"));
+ assertTrue(result1ParamsMap.containsKey("param2"));
+ assertTrue(result1ParamsMap.containsKey("param3"));
+ assertFalse(result1ParamsMap.containsKey("param4"));
+ assertTrue(result2ParamsMap.containsKey("paramA"));
+ assertTrue(result2ParamsMap.containsKey("paramB"));
+ assertFalse(result2ParamsMap.containsKey("paramC"));
+ assertEquals(result1ParamsMap.get("param1"), "value1");
+ assertEquals(result1ParamsMap.get("param2"), "value2");
+ assertEquals(result1ParamsMap.get("param3"), "value3");
+ assertEquals(result2ParamsMap.get("paramA"), "valueA");
+ assertEquals(result2ParamsMap.get("paramB"), "valueB");
+ }
+
+ public void testInheritedResultTypesParams() throws Exception {
+ ConfigurationProvider configurationProvider = buildConfigurationProvider("org/apache/struts2/xwork2/config/providers/xwork-test-result-types.xml");
+
+ PackageConfig packageConfig = configuration.getPackageConfig("xworkResultTypesTestPackage2");
+ Map actionConfigMap = packageConfig.getActionConfigs();
+
+
+ ActionConfig action1ActionConfig = (ActionConfig) actionConfigMap.get("action1");
+ ActionConfig action2ActionConfig = (ActionConfig) actionConfigMap.get("action2");
+
+ ResultConfig action1Result = (ResultConfig) action1ActionConfig.getResults().get("success");
+ ResultConfig action2Result = (ResultConfig) action2ActionConfig.getResults().get("success");
+
+ assertEquals(action1Result.getName(), "success");
+ assertEquals(action1Result.getClassName(), "org.apache.struts2.xwork2.mock.MockResult");
+ assertEquals(action1Result.getName(), "success");
+ assertEquals(action1Result.getClassName(), "org.apache.struts2.xwork2.mock.MockResult");
+
+ Map action1ResultMap = action1Result.getParams();
+ Map action2ResultMap = action2Result.getParams();
+
+ assertEquals(action1ResultMap.size(), 5);
+ assertTrue(action1ResultMap.containsKey("param1"));
+ assertTrue(action1ResultMap.containsKey("param2"));
+ assertTrue(action1ResultMap.containsKey("param3"));
+ assertTrue(action1ResultMap.containsKey("param10"));
+ assertTrue(action1ResultMap.containsKey("param11"));
+ assertFalse(action1ResultMap.containsKey("param12"));
+ assertEquals(action1ResultMap.get("param1"), "newValue1");
+ assertEquals(action1ResultMap.get("param2"), "value2");
+ assertEquals(action1ResultMap.get("param3"), "newValue3");
+ assertEquals(action1ResultMap.get("param10"), "value10");
+ assertEquals(action1ResultMap.get("param11"), "value11");
+
+ assertEquals(action2ResultMap.size(), 3);
+ assertTrue(action2ResultMap.containsKey("paramA"));
+ assertTrue(action2ResultMap.containsKey("paramB"));
+ assertTrue(action2ResultMap.containsKey("paramZ"));
+ assertFalse(action2ResultMap.containsKey("paramY"));
+ assertEquals(action2ResultMap.get("paramA"), "valueA");
+ assertEquals(action2ResultMap.get("paramB"), "newValueB");
+ assertEquals(action2ResultMap.get("paramZ"), "valueZ");
+
+
+ }
+}
+
+
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderResultsTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderResultsTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderResultsTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderResultsTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts2.xwork2.config.providers;
+
+import org.apache.struts2.xwork2.ActionChainResult;
+import org.apache.struts2.xwork2.SimpleAction;
+import org.apache.struts2.xwork2.config.ConfigurationException;
+import org.apache.struts2.xwork2.config.ConfigurationProvider;
+import org.apache.struts2.xwork2.config.entities.ActionConfig;
+import org.apache.struts2.xwork2.config.entities.PackageConfig;
+import org.apache.struts2.xwork2.config.entities.ResultConfig;
+import org.apache.struts2.xwork2.config.entities.ResultTypeConfig;
+import org.apache.struts2.xwork2.mock.MockResult;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: Mike
+ * Date: May 6, 2003
+ * Time: 3:10:16 PM
+ * To change this template use Options | File Templates.
+ */
+public class XmlConfigurationProviderResultsTest extends ConfigurationTestBase {
+
+ public void testActions() throws ConfigurationException {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-results.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+
+ HashMap<String, String> parameters = new HashMap<String, String>();
+ HashMap<String, ResultConfig> results = new HashMap<String, ResultConfig>();
+
+ results.put("chainDefaultTypedResult", new ResultConfig.Builder("chainDefaultTypedResult", ActionChainResult.class.getName()).build());
+
+ results.put("mockTypedResult", new ResultConfig.Builder("mockTypedResult", MockResult.class.getName()).build());
+
+ Map<String, String> resultParams = new HashMap<String, String>();
+ resultParams.put("actionName", "bar.vm");
+ results.put("specificLocationResult", new ResultConfig.Builder("specificLocationResult", ActionChainResult.class.getName())
+ .addParams(resultParams).build());
+
+ resultParams = new HashMap<String, String>();
+ resultParams.put("actionName", "foo.vm");
+ results.put("defaultLocationResult", new ResultConfig.Builder("defaultLocationResult", ActionChainResult.class.getName())
+ .addParams(resultParams).build());
+
+ resultParams = new HashMap<String, String>();
+ resultParams.put("foo", "bar");
+ results.put("noDefaultLocationResult", new ResultConfig.Builder("noDefaultLocationResult", ActionChainResult.class.getName())
+ .addParams(resultParams).build());
+
+ ActionConfig expectedAction = new ActionConfig.Builder("default", "Bar", SimpleAction.class.getName())
+ .addParams(parameters)
+ .addResultConfigs(results)
+ .build();
+
+ // execute the configuration
+ provider.init(configuration);
+ provider.loadPackages();
+
+ PackageConfig pkg = configuration.getPackageConfig("default");
+ Map<String, ActionConfig> actionConfigs = pkg.getActionConfigs();
+
+ // assertions
+ assertEquals(1, actionConfigs.size());
+
+ ActionConfig action = actionConfigs.get("Bar");
+ assertEquals(expectedAction, action);
+ }
+
+ public void testResultInheritance() throws ConfigurationException {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-result-inheritance.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+
+ // expectations
+ provider.init(configuration);
+ provider.loadPackages();
+
+ // assertions
+ PackageConfig subPkg = configuration.getPackageConfig("subPackage");
+ assertEquals(1, subPkg.getResultTypeConfigs().size());
+ assertEquals(3, subPkg.getAllResultTypeConfigs().size());
+ }
+
+ public void testResultTypes() throws ConfigurationException {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-results.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+
+ // setup expectations
+ ResultTypeConfig chainResult = new ResultTypeConfig.Builder("chain", ActionChainResult.class.getName()).build();
+ ResultTypeConfig mockResult = new ResultTypeConfig.Builder("mock", MockResult.class.getName()).build();
+
+ // execute the configuration
+ provider.init(configuration);
+ provider.loadPackages();
+
+ PackageConfig pkg = configuration.getPackageConfig("default");
+ Map resultTypes = pkg.getResultTypeConfigs();
+
+ // assertions
+ assertEquals(2, resultTypes.size());
+ assertEquals("chain", pkg.getDefaultResultType());
+ assertEquals(chainResult, resultTypes.get("chain"));
+ assertEquals(mockResult, resultTypes.get("mock"));
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,199 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts2.xwork2.config.providers;
+
+import org.apache.struts2.xwork2.ObjectFactory;
+import org.apache.struts2.xwork2.config.ConfigurationProvider;
+import org.apache.struts2.xwork2.config.RuntimeConfiguration;
+import org.apache.struts2.xwork2.config.entities.PackageConfig;
+import org.apache.struts2.xwork2.config.impl.MockConfiguration;
+import org.apache.struts2.xwork2.util.ClassLoaderUtil;
+import org.apache.struts2.xwork2.util.FileManager;
+import org.w3c.dom.Document;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+
+public class XmlConfigurationProviderTest extends ConfigurationTestBase {
+
+ public void testLoadOrder() throws Exception {
+ configuration = new MockConfiguration();
+ ((MockConfiguration) configuration).selfRegister();
+ container = configuration.getContainer();
+
+ XmlConfigurationProvider prov = new XmlConfigurationProvider("xwork-test-load-order.xml", true) {
+ @Override
+ protected Iterator<URL> getConfigurationUrls(String fileName) throws IOException {
+ List<URL> urls = new ArrayList<URL>();
+ urls.add(ClassLoaderUtil.getResource("org/apache/struts2/xwork2/config/providers/loadorder1/xwork-test-load-order.xml", XmlConfigurationProvider.class));
+ urls.add(ClassLoaderUtil.getResource("org/apache/struts2/xwork2/config/providers/loadorder2/xwork-test-load-order.xml", XmlConfigurationProvider.class));
+ urls.add(ClassLoaderUtil.getResource("org/apache/struts2/xwork2/config/providers/loadorder3/xwork-test-load-order.xml", XmlConfigurationProvider.class));
+ return urls.iterator();
+ }
+ };
+ prov.setObjectFactory(container.getInstance(ObjectFactory.class));
+ prov.init(configuration);
+ List<Document> docs = prov.getDocuments();
+ assertEquals(3, docs.size());
+
+ assertEquals(1, XmlHelper.getLoadOrder(docs.get(0)).intValue());
+ assertEquals(2, XmlHelper.getLoadOrder(docs.get(1)).intValue());
+ assertEquals(3, XmlHelper.getLoadOrder(docs.get(2)).intValue());
+ }
+
+ public static final long FILE_TS_WAIT_IN_MS = 3600000;
+
+ private static void changeFileTime(File f) throws Exception {
+ final long orig = f.lastModified();
+ final long maxwait = orig + FILE_TS_WAIT_IN_MS;
+ long curr;
+ while (!f.setLastModified(curr = System.currentTimeMillis()) || orig == f.lastModified()) {
+ Thread.sleep(500);
+ assertTrue("Waited more than " + FILE_TS_WAIT_IN_MS + " ms to update timestamp on file: " + f, maxwait > curr);
+ }
+ }
+
+ public void testNeedsReload() throws Exception {
+ FileManager.setReloadingConfigs(true);
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-actions.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+
+ assertTrue(!provider.needsReload());
+
+ File file = new File(getClass().getResource("/" + filename).toURI());
+ assertTrue("not exists: " + file.toString(), file.exists());
+ changeFileTime(file);
+
+ assertTrue(provider.needsReload());
+ }
+
+ public void testInheritence() throws Exception {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-include-parent.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+
+ provider.init(configuration);
+ provider.loadPackages();
+
+ // test expectations
+ assertEquals(6, configuration.getPackageConfigs().size());
+
+
+ PackageConfig defaultPackage = configuration.getPackageConfig("default");
+ assertNotNull(defaultPackage);
+ assertEquals("default", defaultPackage.getName());
+
+
+ PackageConfig namespace1 = configuration.getPackageConfig("namespace1");
+ assertNotNull(namespace1);
+ assertEquals("namespace1", namespace1.getName());
+ assertEquals(defaultPackage, namespace1.getParents().get(0));
+
+ PackageConfig namespace2 = configuration.getPackageConfig("namespace2");
+ assertNotNull(namespace2);
+ assertEquals("namespace2", namespace2.getName());
+ assertEquals(1, namespace2.getParents().size());
+ assertEquals(namespace1, namespace2.getParents().get(0));
+
+
+ PackageConfig namespace4 = configuration.getPackageConfig("namespace4");
+ assertNotNull(namespace4);
+ assertEquals("namespace4", namespace4.getName());
+ assertEquals(1, namespace4.getParents().size());
+ assertEquals(namespace1, namespace4.getParents().get(0));
+
+
+ PackageConfig namespace5 = configuration.getPackageConfig("namespace5");
+ assertNotNull(namespace5);
+ assertEquals("namespace5", namespace5.getName());
+ assertEquals(1, namespace5.getParents().size());
+ assertEquals(namespace4, namespace5.getParents().get(0));
+
+ configurationManager.addContainerProvider(provider);
+ configurationManager.reload();
+
+ RuntimeConfiguration runtimeConfiguration = configurationManager.getConfiguration().getRuntimeConfiguration();
+ assertNotNull(runtimeConfiguration.getActionConfig("/namespace1", "action1"));
+ assertNotNull(runtimeConfiguration.getActionConfig("/namespace2", "action2"));
+ assertNotNull(runtimeConfiguration.getActionConfig("/namespace4", "action4"));
+ assertNotNull(runtimeConfiguration.getActionConfig("/namespace5", "action5"));
+ }
+
+ public void testGuessResultType() {
+ XmlConfigurationProvider prov = new XmlConfigurationProvider();
+
+ assertEquals(null, prov.guessResultType(null));
+ assertEquals("foo", prov.guessResultType("foo"));
+ assertEquals("foo", prov.guessResultType("foo-"));
+ assertEquals("fooBar", prov.guessResultType("foo-bar"));
+ assertEquals("fooBarBaz", prov.guessResultType("foo-bar-baz"));
+ }
+
+ public void testEmptySpaces() throws Exception {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork- test.xml";
+ FileManager.setReloadingConfigs(true);
+
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+ assertTrue(!provider.needsReload());
+
+ URI uri = ClassLoaderUtil.getResource(filename, ConfigurationProvider.class).toURI();
+
+ File file = new File(uri);
+
+ assertTrue(file.exists());
+ changeFileTime(file);
+
+ assertTrue(provider.needsReload());
+ }
+
+ public void testConfigsInJarFiles() throws Exception {
+ FileManager.setReloadingConfigs(true);
+ testProvider("xwork-jar.xml");
+ testProvider("xwork-zip.xml");
+ testProvider("xwork - jar.xml");
+ testProvider("xwork - zip.xml");
+
+ testProvider("xwork-jar2.xml");
+ testProvider("xwork-zip2.xml");
+ testProvider("xwork - jar2.xml");
+ testProvider("xwork - zip2.xml");
+ }
+
+ private void testProvider(String configFile) throws Exception {
+ ConfigurationProvider provider = buildConfigurationProvider(configFile);
+ assertTrue(!provider.needsReload());
+
+ String fullPath = ClassLoaderUtil.getResource(configFile, ConfigurationProvider.class).toString();
+
+ int startIndex = fullPath.indexOf(":file:/");
+ int endIndex = fullPath.indexOf("!/");
+
+ String jar = fullPath.substring(startIndex + (":file:/".length() - 1), endIndex).replaceAll("%20", " ");
+
+ File file = new File(jar);
+
+ assertTrue("File [" + file + "] doesn't exist!", file.exists());
+ file.setLastModified(System.currentTimeMillis());
+
+ assertTrue(!provider.needsReload());
+ }
+
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderUnknownHandlerStackTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderUnknownHandlerStackTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderUnknownHandlerStackTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderUnknownHandlerStackTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,40 @@
+package org.apache.struts2.xwork2.config.providers;
+
+import org.apache.struts2.xwork2.UnknownHandlerManager;
+import org.apache.struts2.xwork2.config.ConfigurationException;
+import org.apache.struts2.xwork2.DefaultUnknownHandlerManager;
+import org.apache.struts2.xwork2.config.ConfigurationProvider;
+import org.apache.struts2.xwork2.config.entities.UnknownHandlerConfig;
+
+import java.util.List;
+
+public class XmlConfigurationProviderUnknownHandlerStackTest extends ConfigurationTestBase {
+
+ public void testStackWithElements() throws ConfigurationException {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-unknownhandler-stack.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+ loadConfigurationProviders(provider);
+ configurationManager.reload();
+
+ List<UnknownHandlerConfig> unknownHandlerStack = configuration.getUnknownHandlerStack();
+ assertNotNull(unknownHandlerStack);
+ assertEquals(2, unknownHandlerStack.size());
+
+ assertEquals("uh1", unknownHandlerStack.get(0).getName());
+ assertEquals("uh2", unknownHandlerStack.get(1).getName());
+
+ UnknownHandlerManager unknownHandlerManager = new DefaultUnknownHandlerManager();
+ container.inject(unknownHandlerManager);
+ assertTrue(unknownHandlerManager.hasUnknownHandlers());
+ }
+
+ public void testEmptyStack() throws ConfigurationException {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-unknownhandler-stack-empty.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+ loadConfigurationProviders(provider);
+ configurationManager.reload();
+
+ List<UnknownHandlerConfig> unknownHandlerStack = configuration.getUnknownHandlerStack();
+ assertNull(unknownHandlerStack);
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderWildCardIncludeTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderWildCardIncludeTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderWildCardIncludeTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlConfigurationProviderWildCardIncludeTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2002-2003,2009 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts2.xwork2.config.providers;
+
+import org.apache.struts2.xwork2.config.ConfigurationProvider;
+import org.apache.struts2.xwork2.config.entities.PackageConfig;
+
+public class XmlConfigurationProviderWildCardIncludeTest extends ConfigurationTestBase {
+
+
+ public void testWildCardInclude() throws Exception {
+ final String filename = "org/apache/struts2/xwork2/config/providers/xwork-test-wildcard-include.xml";
+ ConfigurationProvider provider = buildConfigurationProvider(filename);
+
+ provider.init(configuration);
+ provider.loadPackages();
+
+ PackageConfig defaultWildcardPackage = configuration.getPackageConfig("default-wildcard");
+ assertNotNull(defaultWildcardPackage);
+ assertEquals("default-wildcard", defaultWildcardPackage.getName());
+
+
+ PackageConfig defaultOnePackage = configuration.getPackageConfig("default-1");
+ assertNotNull(defaultOnePackage);
+ assertEquals("default-1", defaultOnePackage.getName());
+
+ PackageConfig defaultTwoPackage = configuration.getPackageConfig("default-2");
+ assertNotNull(defaultTwoPackage);
+ assertEquals("default-2", defaultTwoPackage.getName());
+
+ configurationManager.addContainerProvider(provider);
+ configurationManager.reload();
+
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlHelperTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlHelperTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlHelperTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/config/providers/XmlHelperTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,255 @@
+package org.apache.struts2.xwork2.config.providers;
+
+import org.apache.struts2.xwork2.XWorkTestCase;
+import org.easymock.MockControl;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import java.util.Map;
+
+/**
+ * <code>XmlHelperTest</code>
+ *
+ * @author <a href="mailto:hermanns@aixcept.de">Rainer Hermanns</a>
+ * @version $Id: XmlHelperTest.java 1209415 2011-12-02 11:24:48Z lukaszlenart $
+ */
+public class XmlHelperTest extends XWorkTestCase {
+
+ public void testGetContent1() throws Exception {
+ // set up Node
+ MockControl nodeControl = MockControl.createControl(Node.class);
+ Node mockNode = (Node) nodeControl.getMock();
+
+ nodeControl.expectAndDefaultReturn(mockNode.getNodeValue(), "testing testing 123");
+ nodeControl.expectAndDefaultReturn(mockNode.getNodeType(), Node.TEXT_NODE);
+
+
+ // set up NodeList
+ MockControl nodeListControl = MockControl.createControl(NodeList.class);
+ NodeList mockNodeList = (NodeList) nodeListControl.getMock();
+
+ nodeListControl.expectAndDefaultReturn(mockNodeList.getLength(), 1);
+ nodeListControl.expectAndDefaultReturn(mockNodeList.item(0), mockNode);
+
+
+ // set up Element
+ MockControl elementControl = MockControl.createControl(Element.class);
+ Element mockElement = (Element) elementControl.getMock();
+
+ elementControl.expectAndDefaultReturn(mockElement.getChildNodes(), mockNodeList);
+
+ nodeControl.replay();
+ nodeListControl.replay();
+ elementControl.replay();
+
+ String result = XmlHelper.getContent(mockElement);
+
+ nodeControl.verify();
+ nodeListControl.verify();
+ elementControl.verify();
+
+ assertEquals(result, "testing testing 123");
+ }
+
+
+ public void testGetContent2() throws Exception {
+ // set up Node
+ MockControl nodeControl1 = MockControl.createControl(Node.class);
+ Node mockNode1 = (Node) nodeControl1.getMock();
+
+ nodeControl1.expectAndDefaultReturn(mockNode1.getNodeValue(), "testing testing 123");
+ nodeControl1.expectAndDefaultReturn(mockNode1.getNodeType(), Node.TEXT_NODE);
+
+ MockControl nodeControl2 = MockControl.createControl(Node.class);
+ Node mockNode2 = (Node) nodeControl2.getMock();
+
+ nodeControl2.expectAndDefaultReturn(mockNode2.getNodeValue(), "comment 1");
+ nodeControl2.expectAndDefaultReturn(mockNode2.getNodeType(), Node.COMMENT_NODE);
+
+ MockControl nodeControl3 = MockControl.createControl(Node.class);
+ Node mockNode3 = (Node) nodeControl3.getMock();
+
+ nodeControl3.expectAndDefaultReturn(mockNode3.getNodeValue(), " tmjee ");
+ nodeControl3.expectAndDefaultReturn(mockNode3.getNodeType(), Node.TEXT_NODE);
+
+ MockControl nodeControl4 = MockControl.createControl(Node.class);
+ Node mockNode4 = (Node) nodeControl4.getMock();
+
+ nodeControl4.expectAndDefaultReturn(mockNode4.getNodeValue(), " phil ");
+ nodeControl4.expectAndDefaultReturn(mockNode4.getNodeType(), Node.TEXT_NODE);
+
+ MockControl nodeControl5 = MockControl.createControl(Node.class);
+ Node mockNode5 = (Node) nodeControl5.getMock();
+
+ nodeControl5.expectAndDefaultReturn(mockNode5.getNodeValue(), "comment 2");
+ nodeControl5.expectAndDefaultReturn(mockNode5.getNodeType(), Node.COMMENT_NODE);
+
+ MockControl nodeControl6 = MockControl.createControl(Node.class);
+ Node mockNode6 = (Node) nodeControl6.getMock();
+
+ nodeControl6.expectAndDefaultReturn(mockNode6.getNodeValue(), "comment 3");
+ nodeControl6.expectAndDefaultReturn(mockNode6.getNodeType(), Node.COMMENT_NODE);
+
+
+ // set up NodeList
+ MockControl nodeListControl = MockControl.createControl(NodeList.class);
+ NodeList mockNodeList = (NodeList) nodeListControl.getMock();
+
+ nodeListControl.expectAndDefaultReturn(mockNodeList.getLength(), 6);
+ mockNodeList.item(0);
+ nodeListControl.setReturnValue(mockNode1);
+ mockNodeList.item(1);
+ nodeListControl.setReturnValue(mockNode2);
+ mockNodeList.item(2);
+ nodeListControl.setDefaultReturnValue(mockNode3);
+ mockNodeList.item(3);
+ nodeListControl.setReturnValue(mockNode4);
+ mockNodeList.item(4);
+ nodeListControl.setReturnValue(mockNode5);
+ mockNodeList.item(5);
+ nodeListControl.setReturnValue(mockNode6);
+
+
+ // set up Element
+ MockControl elementControl = MockControl.createControl(Element.class);
+ Element mockElement = (Element) elementControl.getMock();
+
+ elementControl.expectAndDefaultReturn(mockElement.getChildNodes(), mockNodeList);
+
+ nodeControl1.replay();
+ nodeControl2.replay();
+ nodeControl3.replay();
+ nodeControl4.replay();
+ nodeControl5.replay();
+ nodeControl6.replay();
+ nodeListControl.replay();
+ elementControl.replay();
+
+ String result = XmlHelper.getContent(mockElement);
+
+ nodeControl1.verify();
+ nodeControl2.verify();
+ nodeControl3.verify();
+ nodeControl4.verify();
+ nodeControl5.verify();
+ nodeControl6.verify();
+ nodeListControl.verify();
+ elementControl.verify();
+
+ assertEquals(result, "testing testing 123tmjeephil");
+ }
+
+
+
+ public void testGetParams() throws Exception {
+ // <param name="param1">value1</param>
+ MockControl nodeControl1 = MockControl.createControl(Node.class);
+ Node mockNode1 = (Node) nodeControl1.getMock();
+
+ nodeControl1.expectAndDefaultReturn(mockNode1.getNodeValue(), "value1");
+ nodeControl1.expectAndDefaultReturn(mockNode1.getNodeType(), Node.TEXT_NODE);
+
+
+ MockControl nodeListControl1 = MockControl.createControl(NodeList.class);
+ NodeList mockNodeList1 = (NodeList) nodeListControl1.getMock();
+
+ nodeListControl1.expectAndDefaultReturn(mockNodeList1.getLength(), 1);
+ nodeListControl1.expectAndDefaultReturn(mockNodeList1.item(0), mockNode1);
+
+ MockControl paramControl1 = MockControl.createControl(Element.class);
+ Element mockParamElement1 = (Element) paramControl1.getMock();
+ mockParamElement1.getNodeName();
+ paramControl1.setReturnValue("param");
+
+ mockParamElement1.getNodeType();
+ paramControl1.setReturnValue(Node.ELEMENT_NODE);
+
+ mockParamElement1.getAttribute("name");
+ paramControl1.setReturnValue("param1");
+
+ mockParamElement1.getChildNodes();
+ paramControl1.setReturnValue(mockNodeList1);
+
+ nodeControl1.replay();
+ nodeListControl1.replay();
+ paramControl1.replay();
+
+ // <param name="param2">value2</param>
+ MockControl nodeControl2 = MockControl.createControl(Node.class);
+ Node mockNode2 = (Node) nodeControl2.getMock();
+
+ nodeControl2.expectAndDefaultReturn(mockNode2.getNodeValue(), "value2");
+ nodeControl2.expectAndDefaultReturn(mockNode2.getNodeType(), Node.TEXT_NODE);
+
+
+ MockControl nodeListControl2 = MockControl.createControl(NodeList.class);
+ NodeList mockNodeList2 = (NodeList) nodeListControl2.getMock();
+
+ nodeListControl2.expectAndDefaultReturn(mockNodeList2.getLength(), 1);
+ nodeListControl2.expectAndDefaultReturn(mockNodeList2.item(0), mockNode2);
+
+ MockControl paramControl2 = MockControl.createControl(Element.class);
+ Element mockParamElement2 = (Element) paramControl2.getMock();
+ mockParamElement2.getNodeName();
+ paramControl2.setReturnValue("param");
+
+ mockParamElement2.getNodeType();
+ paramControl2.setReturnValue(Node.ELEMENT_NODE);
+
+ mockParamElement2.getAttribute("name");
+ paramControl2.setReturnValue("param2");
+
+ mockParamElement2.getChildNodes();
+ paramControl2.setReturnValue(mockNodeList2);
+
+ nodeControl2.replay();
+ nodeListControl2.replay();
+ paramControl2.replay();
+
+
+ // <some_element>
+ // ...
+ // </some_element>
+ MockControl elementNodeListControl = MockControl.createControl(NodeList.class);
+ NodeList mockElementNodeList = (NodeList) elementNodeListControl.getMock();
+
+ elementNodeListControl.expectAndDefaultReturn(mockElementNodeList.getLength(), 2);
+ mockElementNodeList.item(0);
+ elementNodeListControl.setReturnValue(mockParamElement2);
+ mockElementNodeList.item(1);
+ elementNodeListControl.setReturnValue(mockParamElement1);
+
+ MockControl elementControl = MockControl.createControl(Element.class);
+ Element element = (Element) elementControl.getMock();
+
+ elementControl.expectAndDefaultReturn(element.getChildNodes(), mockElementNodeList);
+
+
+ elementNodeListControl.replay();
+ elementControl.replay();
+
+
+
+ Map params = XmlHelper.getParams(element);
+
+ nodeControl1.verify();
+ nodeListControl1.verify();
+ paramControl1.verify();
+
+
+ nodeControl2.verify();
+ nodeListControl2.verify();
+ paramControl2.verify();
+
+
+ elementNodeListControl.verify();
+ elementControl.verify();
+
+
+ assertNotNull(params);
+ assertEquals(params.size(), 2);
+ assertEquals(params.get("param1"), "value1");
+ assertEquals(params.get("param2"), "value2");
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/conversion/ConversionTestAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/conversion/ConversionTestAction.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/conversion/ConversionTestAction.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/conversion/ConversionTestAction.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2002-2006,2009 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts2.xwork2.conversion;
+
+import org.apache.struts2.xwork2.Action;
+import org.apache.struts2.xwork2.conversion.annotations.Conversion;
+import org.apache.struts2.xwork2.conversion.annotations.ConversionRule;
+import org.apache.struts2.xwork2.conversion.annotations.ConversionType;
+import org.apache.struts2.xwork2.conversion.annotations.TypeConversion;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <code>ConversionTestAction</code>
+ *
+ * @author Rainer Hermanns
+ * @version $Id: ConversionTestAction.java 1209415 2011-12-02 11:24:48Z lukaszlenart $
+ */
+@Conversion()
+public class ConversionTestAction implements Action {
+
+
+
+ private String convertInt;
+
+ private String convertDouble;
+
+ private List users = null;
+
+
+ private HashMap keyValues = null;
+
+
+ public String getConvertInt() {
+ return convertInt;
+ }
+
+ @TypeConversion(type = ConversionType.APPLICATION, converter = "org.apache.struts2.xwork2.util.XWorkBasicConverter")
+ public void setConvertInt( String convertInt ) {
+ this.convertInt = convertInt;
+ }
+
+ public String getConvertDouble() {
+ return convertDouble;
+ }
+
+ @TypeConversion(converter = "org.apache.struts2.xwork2.util.XWorkBasicConverter")
+ public void setConvertDouble( String convertDouble ) {
+ this.convertDouble = convertDouble;
+ }
+
+ public List getUsers() {
+ return users;
+ }
+
+ @TypeConversion(rule = ConversionRule.COLLECTION, converter = "java.lang.String")
+ public void setUsers( List users ) {
+ this.users = users;
+ }
+
+ public HashMap getKeyValues() {
+ return keyValues;
+ }
+
+ @TypeConversion(rule = ConversionRule.MAP, converter = "java.math.BigInteger")
+ public void setKeyValues( HashMap keyValues ) {
+ this.keyValues = keyValues;
+ }
+
+ /**
+ * Where the logic of the action is executed.
+ *
+ * @return a string representing the logical result of the execution.
+ * See constants in this interface for a list of standard result values.
+ * @throws Exception thrown if a system level exception occurs.
+ * Application level exceptions should be handled by returning
+ * an error value, such as Action.ERROR.
+ */
+ @TypeConversion(type = ConversionType.APPLICATION, key = "java.util.Date", converter = "org.apache.struts2.xwork2.util.XWorkBasicConverter")
+ public String execute() throws Exception {
+ return SUCCESS;
+ }
+}