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 [36/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/main/resources/org/apache/struts2/xwork2/xwork-messages.properties
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/main/resources/org/apache/struts2/xwork2/xwork-messages.properties?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/main/resources/org/apache/struts2/xwork2/xwork-messages.properties (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/main/resources/org/apache/struts2/xwork2/xwork-messages.properties Fri Dec 2 16:33:03 2011
@@ -0,0 +1,10 @@
+#
+# Copyright (c) 2002-2006 by OpenSymphony
+# All rights reserved.
+#
+
+xwork.error.action.execution=Error during Action invocation
+xwork.exception.missing-action=There is no Action mapped for action name {0}.
+xwork.exception.missing-package-action=There is no Action mapped for namespace {0} and action name {1}.
+xwork.default.invalid.fieldvalue=Invalid field value for field "{0}".
+
Modified: struts/struts2/branches/STRUTS_3_X/xwork-core/src/main/resources/xwork-default.xml
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/main/resources/xwork-default.xml?rev=1209569&r1=1209568&r2=1209569&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/main/resources/xwork-default.xml (original)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/main/resources/xwork-default.xml Fri Dec 2 16:33:03 2011
@@ -7,7 +7,7 @@
<!-- START SNIPPET: xwork2-default-result-types -->
<result-types>
- <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
+ <result-type name="chain" class="org.apache.struts2.xwork2.ActionChainResult"/>
</result-types>
<!-- END SNIPPET: xwork2-default-result-types -->
@@ -15,32 +15,32 @@
<interceptors>
<!-- START SNIPPET: xwork2-default-interceptors -->
- <interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>
- <interceptor name="logger" class="com.opensymphony.xwork2.interceptor.LoggingInterceptor"/>
- <interceptor name="chain" class="com.opensymphony.xwork2.interceptor.ChainingInterceptor"/>
- <interceptor name="staticParams" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/>
- <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
- <interceptor name="filterParams" class="com.opensymphony.xwork2.interceptor.ParameterFilterInterceptor"/>
- <interceptor name="removeParams" class="com.opensymphony.xwork2.interceptor.ParameterRemoverInterceptor"/>
- <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>
+ <interceptor name="timer" class="org.apache.struts2.xwork2.interceptor.TimerInterceptor"/>
+ <interceptor name="logger" class="org.apache.struts2.xwork2.interceptor.LoggingInterceptor"/>
+ <interceptor name="chain" class="org.apache.struts2.xwork2.interceptor.ChainingInterceptor"/>
+ <interceptor name="staticParams" class="org.apache.struts2.xwork2.interceptor.StaticParametersInterceptor"/>
+ <interceptor name="params" class="org.apache.struts2.xwork2.interceptor.ParametersInterceptor"/>
+ <interceptor name="filterParams" class="org.apache.struts2.xwork2.interceptor.ParameterFilterInterceptor"/>
+ <interceptor name="removeParams" class="org.apache.struts2.xwork2.interceptor.ParameterRemoverInterceptor"/>
+ <interceptor name="modelDriven" class="org.apache.struts2.xwork2.interceptor.ModelDrivenInterceptor"/>
<interceptor name="scopedModelDriven"
- class="com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor"/>
- <interceptor name="validation" class="com.opensymphony.xwork2.validator.ValidationInterceptor"/>
- <interceptor name="workflow" class="com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor"/>
- <interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>
- <interceptor name="conversionError" class="com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor"/>
- <interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/>
- <interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/>
- <interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor"/>
+ class="org.apache.struts2.xwork2.interceptor.ScopedModelDrivenInterceptor"/>
+ <interceptor name="validation" class="org.apache.struts2.xwork2.validator.ValidationInterceptor"/>
+ <interceptor name="workflow" class="org.apache.struts2.xwork2.interceptor.DefaultWorkflowInterceptor"/>
+ <interceptor name="prepare" class="org.apache.struts2.xwork2.interceptor.PrepareInterceptor"/>
+ <interceptor name="conversionError" class="org.apache.struts2.xwork2.interceptor.ConversionErrorInterceptor"/>
+ <interceptor name="alias" class="org.apache.struts2.xwork2.interceptor.AliasInterceptor"/>
+ <interceptor name="exception" class="org.apache.struts2.xwork2.interceptor.ExceptionMappingInterceptor"/>
+ <interceptor name="i18n" class="org.apache.struts2.xwork2.interceptor.I18nInterceptor"/>
<!-- END SNIPPET: xwork2-default-interceptors -->
- <!--interceptor name="static-params" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/>
- <interceptor name="filter-params" class="com.opensymphony.xwork2.interceptor.ParameterFilterInterceptor"/>
- <interceptor name="remove-params" class="com.opensymphony.xwork2.interceptor.ParameterRemoverInterceptor"/>
- <interceptor name="model-driven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>
+ <!--interceptor name="static-params" class="org.apache.struts2.xwork2.interceptor.StaticParametersInterceptor"/>
+ <interceptor name="filter-params" class="org.apache.struts2.xwork2.interceptor.ParameterFilterInterceptor"/>
+ <interceptor name="remove-params" class="org.apache.struts2.xwork2.interceptor.ParameterRemoverInterceptor"/>
+ <interceptor name="model-driven" class="org.apache.struts2.xwork2.interceptor.ModelDrivenInterceptor"/>
<interceptor name="scoped-model-driven"
- class="com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor"/-->
+ class="org.apache.struts2.xwork2.interceptor.ScopedModelDrivenInterceptor"/-->
<!-- START SNIPPET: xwork2-default-interceptor-stack -->
@@ -61,7 +61,7 @@
</interceptors>
- <default-class-ref class="com.opensymphony.xwork2.ActionSupport"/>
+ <default-class-ref class="org.apache.struts2.xwork2.ActionSupport"/>
</package>
</xwork>
Modified: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/PackagelessAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/PackagelessAction.java?rev=1209569&r1=1209568&r2=1209569&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/PackagelessAction.java (original)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/PackagelessAction.java Fri Dec 2 16:33:03 2011
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.xwork2.ActionSupport;
/**
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionContextTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionContextTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionContextTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionContextTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,115 @@
+/*
+ * 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;
+
+import org.apache.struts2.xwork2.util.ValueStack;
+import org.apache.struts2.xwork2.util.ValueStackFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * Unit test for {@link ActionContext}.
+ *
+ * @author Jason Carreira
+ */
+public class ActionContextTest extends XWorkTestCase {
+
+ private static final String APPLICATION_KEY = "org.apache.struts2.xwork2.ActionContextTest.application";
+ private static final String SESSION_KEY = "org.apache.struts2.xwork2.ActionContextTest.session";
+ private static final String PARAMETERS_KEY = "org.apache.struts2.xwork2.ActionContextTest.params";
+ private static final String ACTION_NAME = "org.apache.struts2.xwork2.ActionContextTest.actionName";
+
+ private ActionContext context;
+
+ @Override public void setUp() throws Exception {
+ super.setUp();
+ ValueStack valueStack = container.getInstance(ValueStackFactory.class).createValueStack();
+ Map<String, Object> extraContext = valueStack.getContext();
+ Map<String, Object> application = new HashMap<String, Object>();
+ application.put(APPLICATION_KEY, APPLICATION_KEY);
+
+ Map<String, Object> session = new HashMap<String, Object>();
+ session.put(SESSION_KEY, SESSION_KEY);
+
+ Map<String, Object> params = new HashMap<String, Object>();
+ params.put(PARAMETERS_KEY, PARAMETERS_KEY);
+ extraContext.put(ActionContext.APPLICATION, application);
+ extraContext.put(ActionContext.SESSION, session);
+ extraContext.put(ActionContext.PARAMETERS, params);
+ extraContext.put(ActionContext.ACTION_NAME, ACTION_NAME);
+ context = new ActionContext(extraContext);
+ ActionContext.setContext(context);
+ }
+
+ public void testContextParams() {
+ assertTrue(ActionContext.getContext().getApplication().containsKey(APPLICATION_KEY));
+ assertTrue(ActionContext.getContext().getSession().containsKey(SESSION_KEY));
+ assertTrue(ActionContext.getContext().getParameters().containsKey(PARAMETERS_KEY));
+ assertEquals(ActionContext.getContext().getName(), ACTION_NAME);
+ }
+
+ public void testGetContext() {
+ ActionContext threadContext = ActionContext.getContext();
+ assertEquals(context, threadContext);
+ }
+
+ public void testNewActionContextCanFindDefaultTexts() {
+ ValueStack valueStack = context.getValueStack();
+ String actionErrorMessage = (String) valueStack.findValue("getText('xwork.error.action.execution')");
+ assertNotNull(actionErrorMessage);
+ assertEquals("Error during Action invocation", actionErrorMessage);
+ }
+
+ public void testApplication() {
+ Map<String, Object> app = new HashMap<String, Object>();
+ context.setApplication(app);
+ assertEquals(app, context.getApplication());
+ }
+
+ public void testContextMap() {
+ Map<String, Object> map = new HashMap<String, Object>();
+ context.setContextMap(map);
+ assertEquals(map, context.getContextMap());
+ }
+
+ public void testParameters() {
+ Map<String, Object> param = new HashMap<String, Object>();
+ context.setParameters(param);
+ assertEquals(param, context.getParameters());
+ }
+
+ public void testConversionErrors() {
+ Map<String, Object> errors = context.getConversionErrors();
+ assertNotNull(errors);
+ assertEquals(0, errors.size());
+
+ Map<String, Object> errors2 = new HashMap<String, Object>();
+ context.setConversionErrors(errors);
+ assertEquals(errors2, context.getConversionErrors());
+ }
+
+ public void testStaticMethods() {
+ assertEquals(context, ActionContext.getContext());
+
+ ActionContext context2 = new ActionContext(null);
+ ActionContext.setContext(context2);
+
+ assertEquals(context2, ActionContext.getContext());
+ }
+
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionContextThreadLocalTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionContextThreadLocalTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionContextThreadLocalTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionContextThreadLocalTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,42 @@
+/*
+ * 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;
+
+import junit.framework.TestCase;
+
+import java.util.HashMap;
+
+
+/**
+ * Simple Test ActionContext's ThreadLocal
+ *
+ * @author tm_jee
+ * @version $Date: 2011-12-02 12:24:48 +0100 (Fri, 02 Dec 2011) $ $Id: ActionContextThreadLocalTest.java 1209415 2011-12-02 11:24:48Z lukaszlenart $
+ */
+public class ActionContextThreadLocalTest extends TestCase {
+
+
+ public void testGetContext() throws Exception {
+ ActionContext.setContext(null);
+ assertNull(ActionContext.getContext());
+ }
+
+ public void testSetContext() throws Exception {
+ ActionContext context = new ActionContext(new HashMap<String, Object>());
+ ActionContext.setContext(context);
+ assertEquals(context, ActionContext.getContext());
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionInvocationTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionInvocationTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionInvocationTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionInvocationTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,101 @@
+/*
+ * 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;
+
+import org.apache.struts2.xwork2.config.entities.ActionConfig;
+import org.apache.struts2.xwork2.config.providers.XmlConfigurationProvider;
+
+import java.util.HashMap;
+
+
+/**
+ * @author $Author: lukaszlenart $
+ * @version $Revision: 1209415 $
+ */
+public class ActionInvocationTest extends XWorkTestCase {
+
+ public void testCommandInvocation() throws Exception {
+ ActionProxy baseActionProxy = actionProxyFactory.createActionProxy(
+ "baz", "commandTest", null, null);
+ assertEquals("success", baseActionProxy.execute());
+
+ ActionProxy commandActionProxy = actionProxyFactory.createActionProxy(
+ "baz", "myCommand", null, null);
+ assertEquals(SimpleAction.COMMAND_RETURN_CODE, commandActionProxy.execute());
+ }
+
+ public void testCommandInvocationDoMethod() throws Exception {
+ ActionProxy baseActionProxy = actionProxyFactory.createActionProxy(
+ "baz", "doMethodTest", null, null);
+ assertEquals("input", baseActionProxy.execute());
+ }
+
+ public void testCommandInvocationUnknownHandler() throws Exception {
+
+ DefaultActionProxy baseActionProxy = (DefaultActionProxy) actionProxyFactory.createActionProxy(
+ "baz", "unknownMethodTest", "unknownmethod", null);
+ UnknownHandler unknownHandler = new UnknownHandler() {
+ public ActionConfig handleUnknownAction(String namespace, String actionName) throws XWorkException { return null;}
+ public Result handleUnknownResult(ActionContext actionContext, String actionName, ActionConfig actionConfig, String resultCode) throws XWorkException {
+ return null;
+ }
+ public Object handleUnknownActionMethod(Object action, String methodName) throws NoSuchMethodException {
+ if (methodName.equals("unknownmethod")) {
+ return "found";
+ } else {
+ return null;
+ }
+ }
+ };
+
+ UnknownHandlerManagerMock uhm = new UnknownHandlerManagerMock();
+ uhm.addUnknownHandler(unknownHandler);
+ ((DefaultActionInvocation)baseActionProxy.getInvocation()).setUnknownHandlerManager(uhm);
+
+ assertEquals("found", baseActionProxy.execute());
+ }
+
+ public void testResultReturnInvocationAndWired() throws Exception {
+ ActionProxy baseActionProxy = actionProxyFactory.createActionProxy(
+ "baz", "resultAction", null, null);
+ assertEquals(null, baseActionProxy.execute());
+ assertTrue(SimpleAction.resultCalled);
+ }
+
+ public void testSimple() {
+ HashMap<String, Object> params = new HashMap<String, Object>();
+ params.put("blah", "this is blah");
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.PARAMETERS, params);
+
+ try {
+ ActionProxy proxy = actionProxyFactory.createActionProxy( "", "Foo", null, extraContext);
+ proxy.execute();
+ assertEquals("this is blah", proxy.getInvocation().getStack().findValue("[1].blah"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ @Override protected void setUp() throws Exception {
+ super.setUp();
+
+ // ensure we're using the default configuration, not simple config
+ loadConfigurationProviders(new XmlConfigurationProvider("xwork-sample.xml"));
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionNestingTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionNestingTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionNestingTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionNestingTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,143 @@
+/*
+ * 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;
+
+import org.apache.struts2.xwork2.config.Configuration;
+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.inject.ContainerBuilder;
+import org.apache.struts2.xwork2.mock.MockResult;
+import org.apache.struts2.xwork2.util.ValueStack;
+import org.apache.struts2.xwork2.util.location.LocatableProperties;
+
+import java.util.HashMap;
+
+
+/**
+ * ActionNestingTest
+ *
+ * @author Jason Carreira
+ * Created Mar 5, 2003 2:02:01 PM
+ */
+public class ActionNestingTest extends XWorkTestCase {
+
+ public static final String VALUE = "myValue";
+ public static final String NESTED_VALUE = "myNestedValue";
+ public static final String KEY = "myProperty";
+ public static final String NESTED_KEY = "nestedProperty";
+ public static final String NAMESPACE = "NestedActionTest";
+ public static final String SIMPLE_ACTION_NAME = "SimpleAction";
+ public static final String NO_STACK_ACTION_NAME = "NoStackNestedAction";
+ public static final String STACK_ACTION_NAME = "StackNestedAction";
+
+
+ private ActionContext context;
+
+
+ public String getMyProperty() {
+ return VALUE;
+ }
+
+ @Override public void setUp() throws Exception {
+ super.setUp();
+ loadConfigurationProviders(new NestedTestConfigurationProvider());
+
+ context = ActionContext.getContext();
+ context.getValueStack().push(this);
+ }
+
+ @Override protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testNestedContext() throws Exception {
+ assertEquals(context, ActionContext.getContext());
+ ActionProxy proxy = actionProxyFactory.createActionProxy(NAMESPACE, SIMPLE_ACTION_NAME, null);
+ proxy.execute();
+ assertEquals(context, ActionContext.getContext());
+ }
+
+ public void testNestedNoValueStack() throws Exception {
+ ValueStack stack = ActionContext.getContext().getValueStack();
+ assertEquals(VALUE, stack.findValue(KEY));
+
+ ActionProxy proxy = actionProxyFactory.createActionProxy(NAMESPACE, NO_STACK_ACTION_NAME, null);
+ proxy.execute();
+ stack = ActionContext.getContext().getValueStack();
+ assertEquals(stack.findValue(KEY), VALUE);
+ assertNull(stack.findValue(NESTED_KEY));
+ }
+
+ public void testNestedValueStack() throws Exception {
+ ValueStack stack = ActionContext.getContext().getValueStack();
+ assertEquals(VALUE, stack.findValue(KEY));
+
+ HashMap<String, Object> extraContext = new HashMap<String, Object>();
+ extraContext.put(ActionContext.VALUE_STACK, stack);
+
+ ActionProxy proxy = actionProxyFactory.createActionProxy(NAMESPACE, STACK_ACTION_NAME, extraContext);
+ proxy.execute();
+ assertEquals(context, ActionContext.getContext());
+ assertEquals(stack, ActionContext.getContext().getValueStack());
+ assertEquals(VALUE, stack.findValue(KEY));
+ assertEquals(NESTED_VALUE, stack.findValue(NESTED_KEY));
+ assertEquals(3, stack.size());
+ }
+
+
+ class NestedTestConfigurationProvider implements ConfigurationProvider {
+ private Configuration configuration;
+ public void destroy() {
+ }
+ public void init(Configuration configuration) {
+ this.configuration = configuration;
+ }
+
+ public void register(ContainerBuilder builder, LocatableProperties props) {
+ }
+
+ public void loadPackages() {
+
+ PackageConfig packageContext = new PackageConfig.Builder("nestedActionTest")
+ .addActionConfig(SIMPLE_ACTION_NAME, new ActionConfig.Builder("nestedActionTest", SIMPLE_ACTION_NAME, SimpleAction.class.getName())
+ .addResultConfig(new ResultConfig.Builder(Action.SUCCESS, MockResult.class.getName()).build())
+ .addResultConfig(new ResultConfig.Builder(Action.ERROR, MockResult.class.getName()).build())
+ .build())
+ .addActionConfig(NO_STACK_ACTION_NAME, new ActionConfig.Builder("nestedActionTest", NO_STACK_ACTION_NAME, NestedAction.class.getName())
+ .addResultConfig(new ResultConfig.Builder(Action.SUCCESS, MockResult.class.getName()).build())
+ .methodName("noStack")
+ .build())
+ .addActionConfig(STACK_ACTION_NAME, new ActionConfig.Builder("nestedActionTest", STACK_ACTION_NAME, NestedAction.class.getName())
+ .addResultConfig(new ResultConfig.Builder(Action.SUCCESS, MockResult.class.getName()).build())
+ .methodName("stack")
+ .build())
+ .namespace(NAMESPACE)
+ .build();
+ configuration.addPackageConfig("nestedActionTest", packageContext);
+ }
+
+ /**
+ * Tells whether the ConfigurationProvider should reload its configuration
+ *
+ * @return
+ */
+ public boolean needsReload() {
+ return false;
+ }
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionSupportTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionSupportTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionSupportTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ActionSupportTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,330 @@
+/*
+ * 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;
+
+import org.apache.struts2.xwork2.util.ValueStack;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+/**
+ * Unit test for {@link ActionSupport}.
+ *
+ * @author Claus Ibsen
+ */
+public class ActionSupportTest extends XWorkTestCase {
+
+ private ActionSupport as;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ as = new ActionSupport();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ as = null;
+ }
+
+ public void testNothingDoneOnActionSupport() throws Exception {
+ assertEquals(false, as.hasErrors());
+
+ assertNotNull(as.getActionErrors());
+ assertEquals(0, as.getActionErrors().size());
+ assertEquals(false, as.hasActionErrors());
+
+ assertNotNull(as.getActionMessages());
+ assertEquals(0, as.getActionMessages().size());
+ assertEquals(false, as.hasActionMessages());
+
+ assertNotNull(as.getFieldErrors());
+ assertEquals(0, as.getFieldErrors().size());
+ assertEquals(false, as.hasFieldErrors());
+
+ assertNull(as.getText(null));
+
+ try {
+ as.pause(null);
+ } catch (Exception e) {
+ fail("Should not fail");
+ }
+
+ assertEquals(Action.INPUT, as.input());
+ assertEquals(Action.SUCCESS, as.doDefault());
+ assertEquals(Action.SUCCESS, as.execute());
+ try {
+ as.clone();
+ fail("Failure expected for clone()");
+ } catch (CloneNotSupportedException e) {
+ // success!
+ }
+
+
+ assertNull(as.getText(null, (List) null));
+ assertNull(as.getText(null, (String) null));
+ assertNull(as.getText(null, (String[]) null));
+
+ assertNull(as.getText(null, (String) null, (List) null));
+ assertNull(as.getText(null, (String) null, (String) null));
+ assertNull(as.getText(null, (String) null, (String[]) null));
+
+ assertNull(as.getText(null, (String) null, (List) null, (ValueStack) null));
+ assertNull(as.getText(null, (String) null, (String[]) null, (ValueStack) null));
+
+ assertNotNull(as.getLocale());
+ assertEquals(ActionContext.getContext().getLocale(), as.getLocale());
+
+ assertNull(as.getTexts()); // can not find a bundle
+ assertEquals("not.in.bundle", as.getText("not.in.bundle"));
+ }
+
+ public void testActionErrors() {
+ assertEquals(false, as.hasActionErrors());
+ assertEquals(0, as.getActionErrors().size());
+ as.addActionError("Damm");
+ assertEquals(1, as.getActionErrors().size());
+ assertEquals("Damm", as.getActionErrors().iterator().next());
+ assertEquals(true, as.hasActionErrors());
+ assertEquals(true, as.hasErrors());
+
+ as.clearErrorsAndMessages();
+ assertEquals(false, as.hasActionErrors());
+ assertEquals(false, as.hasErrors());
+ }
+
+ public void testActionMessages() {
+ assertEquals(false, as.hasActionMessages());
+ assertEquals(0, as.getActionMessages().size());
+ as.addActionMessage("Killroy was here");
+ assertEquals(1, as.getActionMessages().size());
+ assertEquals("Killroy was here", as.getActionMessages().iterator().next());
+ assertEquals(true, as.hasActionMessages());
+
+ assertEquals(false, as.hasActionErrors()); // does not count as a error
+ assertEquals(false, as.hasErrors()); // does not count as a error
+
+ as.clearErrorsAndMessages();
+ assertEquals(false, as.hasActionMessages());
+ assertEquals(false, as.hasErrors());
+ }
+
+ public void testFieldErrors() {
+ assertEquals(false, as.hasFieldErrors());
+ assertEquals(0, as.getFieldErrors().size());
+ as.addFieldError("username", "Admin is not allowed as username");
+ List<String> errors = as.getFieldErrors().get("username");
+ assertEquals(1, errors.size());
+ assertEquals("Admin is not allowed as username", errors.get(0));
+
+ assertEquals(true, as.hasFieldErrors());
+ assertEquals(true, as.hasErrors());
+
+ as.clearErrorsAndMessages();
+ assertEquals(false, as.hasFieldErrors());
+ assertEquals(false, as.hasErrors());
+ }
+
+ public void testDeprecated() throws Exception {
+ assertNotNull(as.getErrorMessages());
+ assertEquals(0, as.getErrorMessages().size());
+
+ assertNotNull(as.getErrors());
+ assertEquals(0, as.getErrors().size());
+ }
+
+ public void testLocale() {
+ Locale defLocale = Locale.getDefault();
+ ActionContext.getContext().setLocale(null);
+
+ // will never return null, if no locale is set then default is returned
+ assertNotNull(as.getLocale());
+ assertEquals(defLocale, as.getLocale());
+
+ ActionContext.getContext().setLocale(Locale.ITALY);
+ assertEquals(Locale.ITALY, as.getLocale());
+
+ ActionContext.setContext(new ActionContext(new HashMap<String, Object>()));
+ assertEquals(defLocale, as.getLocale()); // ActionContext will create a new context, when it was set to null before
+ }
+
+ public void testMyActionSupport() throws Exception {
+ ActionContext.getContext().setLocale(new Locale("da"));
+ MyActionSupport mas = new MyActionSupport();
+
+ assertEquals("santa", mas.doDefault());
+ assertNotNull(mas.getTexts());
+
+ assertEquals(false, mas.hasActionMessages());
+ mas.validate();
+ assertEquals(true, mas.hasActionMessages());
+ }
+
+ public void testSimpleGetTexts() throws Exception {
+ ActionContext.getContext().setLocale(new Locale("da"));
+ MyActionSupport mas = new MyActionSupport();
+
+ checkGetTexts(mas);
+ }
+
+ public void testSimpleGetTextsWithInjectedTextProvider() throws Exception {
+ ActionContext.getContext().setLocale(new Locale("da"));
+ MyActionSupport mas = new MyActionSupport();
+
+ TextProvider textProvider = container.getInstance(TextProvider.class, "system");
+
+ assertNotNull(textProvider);
+
+ container.inject(mas);
+
+ checkGetTexts(mas);
+ }
+
+ private void checkGetTexts(MyActionSupport mas) {
+ assertEquals("Hello World", mas.getText("hello"));
+ assertEquals("not.in.bundle", mas.getText("not.in.bundle"));
+
+ assertEquals("Hello World", mas.getText("hello", "this is default"));
+ assertEquals("this is default", mas.getText("not.in.bundle", "this is default"));
+
+ List nullList = null;
+ assertEquals("Hello World", mas.getText("hello", nullList));
+
+ String[] nullStrings = null;
+ assertEquals("Hello World", mas.getText("hello", nullStrings));
+ }
+
+ public void testGetTextsWithArgs() throws Exception {
+ ActionContext.getContext().setLocale(new Locale("da"));
+ MyActionSupport mas = new MyActionSupport();
+
+ assertEquals("Hello World", mas.getText("hello", "this is default", "from me")); // no args in bundle
+ assertEquals("Hello World from me", mas.getText("hello.0", "this is default", "from me"));
+ assertEquals("this is default", mas.getText("not.in.bundle", "this is default", "from me"));
+ assertEquals("this is default from me", mas.getText("not.in.bundle", "this is default {0}", "from me"));
+
+ assertEquals("not.in.bundle", mas.getText("not.in.bundle"));
+ }
+
+ public void testGetTextsWithListArgs() throws Exception {
+ ActionContext.getContext().setLocale(new Locale("da"));
+ MyActionSupport mas = new MyActionSupport();
+
+ List<Object> args = new ArrayList<Object>();
+ args.add("Santa");
+ args.add("loud");
+ assertEquals("Hello World", mas.getText("hello", "this is default", args)); // no args in bundle
+ assertEquals("Hello World Santa", mas.getText("hello.0", "this is default", args)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", mas.getText("hello.1", "this is default", args));
+
+ assertEquals("this is default", mas.getText("not.in.bundle", "this is default", args));
+ assertEquals("this is default Santa", mas.getText("not.in.bundle", "this is default {0}", args));
+ assertEquals("this is default Santa speaking loud", mas.getText("not.in.bundle", "this is default {0} speaking {1}", args));
+
+ assertEquals("Hello World", mas.getText("hello", args)); // no args in bundle
+ assertEquals("Hello World Santa", mas.getText("hello.0", args)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", mas.getText("hello.1", args));
+
+ assertEquals("not.in.bundle", mas.getText("not.in.bundle", args));
+
+ assertEquals("Hello World", mas.getText("hello", "this is default", (List) null));
+ assertEquals("this is default", mas.getText("not.in.bundle", "this is default", (List) null));
+ }
+
+ public void testGetTextsWithArrayArgs() throws Exception {
+ ActionContext.getContext().setLocale(new Locale("da"));
+ MyActionSupport mas = new MyActionSupport();
+
+ String[] args = {"Santa", "loud"};
+ assertEquals("Hello World", mas.getText("hello", "this is default", args)); // no args in bundle
+ assertEquals("Hello World Santa", mas.getText("hello.0", "this is default", args)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", mas.getText("hello.1", "this is default", args));
+
+ assertEquals("this is default", mas.getText("not.in.bundle", "this is default", args));
+ assertEquals("this is default Santa", mas.getText("not.in.bundle", "this is default {0}", args));
+ assertEquals("this is default Santa speaking loud", mas.getText("not.in.bundle", "this is default {0} speaking {1}", args));
+
+ assertEquals("Hello World", mas.getText("hello", args)); // no args in bundle
+ assertEquals("Hello World Santa", mas.getText("hello.0", args)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", mas.getText("hello.1", args));
+
+ assertEquals("not.in.bundle", mas.getText("not.in.bundle", args));
+
+ assertEquals("Hello World", mas.getText("hello", "this is default", (String[]) null));
+ assertEquals("this is default", mas.getText("not.in.bundle", "this is default", (String[]) null));
+ }
+
+ public void testGetTextsWithListAndStack() throws Exception {
+ ActionContext.getContext().setLocale(new Locale("da"));
+ MyActionSupport mas = new MyActionSupport();
+
+ ValueStack stack = ActionContext.getContext().getValueStack();
+
+ List<Object> args = new ArrayList<Object>();
+ args.add("Santa");
+ args.add("loud");
+ assertEquals("Hello World", mas.getText("hello", "this is default", args, stack)); // no args in bundle
+ assertEquals("Hello World Santa", mas.getText("hello.0", "this is default", args, stack)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", mas.getText("hello.1", "this is default", args, stack));
+
+ assertEquals("this is default", mas.getText("not.in.bundle", "this is default", args, stack));
+ assertEquals("this is default Santa", mas.getText("not.in.bundle", "this is default {0}", args, stack));
+ assertEquals("this is default Santa speaking loud", mas.getText("not.in.bundle", "this is default {0} speaking {1}", args, stack));
+ }
+
+ public void testGetTextsWithArrayAndStack() throws Exception {
+ ActionContext.getContext().setLocale(new Locale("da"));
+ MyActionSupport mas = new MyActionSupport();
+
+ ValueStack stack = ActionContext.getContext().getValueStack();
+
+ String[] args = {"Santa", "loud"};
+ assertEquals("Hello World", mas.getText("hello", "this is default", args, stack)); // no args in bundle
+ assertEquals("Hello World Santa", mas.getText("hello.0", "this is default", args, stack)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", mas.getText("hello.1", "this is default", args, stack));
+
+ assertEquals("this is default", mas.getText("not.in.bundle", "this is default", args, stack));
+ assertEquals("this is default Santa", mas.getText("not.in.bundle", "this is default {0}", args, stack));
+ assertEquals("this is default Santa speaking loud", mas.getText("not.in.bundle", "this is default {0} speaking {1}", args, stack));
+ }
+
+ public void testGetBundle() throws Exception {
+ ActionContext.getContext().setLocale(new Locale("da"));
+ MyActionSupport mas = new MyActionSupport();
+
+ ResourceBundle rb = ResourceBundle.getBundle(MyActionSupport.class.getName(), new Locale("da"));
+ assertEquals(rb, mas.getTexts(MyActionSupport.class.getName()));
+ }
+
+ private class MyActionSupport extends ActionSupport {
+
+ @Override
+ public String doDefault() throws Exception {
+ return "santa";
+ }
+
+ @Override
+ public void validate() {
+ super.validate(); // to have code coverage
+ addActionMessage("validation was called");
+ }
+ }
+
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/AnnotatedTestBean.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/AnnotatedTestBean.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/AnnotatedTestBean.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/AnnotatedTestBean.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,76 @@
+/*
+ * 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;
+
+import org.apache.struts2.xwork2.validator.annotations.IntRangeFieldValidator;
+import org.apache.struts2.xwork2.validator.annotations.RequiredStringValidator;
+import org.apache.struts2.xwork2.validator.annotations.Validations;
+
+import java.util.Date;
+
+
+/**
+ * AnnotatedTestBean
+ * @author Jason Carreira
+ * @author Rainer Hermanns
+ * Created Aug 4, 2003 12:39:53 AM
+ */
+public class AnnotatedTestBean {
+ //~ Instance fields ////////////////////////////////////////////////////////
+
+ private Date birth;
+ private String name;
+ private int count;
+
+ //~ Constructors ///////////////////////////////////////////////////////////
+
+ public AnnotatedTestBean() {
+ }
+
+ //~ Methods ////////////////////////////////////////////////////////////////
+
+ public void setBirth(Date birth) {
+ this.birth = birth;
+ }
+
+ public Date getBirth() {
+ return birth;
+ }
+
+ @Validations(
+ intRangeFields = {
+ @IntRangeFieldValidator(shortCircuit = true, min = "1", max="100", key="invalid.count", message = "Invalid Count!"),
+ @IntRangeFieldValidator(shortCircuit = true, min = "20", max="28", key="invalid.count.bad", message = "Smaller Invalid Count: ${count}")
+ }
+
+ )
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ @RequiredStringValidator(message = "You must enter a name.")
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ChainResultTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ChainResultTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ChainResultTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ChainResultTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,144 @@
+/*
+ * 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.
+ */
+/*
+ * Created on 28/02/2004
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.apache.struts2.xwork2;
+
+import com.mockobjects.dynamic.Mock;
+import org.apache.struts2.xwork2.config.providers.XmlConfigurationProvider;
+import org.apache.struts2.xwork2.util.ValueStack;
+import junit.framework.TestCase;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * @author CameronBraid
+ */
+public class ChainResultTest extends XWorkTestCase {
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ // ensure we're using the default configuration, not simple config
+ loadConfigurationProviders(new XmlConfigurationProvider("xwork-sample.xml"));
+ }
+
+ public void testNamespaceAndActionExpressionEvaluation() throws Exception {
+ ActionChainResult result = new ActionChainResult();
+ result.setActionName("${actionName}");
+ result.setNamespace("${namespace}");
+
+ String expectedActionName = "testActionName";
+ String expectedNamespace = "testNamespace";
+ Map<String, Object> values = new HashMap<String, Object>();
+ values.put("actionName", expectedActionName);
+ values.put("namespace", expectedNamespace);
+
+ ValueStack stack = ActionContext.getContext().getValueStack();
+ stack.push(values);
+
+ Mock actionProxyMock = new Mock(ActionProxy.class);
+ actionProxyMock.expect("execute");
+
+ ActionProxyFactory testActionProxyFactory = new NamespaceActionNameTestActionProxyFactory(expectedNamespace, expectedActionName, (ActionProxy) actionProxyMock.proxy());
+ result.setActionProxyFactory(testActionProxyFactory);
+ try {
+
+ ActionContext testContext = new ActionContext(stack.getContext());
+ ActionContext.setContext(testContext);
+ result.execute(null);
+ actionProxyMock.verify();
+ } finally {
+ ActionContext.setContext(null);
+ }
+ }
+
+ public void testRecursiveChain() throws Exception {
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", "InfiniteRecursionChain", null);
+
+ try {
+ proxy.execute();
+ fail("did not detected repeated chain to an action");
+ } catch (XWorkException e) {
+ }
+ }
+
+ private class NamespaceActionNameTestActionProxyFactory implements ActionProxyFactory {
+ private ActionProxy returnVal;
+ private String expectedActionName;
+ private String expectedNamespace;
+
+ public NamespaceActionNameTestActionProxyFactory(String expectedNamespace, String expectedActionName, ActionProxy returnVal) {
+ this.expectedNamespace = expectedNamespace;
+ this.expectedActionName = expectedActionName;
+ this.returnVal = returnVal;
+ }
+
+ public ActionProxy createActionProxy(String namespace, String actionName, Map<String, Object> extraContext) {
+ TestCase.assertEquals(expectedNamespace, namespace);
+ TestCase.assertEquals(expectedActionName, actionName);
+
+ return returnVal;
+ }
+
+ public ActionProxy createActionProxy(String namespace, String actionName, String methodName, Map<String, Object> extraContext) {
+ TestCase.assertEquals(expectedNamespace, namespace);
+ TestCase.assertEquals(expectedActionName, actionName);
+
+ return returnVal;
+ }
+
+ public ActionProxy createActionProxy(String namespace, String actionName, Map<String, Object> extraContext, boolean executeResult, boolean cleanupContext) {
+ TestCase.assertEquals(expectedNamespace, namespace);
+ TestCase.assertEquals(expectedActionName, actionName);
+
+ return returnVal;
+ }
+
+ public ActionProxy createActionProxy(String namespace, String actionName, String methodName, Map<String, Object> extraContext, boolean executeResult, boolean cleanupContext) {
+ TestCase.assertEquals(expectedNamespace, namespace);
+ TestCase.assertEquals(expectedActionName, actionName);
+
+ return returnVal;
+ }
+
+ public ActionProxy createActionProxy(ActionInvocation actionInvocation, String namespace, String actionName, String methodName, boolean executeResult, boolean cleanupContext) {
+ TestCase.assertEquals(expectedNamespace, namespace);
+ TestCase.assertEquals(expectedActionName, actionName);
+
+ return returnVal;
+ }
+
+ public ActionProxy createActionProxy(String namespace, String actionName, String method, boolean executeResult, boolean cleanupContext) {
+ TestCase.assertEquals(expectedNamespace, namespace);
+ TestCase.assertEquals(expectedActionName, actionName);
+
+ return returnVal;
+ }
+
+ public ActionProxy createActionProxy(ActionInvocation inv, String namespace, String actionName,
+ Map<String, Object> extraContext, boolean executeResult, boolean cleanupContext) throws Exception {
+ return null;
+ }
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/CompositeTextProviderTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/CompositeTextProviderTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/CompositeTextProviderTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/CompositeTextProviderTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,102 @@
+package org.apache.struts2.xwork2;
+
+import java.util.ArrayList;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+/**
+ * <code>CompositeTextProviderTest</code>
+ *
+ * @author <a href="mailto:hermanns@aixcept.de">Rainer Hermanns</a>
+ * @version $Id: CompositeTextProviderTest.java 1209415 2011-12-02 11:24:48Z lukaszlenart $
+ */
+public class CompositeTextProviderTest extends XWorkTestCase {
+
+
+ private CompositeTextProvider textProvider = null;
+
+
+ public void testGetText() throws Exception {
+ // we should get the text from the 1st text provider
+ assertEquals(textProvider.getText("name"), "1 name");
+ assertEquals(textProvider.getText("age"), "1 age");
+ assertEquals(textProvider.getText("dog"), "This is a dog");
+ assertEquals(textProvider.getText("cat"), "This is a cat");
+ assertEquals(textProvider.getText("car"), "This is a car");
+ assertEquals(textProvider.getText("bike"), "This is a bike");
+ assertEquals(textProvider.getText("someNonExistingKey"), "someNonExistingKey");
+ }
+
+
+ public void testGetTextWithDefaultValues() throws Exception {
+ assertEquals(textProvider.getText("name", "some default name"), "1 name");
+ assertEquals(textProvider.getText("age", "some default age"), "1 age");
+ assertEquals(textProvider.getText("no_such_key", "default value"), "default value");
+ assertEquals(textProvider.getText("dog", "some default dog"), "This is a dog");
+ assertEquals(textProvider.getText("cat", "some default cat"), "This is a cat");
+ assertEquals(textProvider.getText("car", "some default car"), "This is a car");
+ assertEquals(textProvider.getText("bike", "some default bike"), "This is a bike");
+ }
+
+
+ public void testGetTextWithDefaultValuesAndArgs() throws Exception {
+ assertEquals(textProvider.getText("goodnight", "say good night", "Adam"), "1 good night Adam");
+ assertEquals(textProvider.getText("goodnight", "say good night", new String[] { "Adam" }), "1 good night Adam");
+ assertEquals(textProvider.getText("goodnight", "say good night", new ArrayList<Object>() { {add("Adam");} }), "1 good night Adam");
+ assertEquals(textProvider.getText("goodmorning", "say good morning", new String[] { "Jack", "Jim" }), "1 good morning Jack and Jim");
+ assertEquals(textProvider.getText("goodmorning", "say good morning", new ArrayList<Object>() { { add("Jack"); add("Jim"); }}), "1 good morning Jack and Jim");
+ }
+
+ public void testHasKey() throws Exception {
+ assertTrue(textProvider.hasKey("name"));
+ assertTrue(textProvider.hasKey("age"));
+ assertTrue(textProvider.hasKey("cat"));
+ assertTrue(textProvider.hasKey("dog"));
+ assertTrue(textProvider.hasKey("car"));
+ assertTrue(textProvider.hasKey("bike"));
+ assertTrue(textProvider.hasKey("goodnight"));
+ assertTrue(textProvider.hasKey("goodmorning"));
+ assertFalse(textProvider.hasKey("nosuchkey"));
+ }
+
+ public void testGetResourceBundleByName() throws Exception {
+ assertNotNull(textProvider.getTexts("org.apache.struts2.xwork2.validator.CompositeTextProviderTestResourceBundle1"));
+ assertNotNull(textProvider.getTexts("org.apache.struts2.xwork2.validator.CompositeTextProviderTestResourceBundle2"));
+ assertNull(textProvider.getTexts("org.apache.struts2.xwork2.validator.CompositeTextProviderTestResourceBundle3"));
+ }
+
+ public void testGetResourceBundle() throws Exception {
+ assertNotNull(textProvider.getTexts());
+ // we should get the first resource bundle where 'car' and 'bike' has a i18n msg
+ assertNotNull(textProvider.getTexts().getString("car"));
+ assertNotNull(textProvider.getTexts().getString("bike"));
+ }
+
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ textProvider = new CompositeTextProvider(new TextProvider[] {
+ new TextProviderSupport(ResourceBundle.getBundle("org.apache.struts2.xwork2.validator.CompositeTextProviderTestResourceBundle1"),
+ new LocaleProvider() {
+ public Locale getLocale() {
+ return Locale.ENGLISH;
+ }
+ }),
+ new TextProviderSupport(ResourceBundle.getBundle("org.apache.struts2.xwork2.validator.CompositeTextProviderTestResourceBundle2"),
+ new LocaleProvider() {
+ public Locale getLocale() {
+ return Locale.ENGLISH;
+ }
+ })
+
+ });
+ }
+
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ textProvider = null;
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultActionInvocationTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultActionInvocationTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultActionInvocationTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultActionInvocationTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,59 @@
+package org.apache.struts2.xwork2;
+
+import org.apache.struts2.xwork2.config.entities.InterceptorMapping;
+import org.apache.struts2.xwork2.mock.MockActionProxy;
+import org.apache.struts2.xwork2.mock.MockInterceptor;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+
+/**
+ * A partial test of DefaultActionInvocation.
+ * Created to change interceptor chain logic.
+ *
+ * @author <a href="mailto:kristian at zenior.no">Kristian Rosenvold</a>
+ */
+public class DefaultActionInvocationTest extends XWorkTestCase {
+
+ /**
+ * Tests interceptor chain invoke.
+ *
+ * @throws Exception when action throws exception
+ */
+ public void testInvoke() throws Exception {
+ List<InterceptorMapping> interceptorMappings = new ArrayList<InterceptorMapping>();
+ MockInterceptor mockInterceptor1 = new MockInterceptor();
+ mockInterceptor1.setFoo("test1");
+ mockInterceptor1.setExpectedFoo("test1");
+ interceptorMappings.add(new InterceptorMapping("test1", mockInterceptor1));
+ MockInterceptor mockInterceptor2 = new MockInterceptor();
+ interceptorMappings.add(new InterceptorMapping("test2", mockInterceptor2));
+ mockInterceptor2.setFoo("test2");
+ mockInterceptor2.setExpectedFoo("test2");
+ MockInterceptor mockInterceptor3 = new MockInterceptor();
+ interceptorMappings.add(new InterceptorMapping("test3", mockInterceptor3));
+ mockInterceptor3.setFoo("test3");
+ mockInterceptor3.setExpectedFoo("test3");
+
+ DefaultActionInvocation defaultActionInvocation = new DefaultActionInvocationTester(interceptorMappings);
+ defaultActionInvocation.invoke();
+ assertTrue(mockInterceptor1.isExecuted());
+ assertTrue(mockInterceptor2.isExecuted());
+ assertTrue(mockInterceptor3.isExecuted());
+ }
+
+
+ class DefaultActionInvocationTester extends DefaultActionInvocation {
+ DefaultActionInvocationTester(List<InterceptorMapping> interceptorMappings) {
+ super(new HashMap<String, Object>(), false);
+ interceptors = interceptorMappings.iterator();
+ MockActionProxy actionProxy = new MockActionProxy();
+ actionProxy.setMethod("execute");
+ proxy = actionProxy;
+ action = new ActionSupport();
+ }
+ }
+
+}
\ No newline at end of file
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultClasstTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultClasstTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultClasstTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultClasstTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2002-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;
+
+import org.apache.struts2.xwork2.config.providers.XmlConfigurationProvider;
+
+/**
+ * <code>WildCardResultTest</code>
+ *
+ * @author <a href="mailto:hermanns@aixcept.de">Rainer Hermanns</a>
+ * @version $Id: DefaultClasstTest.java 1209415 2011-12-02 11:24:48Z lukaszlenart $
+ */
+public class DefaultClasstTest extends XWorkTestCase {
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ // ensure we're using the default configuration, not simple config
+ loadConfigurationProviders(new XmlConfigurationProvider("xwork-sample.xml"));
+ }
+
+ public void testWildCardEvaluation() throws Exception {
+ ActionProxy proxy = actionProxyFactory.createActionProxy("Abstract-crud", "edit", null);
+ assertEquals("org.apache.struts2.xwork2.SimpleAction", proxy.getConfig().getClassName());
+
+ proxy = actionProxyFactory.createActionProxy("/example", "edit", null);
+ assertEquals("org.apache.struts2.xwork2.ModelDrivenAction", proxy.getConfig().getClassName());
+
+
+ proxy = actionProxyFactory.createActionProxy("/example2", "override", null);
+ assertEquals("org.apache.struts2.xwork2.ModelDrivenAction", proxy.getConfig().getClassName());
+
+ proxy = actionProxyFactory.createActionProxy("/example2/subItem", "save", null);
+ assertEquals("org.apache.struts2.xwork2.ModelDrivenAction", proxy.getConfig().getClassName());
+
+ proxy = actionProxyFactory.createActionProxy("/example2", "list", null);
+ assertEquals("org.apache.struts2.xwork2.ModelDrivenAction", proxy.getConfig().getClassName());
+
+ proxy = actionProxyFactory.createActionProxy("/example3", "list", null);
+ assertEquals("org.apache.struts2.xwork2.SimpleAction", proxy.getConfig().getClassName());
+ }
+
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultTextProviderTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultTextProviderTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultTextProviderTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/DefaultTextProviderTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,147 @@
+/*
+ * 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;
+
+import org.apache.struts2.xwork2.util.LocalizedTextUtil;
+import junit.framework.TestCase;
+
+import java.util.*;
+
+/**
+ * Unit test for {@link DefaultTextProvider}.
+ *
+ * @author Claus Ibsen
+ */
+public class DefaultTextProviderTest extends TestCase {
+
+ private DefaultTextProvider tp;
+
+ public void testSimpleGetTexts() throws Exception {
+ assertEquals("Hello World", tp.getText("hello"));
+ assertEquals(null, tp.getText("not.in.bundle"));
+
+ assertEquals("Hello World", tp.getText("hello", "this is default"));
+ assertEquals("this is default", tp.getText("not.in.bundle", "this is default"));
+
+ List<Object> nullList = null;
+ assertEquals("Hello World", tp.getText("hello", nullList));
+
+ String[] nullStrings = null;
+ assertEquals("Hello World", tp.getText("hello", nullStrings));
+ }
+
+ public void testGetTextsWithArgs() throws Exception {
+ assertEquals("Hello World", tp.getText("hello", "this is default", "from me")); // no args in bundle
+ assertEquals("Hello World from me", tp.getText("hello.0", "this is default", "from me"));
+ assertEquals("this is default", tp.getText("not.in.bundle", "this is default", "from me"));
+ assertEquals("this is default from me", tp.getText("not.in.bundle", "this is default {0}", "from me"));
+
+ assertEquals(null, tp.getText("not.in.bundle"));
+ }
+
+ public void testGetTextsWithListArgs() throws Exception {
+ List<Object> args = new ArrayList<Object>();
+ args.add("Santa");
+ args.add("loud");
+ assertEquals("Hello World", tp.getText("hello", "this is default", args)); // no args in bundle
+ assertEquals("Hello World Santa", tp.getText("hello.0", "this is default", args)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", tp.getText("hello.1", "this is default", args));
+
+ assertEquals("this is default", tp.getText("not.in.bundle", "this is default", args));
+ assertEquals("this is default Santa", tp.getText("not.in.bundle", "this is default {0}", args));
+ assertEquals("this is default Santa speaking loud", tp.getText("not.in.bundle", "this is default {0} speaking {1}", args));
+
+ assertEquals("Hello World", tp.getText("hello", args)); // no args in bundle
+ assertEquals("Hello World Santa", tp.getText("hello.0", args)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", tp.getText("hello.1", args));
+
+ assertEquals(null, tp.getText("not.in.bundle", args));
+
+ assertEquals("Hello World", tp.getText("hello", "this is default", (List) null));
+ assertEquals("this is default", tp.getText("not.in.bundle", "this is default", (List) null));
+ }
+
+ public void testGetTextsWithArrayArgs() throws Exception {
+ String[] args = { "Santa", "loud" };
+ assertEquals("Hello World", tp.getText("hello", "this is default", args)); // no args in bundle
+ assertEquals("Hello World Santa", tp.getText("hello.0", "this is default", args)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", tp.getText("hello.1", "this is default", args));
+
+ assertEquals("this is default", tp.getText("not.in.bundle", "this is default", args));
+ assertEquals("this is default Santa", tp.getText("not.in.bundle", "this is default {0}", args));
+ assertEquals("this is default Santa speaking loud", tp.getText("not.in.bundle", "this is default {0} speaking {1}", args));
+
+ assertEquals("Hello World", tp.getText("hello", args)); // no args in bundle
+ assertEquals("Hello World Santa", tp.getText("hello.0", args)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", tp.getText("hello.1", args));
+
+ assertEquals(null, tp.getText("not.in.bundle", args));
+
+ assertEquals("Hello World", tp.getText("hello", "this is default", (String[]) null));
+ assertEquals("this is default", tp.getText("not.in.bundle", "this is default", (String[]) null));
+ }
+
+ public void testGetTextsWithListAndStack() throws Exception {
+ List<Object> args = new ArrayList<Object>();
+ args.add("Santa");
+ args.add("loud");
+ assertEquals("Hello World", tp.getText("hello", "this is default", args, null)); // no args in bundle
+ assertEquals("Hello World Santa", tp.getText("hello.0", "this is default", args, null)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", tp.getText("hello.1", "this is default", args, null));
+
+ assertEquals("this is default", tp.getText("not.in.bundle", "this is default", args, null));
+ assertEquals("this is default Santa", tp.getText("not.in.bundle", "this is default {0}", args, null));
+ assertEquals("this is default Santa speaking loud", tp.getText("not.in.bundle", "this is default {0} speaking {1}", args, null));
+ }
+
+ public void testGetTextsWithArrayAndStack() throws Exception {
+ String[] args = { "Santa", "loud" };
+ assertEquals("Hello World", tp.getText("hello", "this is default", args, null)); // no args in bundle
+ assertEquals("Hello World Santa", tp.getText("hello.0", "this is default", args, null)); // only 1 arg in bundle
+ assertEquals("Hello World. This is Santa speaking loud", tp.getText("hello.1", "this is default", args, null));
+
+ assertEquals("this is default", tp.getText("not.in.bundle", "this is default", args, null));
+ assertEquals("this is default Santa", tp.getText("not.in.bundle", "this is default {0}", args, null));
+ assertEquals("this is default Santa speaking loud", tp.getText("not.in.bundle", "this is default {0} speaking {1}", args, null));
+ }
+
+ public void testGetBundle() throws Exception {
+ assertNull(tp.getTexts()); // always returns null
+
+ ResourceBundle rb = ResourceBundle.getBundle(TextProviderSupportTest.class.getName(), Locale.CANADA);
+ assertEquals(rb, tp.getTexts(TextProviderSupportTest.class.getName()));
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ ActionContext ctx = new ActionContext(new HashMap<String, Object>());
+ ActionContext.setContext(ctx);
+ ctx.setLocale(Locale.CANADA);
+
+ LocalizedTextUtil.clearDefaultResourceBundles();
+ LocalizedTextUtil.addDefaultResourceBundle(DefaultTextProviderTest.class.getName());
+
+ tp = new DefaultTextProvider();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ ActionContext.setContext(null);
+ tp = null;
+ }
+
+
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ExternalReferenceAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ExternalReferenceAction.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ExternalReferenceAction.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ExternalReferenceAction.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+/*
+ * Created on Nov 11, 2003
+ *
+ * To change the template for this generated file go to Window - Preferences -
+ * Java - Code Generation - Code and Comments
+ */
+package org.apache.struts2.xwork2;
+
+
+/**
+ * @author Mike
+ * <p/>
+ * To change the template for this generated type comment go to Window -
+ * Preferences - Java - Code Generation - Code and Comments
+ */
+public class ExternalReferenceAction implements Action {
+
+ private Foo foo;
+
+
+ /**
+ * @param foo The foo to set.
+ */
+ public void setFoo(Foo foo) {
+ this.foo = foo;
+ }
+
+ /**
+ * @return Returns the foo.
+ */
+ public Foo getFoo() {
+ return foo;
+ }
+
+ public String execute() throws Exception {
+ return SUCCESS;
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/Foo.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/Foo.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/Foo.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/Foo.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.
+ */
+/*
+ * Created on Nov 11, 2003
+ *
+ * To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.apache.struts2.xwork2;
+
+
+/**
+ * @author Mike
+ * <p/>
+ * To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+public class Foo {
+
+ String name = null;
+
+
+ public Foo() {
+ name = "not set";
+ }
+
+ public Foo(String name) {
+ this.name = name;
+ }
+
+
+ public String getName() {
+ return name;
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/GenericsBean.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/GenericsBean.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/GenericsBean.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/GenericsBean.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,57 @@
+package org.apache.struts2.xwork2;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <code>GenericsBean</code>
+ *
+ * @author <a href="mailto:hermanns@aixcept.de">Rainer Hermanns</a>
+ * @version $Id: GenericsBean.java 1209415 2011-12-02 11:24:48Z lukaszlenart $
+ */
+public class GenericsBean {
+ private List<Double> blubb;
+ private List<Double> getterList;
+ private Map<Double, Integer> genericMap = new HashMap<Double, Integer>();
+ private Map<Double, List<Integer>> extendedMap = new HashMap<Double, List<Integer>>();
+
+ /**
+ * @return Returns the doubles.
+ */
+ public List<Double> getDoubles() {
+ return blubb;
+ }
+
+ /**
+ * @param doubles The doubles to set.
+ */
+ public void setDoubles(List<Double> doubles) {
+ this.blubb = doubles;
+ }
+
+ public Map<Double, Integer> getGenericMap() {
+ return genericMap;
+ }
+
+ public void setGenericMap(Map<Double, Integer> genericMap) {
+ this.genericMap = genericMap;
+ }
+
+ public List<Double> getGetterList() {
+ if ( getterList == null ) {
+ getterList = new ArrayList<Double>(1);
+ getterList.add(42.42);
+ }
+ return getterList;
+ }
+
+ public Map<Double, List<Integer>> getExtendedMap() {
+ return extendedMap;
+ }
+
+ public void setExtendedMap(Map<Double, List<Integer>> extendedMap) {
+ this.extendedMap = extendedMap;
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/LocaleAwareTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/LocaleAwareTest.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/LocaleAwareTest.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/LocaleAwareTest.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,68 @@
+/*
+ * 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;
+
+import org.apache.struts2.xwork2.config.providers.MockConfigurationProvider;
+import org.apache.struts2.xwork2.config.providers.XmlConfigurationProvider;
+import org.apache.struts2.xwork2.util.ValueStack;
+import org.apache.struts2.xwork2.util.ValueStackFactory;
+
+import java.util.Locale;
+
+
+/**
+ * LocaleAwareTest
+ *
+ * @author Jason Carreira
+ * Created Feb 10, 2003 6:13:13 PM
+ */
+public class LocaleAwareTest extends XWorkTestCase {
+
+ public void testGetText() {
+ try {
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", MockConfigurationProvider.FOO_ACTION_NAME, null);
+ ActionContext.getContext().setLocale(Locale.US);
+
+ TextProvider localeAware = (TextProvider) proxy.getAction();
+ assertEquals("Foo Range Message", localeAware.getText("foo.range"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ public void testLocaleGetText() {
+ try {
+ ActionProxy proxy = actionProxyFactory.createActionProxy("", MockConfigurationProvider.FOO_ACTION_NAME, null);
+ ActionContext.getContext().setLocale(Locale.GERMANY);
+
+ TextProvider localeAware = (TextProvider) proxy.getAction();
+ assertEquals("I don't know German", localeAware.getText("foo.range"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ loadConfigurationProviders(new XmlConfigurationProvider("xwork-test-beans.xml"), new MockConfigurationProvider());
+
+ ValueStack stack = container.getInstance(ValueStackFactory.class).createValueStack();
+ stack.getContext().put(ActionContext.CONTAINER, container);
+ ActionContext.setContext(new ActionContext(stack.getContext()));
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ModelDrivenAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ModelDrivenAction.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ModelDrivenAction.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ModelDrivenAction.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,45 @@
+/*
+ * 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;
+
+
+/**
+ * ModelDrivenAction
+ *
+ * @author Jason Carreira
+ * Created Apr 8, 2003 6:27:29 PM
+ */
+public class ModelDrivenAction extends ActionSupport implements ModelDriven {
+
+ private String foo;
+ private TestBean model = new TestBean();
+
+
+ public void setFoo(String foo) {
+ this.foo = foo;
+ }
+
+ public String getFoo() {
+ return foo;
+ }
+
+ /**
+ * @return the model to be pushed onto the ValueStack after the Action itself
+ */
+ public Object getModel() {
+ return model;
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ModelDrivenAnnotationAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ModelDrivenAnnotationAction.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ModelDrivenAnnotationAction.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ModelDrivenAnnotationAction.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,45 @@
+/*
+ * 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;
+
+/**
+ * ModelDrivenAnnotationAction
+ *
+ * @author Jason Carreira
+ * @author Rainer Hermanns
+ * Created Apr 8, 2003 6:27:29 PM
+ */
+public class ModelDrivenAnnotationAction extends ActionSupport implements ModelDriven {
+
+ private String foo;
+ private AnnotatedTestBean model = new AnnotatedTestBean();
+
+
+ public void setFoo(String foo) {
+ this.foo = foo;
+ }
+
+ public String getFoo() {
+ return foo;
+ }
+
+ /**
+ * @return the model to be pushed onto the ValueStack after the Action itself
+ */
+ public Object getModel() {
+ return model;
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/NestedAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/NestedAction.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/NestedAction.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/NestedAction.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,67 @@
+/*
+ * 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;
+
+import org.apache.struts2.xwork2.util.ValueStack;
+import junit.framework.Assert;
+
+
+/**
+ * NestedAction
+ *
+ * @author Jason Carreira
+ * Created Mar 5, 2003 3:08:19 PM
+ */
+public class NestedAction implements Action {
+
+ private String nestedProperty = ActionNestingTest.NESTED_VALUE;
+
+
+ public NestedAction() {
+ }
+
+
+ public String getNestedProperty() {
+ return nestedProperty;
+ }
+
+ public String execute() throws Exception {
+ Assert.fail();
+
+ return null;
+ }
+
+ public String noStack() {
+ ValueStack stack = ActionContext.getContext().getValueStack();
+ // Action + DefaultTextProvider on the stack
+ Assert.assertEquals(2, stack.size());
+ Assert.assertNull(stack.findValue(ActionNestingTest.KEY));
+ Assert.assertEquals(ActionNestingTest.NESTED_VALUE, stack.findValue(ActionNestingTest.NESTED_KEY));
+
+ return SUCCESS;
+ }
+
+ public String stack() {
+ ValueStack stack = ActionContext.getContext().getValueStack();
+ //DefaultTextProvider, NestedActionTest pushed on by the test, and the NestedAction
+ Assert.assertEquals(3, stack.size());
+ Assert.assertNotNull(stack.findValue(ActionNestingTest.KEY));
+ Assert.assertEquals(ActionContext.getContext().getValueStack().findValue(ActionNestingTest.KEY), ActionNestingTest.VALUE);
+ Assert.assertEquals(ActionNestingTest.NESTED_VALUE, stack.findValue(ActionNestingTest.NESTED_KEY));
+
+ return SUCCESS;
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ProxyInvocationAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ProxyInvocationAction.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ProxyInvocationAction.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ProxyInvocationAction.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,10 @@
+package org.apache.struts2.xwork2;
+
+/**
+ * Need by the ProxyInvocationTest
+ */
+public class ProxyInvocationAction extends ActionSupport implements ProxyInvocationInterface {
+ public String show() {
+ return "proxyResult";
+ }
+}
Added: struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ProxyInvocationInterface.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ProxyInvocationInterface.java?rev=1209569&view=auto
==============================================================================
--- struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ProxyInvocationInterface.java (added)
+++ struts/struts2/branches/STRUTS_3_X/xwork-core/src/test/java/org/apache/struts2/xwork2/ProxyInvocationInterface.java Fri Dec 2 16:33:03 2011
@@ -0,0 +1,8 @@
+package org.apache.struts2.xwork2;
+
+/**
+ * Need by the ProxyInvocationTest
+ */
+public interface ProxyInvocationInterface {
+ public String show();
+}