From ab98daf82624ca86e29c46a9d75ecda820e24e21 Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Sun, 8 Dec 2013 17:12:01 +0000 Subject: [PATCH] WW-4252 Uses TagUtils instead directly calling Dispatcher.getInstance() git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@1549067 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/struts2/dispatcher/Dispatcher.java | 9 +- .../struts2/util/StrutsTestCaseHelper.java | 8 +- .../views/jsp/ComponentTagSupport.java | 7 +- .../struts2/ClassInstantiationTest.java | 6 +- .../struts2/StrutsInternalTestCase.java | 19 +- .../struts2/TestConfigurationProvider.java | 38 ++- .../struts2/dispatcher/DispatcherTest.java | 2 +- .../dispatcher/PlainTextResultTest.java | 1 - .../freemarker/FreeMarkerResultTest.java | 24 +- .../struts2/views/jsp/AbstractTagTest.java | 5 +- .../struts2/views/jsp/ActionTagTest.java | 8 +- .../struts2/views/jsp/ui/FormTagTest.java | 315 +++--------------- .../struts2/views/jsp/ui/TooltipTest.java | 1 + .../struts2/views/jsp/ui/Formtag-11.txt | 16 +- .../struts2/views/jsp/ui/Formtag-13.txt | 2 +- .../apache/struts2/views/jsp/ui/Formtag-2.txt | 34 +- .../struts2/views/jsp/ui/Formtag-22.txt | 33 +- .../struts2/views/jsp/ui/Formtag-24.txt | 24 +- .../apache/struts2/StrutsJUnit4TestCase.java | 21 +- .../org/apache/struts2/StrutsTestCase.java | 14 +- .../portlet/dispatcher/Jsr168Dispatcher.java | 4 +- .../struts2/views/jsp/PortletUrlTagTest.java | 20 +- 22 files changed, 225 insertions(+), 386 deletions(-) diff --git a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java index df4ba8382..9c490ac32 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java @@ -442,14 +442,11 @@ public class Dispatcher { } private Container init_PreloadConfiguration() { - Configuration config = configurationManager.getConfiguration(); - Container container = config.getContainer(); + Container container = getContainer(); boolean reloadi18n = Boolean.valueOf(container.getInstance(String.class, StrutsConstants.STRUTS_I18N_RELOAD)); LocalizedTextUtil.setReloadBundles(reloadi18n); - ContainerHolder.store(container); - return container; } @@ -548,8 +545,7 @@ public class Dispatcher { String name = mapping.getName(); String method = mapping.getMethod(); - Configuration config = configurationManager.getConfiguration(); - ActionProxy proxy = config.getContainer().getInstance(ActionProxyFactory.class).createActionProxy( + ActionProxy proxy = getContainer().getInstance(ActionProxyFactory.class).createActionProxy( namespace, name, method, extraContext, true, false); request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, proxy.getInvocation().getStack()); @@ -664,7 +660,6 @@ public class Dispatcher { } extraContext.put(ActionContext.LOCALE, locale); - //extraContext.put(ActionContext.DEV_MODE, Boolean.valueOf(devMode)); extraContext.put(StrutsStatics.HTTP_REQUEST, request); extraContext.put(StrutsStatics.HTTP_RESPONSE, response); diff --git a/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java b/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java index 3243db41a..b19e43ed3 100644 --- a/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java +++ b/core/src/main/java/org/apache/struts2/util/StrutsTestCaseHelper.java @@ -24,6 +24,7 @@ package org.apache.struts2.util; import java.util.HashMap; import java.util.Map; +import com.opensymphony.xwork2.inject.Container; import org.apache.struts2.dispatcher.Dispatcher; import com.opensymphony.xwork2.ActionContext; @@ -53,10 +54,11 @@ public class StrutsTestCaseHelper { Dispatcher du = new Dispatcher(ctx, params); du.init(); Dispatcher.setInstance(du); - + // Reset the value stack - ValueStack stack = du.getContainer().getInstance(ValueStackFactory.class).createValueStack(); - stack.getContext().put(ActionContext.CONTAINER, du.getContainer()); + Container container = du.getContainer(); + ValueStack stack = container.getInstance(ValueStackFactory.class).createValueStack(); + stack.getContext().put(ActionContext.CONTAINER, container); ActionContext.setContext(new ActionContext(stack.getContext())); return du; diff --git a/core/src/main/java/org/apache/struts2/views/jsp/ComponentTagSupport.java b/core/src/main/java/org/apache/struts2/views/jsp/ComponentTagSupport.java index ca0b6e10e..03bdc7f81 100644 --- a/core/src/main/java/org/apache/struts2/views/jsp/ComponentTagSupport.java +++ b/core/src/main/java/org/apache/struts2/views/jsp/ComponentTagSupport.java @@ -25,8 +25,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.jsp.JspException; +import com.opensymphony.xwork2.ActionContext; import org.apache.struts2.components.Component; -import org.apache.struts2.dispatcher.Dispatcher; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.util.ValueStack; @@ -45,8 +45,9 @@ public abstract class ComponentTagSupport extends StrutsBodyTagSupport { } public int doStartTag() throws JspException { - component = getBean(getStack(), (HttpServletRequest) pageContext.getRequest(), (HttpServletResponse) pageContext.getResponse()); - Container container = Dispatcher.getInstance().getContainer(); + ValueStack stack = getStack(); + component = getBean(stack, (HttpServletRequest) pageContext.getRequest(), (HttpServletResponse) pageContext.getResponse()); + Container container = (Container) stack.getContext().get(ActionContext.CONTAINER); container.inject(component); populateParams(); diff --git a/core/src/test/java/org/apache/struts2/ClassInstantiationTest.java b/core/src/test/java/org/apache/struts2/ClassInstantiationTest.java index 1b893ae48..4a34076ae 100644 --- a/core/src/test/java/org/apache/struts2/ClassInstantiationTest.java +++ b/core/src/test/java/org/apache/struts2/ClassInstantiationTest.java @@ -13,11 +13,10 @@ public class ClassInstantiationTest extends StrutsInternalTestCase { public void testCompositeActionMapperInstantiationWithList() throws Exception { // given - Dispatcher du = initDispatcher(new HashMap() {{ + initDispatcher(new HashMap() {{ put(StrutsConstants.STRUTS_I18N_ENCODING, "utf-8"); put(StrutsConstants.STRUTS_MAPPER_COMPOSITE, "struts,restful"); }}); - Container container = du.getContainer(); // when ActionMapper instance = container.getInstance(ActionMapper.class, "composite"); @@ -28,10 +27,9 @@ public class ClassInstantiationTest extends StrutsInternalTestCase { public void testCompositeActionMapperInstantiationWithoutList() throws Exception { // given - Dispatcher du = initDispatcher(new HashMap() {{ + initDispatcher(new HashMap() {{ put(StrutsConstants.STRUTS_I18N_ENCODING, "utf-8"); }}); - Container container = du.getContainer(); // when try { diff --git a/core/src/test/java/org/apache/struts2/StrutsInternalTestCase.java b/core/src/test/java/org/apache/struts2/StrutsInternalTestCase.java index ed60e8b8d..0b9d1c49b 100644 --- a/core/src/test/java/org/apache/struts2/StrutsInternalTestCase.java +++ b/core/src/test/java/org/apache/struts2/StrutsInternalTestCase.java @@ -21,7 +21,10 @@ package org.apache.struts2; +import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.XWorkTestCase; +import com.opensymphony.xwork2.config.ConfigurationProvider; +import com.opensymphony.xwork2.util.XWorkTestCaseHelper; import com.opensymphony.xwork2.util.logging.LoggerFactory; import com.opensymphony.xwork2.util.logging.jdk.JdkLoggerFactory; import org.apache.struts2.dispatcher.Dispatcher; @@ -71,7 +74,9 @@ public abstract class StrutsInternalTestCase extends XWorkTestCase { logger.setLevel(Level.WARNING); LoggerFactory.setLoggerFactory(new JdkLoggerFactory()); } - + + protected Dispatcher dispatcher; + /** * Sets up the configuration settings, XWork configuration, and * message resources @@ -82,11 +87,12 @@ public abstract class StrutsInternalTestCase extends XWorkTestCase { } protected Dispatcher initDispatcher(Map params) { - Dispatcher du = StrutsTestCaseHelper.initDispatcher(new MockServletContext(), params); - configurationManager = du.getConfigurationManager(); + dispatcher = StrutsTestCaseHelper.initDispatcher(new MockServletContext(), params); + configurationManager = dispatcher.getConfigurationManager(); configuration = configurationManager.getConfiguration(); container = configuration.getContainer(); - return du; + container.inject(dispatcher); + return dispatcher; } /** @@ -104,6 +110,11 @@ public abstract class StrutsInternalTestCase extends XWorkTestCase { protected void tearDown() throws Exception { super.tearDown(); + // maybe someone else already destroyed Dispatcher + if (dispatcher != null && dispatcher.getConfigurationManager() != null) { + dispatcher.cleanup(); + dispatcher = null; + } StrutsTestCaseHelper.tearDown(); } diff --git a/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java b/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java index f623b6f20..cd42ed557 100644 --- a/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java +++ b/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java @@ -21,18 +21,7 @@ package org.apache.struts2; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; - -import org.apache.struts2.dispatcher.ServletDispatcherResult; -import org.apache.struts2.interceptor.TokenInterceptor; -import org.apache.struts2.interceptor.TokenSessionStoreInterceptor; - import com.opensymphony.xwork2.Action; -import com.opensymphony.xwork2.ActionChainResult; import com.opensymphony.xwork2.ActionProxyFactory; import com.opensymphony.xwork2.DefaultActionProxyFactory; import com.opensymphony.xwork2.ObjectFactory; @@ -47,6 +36,13 @@ import com.opensymphony.xwork2.inject.ContainerBuilder; import com.opensymphony.xwork2.interceptor.ParametersInterceptor; import com.opensymphony.xwork2.mock.MockResult; import com.opensymphony.xwork2.util.location.LocatableProperties; +import com.opensymphony.xwork2.validator.ValidationInterceptor; +import org.apache.struts2.dispatcher.ServletDispatcherResult; +import org.apache.struts2.interceptor.TokenInterceptor; +import org.apache.struts2.interceptor.TokenSessionStoreInterceptor; +import org.apache.struts2.views.jsp.ui.DoubleValidationAction; + +import java.util.HashMap; /** @@ -89,6 +85,15 @@ public class TestConfigurationProvider implements ConfigurationProvider { .build()) .build(); + ValidationInterceptor validationInterceptor = new ValidationInterceptor(); + validationInterceptor.setIncludeMethods("*"); + + ActionConfig doubleValidationActionConfig = new ActionConfig.Builder("", "doubleValidationAction", DoubleValidationAction.class.getName()) + .addResultConfig(new ResultConfig.Builder(Action.SUCCESS, ServletDispatcherResult.class.getName()) + .addParam("location", "success.jsp") + .build()) + .addInterceptor(new InterceptorMapping("validation", validationInterceptor)) + .build(); ActionConfig testActionConfig = new ActionConfig.Builder("", "", TestAction.class.getName()) .addResultConfig(new ResultConfig.Builder(Action.SUCCESS, ServletDispatcherResult.class.getName()) @@ -97,7 +102,6 @@ public class TestConfigurationProvider implements ConfigurationProvider { .addInterceptor(new InterceptorMapping("params", new ParametersInterceptor())) .build(); - ActionConfig tokenActionConfig = new ActionConfig.Builder("", "", TestAction.class.getName()) .addInterceptor(new InterceptorMapping("token", new TokenInterceptor())) .addResultConfig(new ResultConfig.Builder("invalid.token", MockResult.class.getName()).build()) @@ -115,6 +119,7 @@ public class TestConfigurationProvider implements ConfigurationProvider { PackageConfig defaultPackageConfig = new PackageConfig.Builder("") .addActionConfig(EXECUTION_COUNT_ACTION_NAME, executionCountActionConfig) .addActionConfig(TEST_ACTION_NAME, testActionConfig) + .addActionConfig("doubleValidationAction", doubleValidationActionConfig) .addActionConfig(TOKEN_ACTION_NAME, tokenActionConfig) .addActionConfig(TOKEN_SESSION_ACTION_NAME, tokenSessionActionConfig) .addActionConfig("testActionTagAction", new ActionConfig.Builder("", "", TestAction.class.getName()) @@ -132,6 +137,15 @@ public class TestConfigurationProvider implements ConfigurationProvider { .build(); configuration.addPackageConfig("namespacePackage", namespacePackageConfig); + + PackageConfig testActionWithNamespacePackageConfig = new PackageConfig.Builder("testActionNamespacePackages") + .namespace(TEST_NAMESPACE) + .addParent(defaultPackageConfig) + .addActionConfig(TEST_ACTION_NAME, new ActionConfig.Builder("", "", TestAction.class.getName()).build()) + .build(); + + configuration.addPackageConfig("testActionNamespacePackages", testActionWithNamespacePackageConfig); + } /** diff --git a/core/src/test/java/org/apache/struts2/dispatcher/DispatcherTest.java b/core/src/test/java/org/apache/struts2/dispatcher/DispatcherTest.java index 734ed67d2..691657a8c 100644 --- a/core/src/test/java/org/apache/struts2/dispatcher/DispatcherTest.java +++ b/core/src/test/java/org/apache/struts2/dispatcher/DispatcherTest.java @@ -172,7 +172,7 @@ public class DispatcherTest extends StrutsInternalTestCase { assertTrue(state.isInitialized); du.cleanup(); - + assertTrue(state.isDestroyed); } diff --git a/core/src/test/java/org/apache/struts2/dispatcher/PlainTextResultTest.java b/core/src/test/java/org/apache/struts2/dispatcher/PlainTextResultTest.java index bff66f169..b2fadaa66 100644 --- a/core/src/test/java/org/apache/struts2/dispatcher/PlainTextResultTest.java +++ b/core/src/test/java/org/apache/struts2/dispatcher/PlainTextResultTest.java @@ -165,7 +165,6 @@ public class PlainTextResultTest extends StrutsInternalTestCase { protected void tearDown() throws Exception { - super.tearDown(); stack = null; invocation = null; context = null; diff --git a/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java b/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java index 8dd918e01..62ab0eef3 100644 --- a/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java +++ b/core/src/test/java/org/apache/struts2/views/freemarker/FreeMarkerResultTest.java @@ -81,9 +81,7 @@ public class FreeMarkerResultTest extends StrutsInternalTestCase { request.setRequestURI("/tutorial/test2.action"); - Dispatcher dispatcher = Dispatcher.getInstance(); - ActionMapping mapping = dispatcher.getContainer().getInstance(ActionMapper.class).getMapping( - request, dispatcher.getConfigurationManager()); + ActionMapping mapping = container.getInstance(ActionMapper.class).getMapping(request, configurationManager); dispatcher.serviceAction(request, response, servletContext, mapping); assertEquals("beforenestedafter", stringWriter.toString()); } @@ -107,9 +105,7 @@ public class FreeMarkerResultTest extends StrutsInternalTestCase { request.setRequestURI("/tutorial/test5.action"); - Dispatcher dispatcher = Dispatcher.getInstance(); - ActionMapping mapping = dispatcher.getContainer().getInstance(ActionMapper.class).getMapping( - request, dispatcher.getConfigurationManager()); + ActionMapping mapping = container.getInstance(ActionMapper.class).getMapping(request, configurationManager); dispatcher.serviceAction(request, response, servletContext, mapping); assertEquals("beforenestedafter", stringWriter.toString()); } @@ -218,8 +214,7 @@ public class FreeMarkerResultTest extends StrutsInternalTestCase { request.setRequestURI("/tutorial/test6.action"); - Dispatcher dispatcher = Dispatcher.getInstance(); - ActionMapping mapping = dispatcher.getContainer().getInstance(ActionMapper.class).getMapping(request, dispatcher.getConfigurationManager()); + ActionMapping mapping = container.getInstance(ActionMapper.class).getMapping(request, configurationManager); dispatcher.serviceAction(request, response, servletContext, mapping); // TODO lukaszlenart: remove expectedJDK15 and if() after switching to Java 1.6 @@ -279,8 +274,7 @@ public class FreeMarkerResultTest extends StrutsInternalTestCase { request.setRequestURI("/tutorial/test7.action"); - Dispatcher dispatcher = Dispatcher.getInstance(); - ActionMapping mapping = dispatcher.getContainer().getInstance(ActionMapper.class).getMapping(request, dispatcher.getConfigurationManager()); + ActionMapping mapping = container.getInstance(ActionMapper.class).getMapping(request, configurationManager); dispatcher.serviceAction(request, response, servletContext, mapping); String expected = "\n" + "\n" @@ -310,8 +304,7 @@ public class FreeMarkerResultTest extends StrutsInternalTestCase { ServletActionContext.setServletContext(servletContext); request.setRequestURI("/tutorial/test8.action"); - Dispatcher dispatcher = Dispatcher.getInstance(); - ActionMapping mapping = dispatcher.getContainer().getInstance(ActionMapper.class).getMapping(request, dispatcher.getConfigurationManager()); + ActionMapping mapping = container.getInstance(ActionMapper.class).getMapping(request, configurationManager); dispatcher.serviceAction(request, response, servletContext, mapping); String expected = ""; assertEquals(expected, stringWriter.toString()); @@ -321,12 +314,15 @@ public class FreeMarkerResultTest extends StrutsInternalTestCase { super.setUp(); mgr = new FreemarkerManager(); mgr.setEncoding("UTF-8"); + DefaultFileManagerFactory factory = new DefaultFileManagerFactory(); container.inject(factory); mgr.setFileManagerFactory(factory); + FreemarkerThemeTemplateLoader themeLoader = new FreemarkerThemeTemplateLoader(); container.inject(themeLoader); mgr.setThemeTemplateLoader(themeLoader); + stringWriter = new StringWriter(); writer = new PrintWriter(stringWriter); response = new StrutsMockHttpServletResponse(); @@ -334,14 +330,17 @@ public class FreeMarkerResultTest extends StrutsInternalTestCase { request = new MockHttpServletRequest(); servletContext = new StrutsMockServletContext(); stack = ActionContext.getContext().getValueStack(); + context = new ActionContext(stack.getContext()); context.put(StrutsStatics.HTTP_RESPONSE, response); context.put(StrutsStatics.HTTP_REQUEST, request); context.put(StrutsStatics.SERVLET_CONTEXT, servletContext); + ServletActionContext.setServletContext(servletContext); ServletActionContext.setRequest(request); ServletActionContext.setResponse(response); servletContext.setAttribute(FreemarkerManager.CONFIG_SERVLET_CONTEXT_KEY, null); + invocation = new MockActionInvocation(); invocation.setStack(stack); invocation.setInvocationContext(context); @@ -360,4 +359,5 @@ public class FreeMarkerResultTest extends StrutsInternalTestCase { super.tearDown(); } + } diff --git a/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java b/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java index 5f5dd3a2a..98eadb6f1 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java @@ -77,10 +77,13 @@ public abstract class AbstractTagTest extends StrutsInternalTestCase { protected void setUp() throws Exception { super.setUp(); - /** * create our standard mock objects */ + createMocks(); + } + + protected void createMocks() { action = this.getAction(); stack = ActionContext.getContext().getValueStack(); context = stack.getContext(); diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java index 4a1f90d14..d31e498c4 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java @@ -300,12 +300,8 @@ public class ActionTagTest extends AbstractTagTest { protected void setUp() throws Exception { super.setUp(); - - initDispatcher(new HashMap() {{ put("configProviders", TestConfigurationProvider.class.getName()); }}); - - ActionContext actionContext = new ActionContext(context); - actionContext.setValueStack(stack); - ActionContext.setContext(actionContext); + initDispatcher(new HashMap() {{ put("configProviders", TestConfigurationProvider.class.getName()); }}); + createMocks(); } protected void tearDown() throws Exception { diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java index aadfd1159..9f4b5d237 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java @@ -21,12 +21,7 @@ package org.apache.struts2.views.jsp.ui; -import com.opensymphony.xwork2.Action; -import com.opensymphony.xwork2.ActionContext; -import com.opensymphony.xwork2.ActionInvocation; -import com.opensymphony.xwork2.ActionProxy; -import com.opensymphony.xwork2.ActionSupport; -import com.opensymphony.xwork2.ObjectFactory; +import com.opensymphony.xwork2.*; import com.opensymphony.xwork2.config.RuntimeConfiguration; import com.opensymphony.xwork2.config.entities.ActionConfig; import com.opensymphony.xwork2.config.entities.InterceptorMapping; @@ -89,7 +84,7 @@ public class FormTagTest extends AbstractUITagTest { } public void testFormWithContext() throws Exception { - request.setupGetContext("/somecontext"); + request.setupGetContext("/testNamespace"); FormTag tag = new FormTag(); tag.setTheme("xhtml"); @@ -205,63 +200,13 @@ public class FormTagTest extends AbstractUITagTest { */ public void testFormWithCustomOnsubmitEnabledWithValidateEnabled1() throws Exception { - final Container cont = container; - // used to determined if the form action needs js validation - configurationManager.setConfiguration(new com.opensymphony.xwork2.config.impl.DefaultConfiguration() { - private DefaultConfiguration self = this; - public Container getContainer() { - return new Container() { - public T inject(Class implementation) {return null;} - public void removeScopeStrategy() {} - public void setScopeStrategy(Strategy scopeStrategy) {} - public T getInstance(Class type, String name) {return null;} - public T getInstance(Class type) {return cont.getInstance(type);} - public Set getInstanceNames(Class type) {return null;} - - public void inject(Object o) { - cont.inject(o); - if (o instanceof Form) { - ((Form)o).setConfiguration(self); - } - } - }; - } - public RuntimeConfiguration getRuntimeConfiguration() { - return new RuntimeConfiguration() { - public ActionConfig getActionConfig(String namespace, String name) { - ActionConfig actionConfig = new ActionConfig("", name, "") { - public List getInterceptors() { - List interceptors = new ArrayList(); - - ValidationInterceptor validationInterceptor = new ValidationInterceptor(); - validationInterceptor.setIncludeMethods("*"); - - InterceptorMapping interceptorMapping = new InterceptorMapping("validation", validationInterceptor); - interceptors.add(interceptorMapping); - - return interceptors; - } - public String getClassName() { - return ActionSupport.class.getName(); - } - }; - return actionConfig; - } - - public Map getActionConfigs() { - return null; - } - }; - } - }); - - Dispatcher.getInstance().setConfigurationManager(configurationManager); + prepareMockInvocation(); FormTag tag = new FormTag(); tag.setPageContext(pageContext); tag.setName("myForm"); tag.setMethod("post"); - tag.setAction("myAction"); + tag.setAction("doubleValidationAction"); tag.setAcceptcharset("UTF-8"); tag.setEnctype("myEncType"); tag.setTitle("mytitle"); @@ -289,90 +234,31 @@ public class FormTagTest extends AbstractUITagTest { * "excludes" all methods. */ public void testFormWithCustomOnsubmitEnabledWithValidateEnabled2() throws Exception { + prepareMockInvocation(); - com.opensymphony.xwork2.config.Configuration originalConfiguration = configurationManager.getConfiguration(); - ObjectFactory originalObjectFactory = ObjectFactory.getObjectFactory(); + FormTag tag = new FormTag(); + tag.setPageContext(pageContext); + tag.setName("myForm"); + tag.setMethod("post"); + tag.setAction("testAction"); + tag.setAcceptcharset("UTF-8"); + tag.setEnctype("myEncType"); + tag.setTitle("mytitle"); + tag.setOnsubmit("submitMe()"); + tag.setValidate("true"); + tag.setNamespace(""); - final Container cont = container; - try { - // used to determined if the form action needs js validation - configurationManager.setConfiguration(new DefaultConfiguration() { - private DefaultConfiguration self = this; - public Container getContainer() { - return new Container() { - public T inject(Class implementation) {return null;} - public void removeScopeStrategy() {} - public void setScopeStrategy(Strategy scopeStrategy) {} - public T getInstance(Class type, String name) {return null;} - public T getInstance(Class type) {return cont.getInstance(type);} - public Set getInstanceNames(Class type) {return null;} + UpDownSelectTag t = new UpDownSelectTag(); + t.setPageContext(pageContext); + t.setName("myUpDownSelectTag"); + t.setList("{}"); - public void inject(Object o) { - cont.inject(o); - if (o instanceof Form) { - ((Form)o).setConfiguration(self); - } - } - }; - } - public RuntimeConfiguration getRuntimeConfiguration() { - return new RuntimeConfiguration() { - public ActionConfig getActionConfig(String namespace, String name) { - ActionConfig actionConfig = new ActionConfig("", name, "") { - public List getInterceptors() { - List interceptors = new ArrayList(); + tag.doStartTag(); + t.doStartTag(); + t.doEndTag(); + tag.doEndTag(); - ValidationInterceptor validationInterceptor = new ValidationInterceptor(); - validationInterceptor.setExcludeMethods("*"); - - InterceptorMapping interceptorMapping = new InterceptorMapping("validation", validationInterceptor); - interceptors.add(interceptorMapping); - - return interceptors; - } - public String getClassName() { - return ActionSupport.class.getName(); - } - }; - return actionConfig; - } - - public Map getActionConfigs() { - return null; - } - }; - } - }); - - Dispatcher.getInstance().setConfigurationManager(configurationManager); - - FormTag tag = new FormTag(); - tag.setPageContext(pageContext); - tag.setName("myForm"); - tag.setMethod("post"); - tag.setAction("myAction"); - tag.setAcceptcharset("UTF-8"); - tag.setEnctype("myEncType"); - tag.setTitle("mytitle"); - tag.setOnsubmit("submitMe()"); - tag.setValidate("true"); - tag.setNamespace(""); - - UpDownSelectTag t = new UpDownSelectTag(); - t.setPageContext(pageContext); - t.setName("myUpDownSelectTag"); - t.setList("{}"); - - tag.doStartTag(); - t.doStartTag(); - t.doEndTag(); - tag.doEndTag(); - - verify(FormTag.class.getResource("Formtag-11.txt")); - } - finally { - configurationManager.setConfiguration(originalConfiguration); - } + verify(FormTag.class.getResource("Formtag-11.txt")); } /** @@ -380,63 +266,12 @@ public class FormTagTest extends AbstractUITagTest { */ public void testFormWithCustomOnsubmitEnabledWithValidateEnabled3() throws Exception { - final Container cont = container; - // used to determined if the form action needs js validation - configurationManager.setConfiguration(new com.opensymphony.xwork2.config.impl.DefaultConfiguration() { - private DefaultConfiguration self = this; - public Container getContainer() { - return new Container() { - public T inject(Class implementation) {return null;} - public void removeScopeStrategy() {} - public void setScopeStrategy(Strategy scopeStrategy) {} - public T getInstance(Class type, String name) {return null;} - public T getInstance(Class type) {return cont.getInstance(type);} - public Set getInstanceNames(Class type) {return null;} - - public void inject(Object o) { - cont.inject(o); - if (o instanceof Form) { - ((Form)o).setConfiguration(self); - } - } - }; - } - public RuntimeConfiguration getRuntimeConfiguration() { - return new RuntimeConfiguration() { - public ActionConfig getActionConfig(String namespace, String name) { - ActionConfig actionConfig = new ActionConfig("", name, IntValidationAction.class.getName()) { - public List getInterceptors() { - List interceptors = new ArrayList(); - - ValidationInterceptor validationInterceptor = new ValidationInterceptor(); - validationInterceptor.setIncludeMethods("*"); - - InterceptorMapping interceptorMapping = new InterceptorMapping("validation", validationInterceptor); - interceptors.add(interceptorMapping); - - return interceptors; - } - public String getClassName() { - return IntValidationAction.class.getName(); - } - }; - return actionConfig; - } - - public Map getActionConfigs() { - return null; - } - }; - } - }); - - Dispatcher.getInstance().setConfigurationManager(configurationManager); - + prepareMockInvocation(); FormTag tag = new FormTag(); tag.setPageContext(pageContext); tag.setName("myForm"); tag.setMethod("post"); - tag.setAction("myAction"); + tag.setAction("doubleValidationAction"); tag.setAcceptcharset("UTF-8"); tag.setEnctype("myEncType"); tag.setTitle("mytitle"); @@ -462,64 +297,13 @@ public class FormTagTest extends AbstractUITagTest { * Tests the numbers are formatted correctly to not break the javascript, using doubles */ public void testFormWithCustomOnsubmitEnabledWithValidateEnabled4() throws Exception { - - final Container cont = container; - // used to determined if the form action needs js validation - configurationManager.setConfiguration(new com.opensymphony.xwork2.config.impl.DefaultConfiguration() { - private DefaultConfiguration self = this; - public Container getContainer() { - return new Container() { - public T inject(Class implementation) {return null;} - public void removeScopeStrategy() {} - public void setScopeStrategy(Strategy scopeStrategy) {} - public T getInstance(Class type, String name) {return null;} - public T getInstance(Class type) {return cont.getInstance(type);} - public Set getInstanceNames(Class type) {return null;} - - public void inject(Object o) { - cont.inject(o); - if (o instanceof Form) { - ((Form)o).setConfiguration(self); - } - } - }; - } - public RuntimeConfiguration getRuntimeConfiguration() { - return new RuntimeConfiguration() { - public ActionConfig getActionConfig(String namespace, String name) { - ActionConfig actionConfig = new ActionConfig("", name, DoubleValidationAction.class.getName()) { - public List getInterceptors() { - List interceptors = new ArrayList(); - - ValidationInterceptor validationInterceptor = new ValidationInterceptor(); - validationInterceptor.setIncludeMethods("*"); - - InterceptorMapping interceptorMapping = new InterceptorMapping("validation", validationInterceptor); - interceptors.add(interceptorMapping); - - return interceptors; - } - public String getClassName() { - return DoubleValidationAction.class.getName(); - } - }; - return actionConfig; - } - - public Map getActionConfigs() { - return null; - } - }; - } - }); - - Dispatcher.getInstance().setConfigurationManager(configurationManager); + prepareMockInvocation(); FormTag tag = new FormTag(); tag.setPageContext(pageContext); tag.setName("myForm"); tag.setMethod("post"); - tag.setAction("myAction"); + tag.setAction("doubleValidationAction"); tag.setAcceptcharset("UTF-8"); tag.setEnctype("myEncType"); tag.setTitle("mytitle"); @@ -541,6 +325,24 @@ public class FormTagTest extends AbstractUITagTest { verify(FormTag.class.getResource("Formtag-24.txt")); } + private void prepareMockInvocation() throws Exception { + ActionContext.getContext().setValueStack(stack); + + ActionConfig config = new ActionConfig.Builder("", "name", "").build(); + ActionInvocation invocation = EasyMock.createNiceMock(ActionInvocation.class); + ActionProxy proxy = EasyMock.createNiceMock(ActionProxy.class); + + EasyMock.expect(invocation.getProxy()).andReturn(proxy).anyTimes(); + EasyMock.expect(invocation.getAction()).andReturn(null).anyTimes(); + EasyMock.expect(invocation.invoke()).andReturn(Action.SUCCESS).anyTimes(); + EasyMock.expect(proxy.getMethod()).andReturn("execute").anyTimes(); + EasyMock.expect(proxy.getConfig()).andReturn(config).anyTimes(); + + EasyMock.replay(invocation); + EasyMock.replay(proxy); + + ActionContext.getContext().setActionInvocation(invocation); + } /** * This test with form tag validation disabled. @@ -582,6 +384,7 @@ public class FormTagTest extends AbstractUITagTest { put(StrutsConstants.STRUTS_ACTION_EXTENSION, "jspa"); put("configProviders", TestConfigurationProvider.class.getName()); }}); + createMocks(); request.setupGetServletPath("/testNamespace/testNamespaceAction"); FormTag tag = new FormTag(); @@ -637,7 +440,7 @@ public class FormTagTest extends AbstractUITagTest { } public void testFormTagForStackOverflowException1() throws Exception { - request.setRequestURI("/requestUri"); + request.setRequestURI("/testAction"); FormTag form1 = new FormTag(); form1.setPageContext(pageContext); @@ -804,25 +607,9 @@ public class FormTagTest extends AbstractUITagTest { @Override protected void setUp() throws Exception { super.setUp(); - initDispatcher(new HashMap(){{ + initDispatcher(new HashMap() {{ put("configProviders", TestConfigurationProvider.class.getName()); }}); - ActionContext.getContext().setValueStack(stack); - - ActionConfig config = new ActionConfig.Builder("", "name", "").build(); - ActionInvocation invocation = EasyMock.createNiceMock(ActionInvocation.class); - ActionProxy proxy = EasyMock.createNiceMock(ActionProxy.class); - - EasyMock.expect(invocation.getProxy()).andReturn(proxy).anyTimes(); - EasyMock.expect(invocation.getAction()).andReturn(null).anyTimes(); - EasyMock.expect(invocation.invoke()).andReturn(Action.SUCCESS).anyTimes(); - EasyMock.expect(proxy.getMethod()).andReturn("execute").anyTimes(); - EasyMock.expect(proxy.getConfig()).andReturn(config).anyTimes(); - - - EasyMock.replay(invocation); - EasyMock.replay(proxy); - - ActionContext.getContext().setActionInvocation(invocation); + createMocks(); } } diff --git a/core/src/test/java/org/apache/struts2/views/jsp/ui/TooltipTest.java b/core/src/test/java/org/apache/struts2/views/jsp/ui/TooltipTest.java index 429088f64..971ecce90 100644 --- a/core/src/test/java/org/apache/struts2/views/jsp/ui/TooltipTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ui/TooltipTest.java @@ -379,5 +379,6 @@ public class TooltipTest extends AbstractUITagTest { initDispatcher(new HashMap(){{ put("configProviders", TestConfigurationProvider.class.getName()); }}); + createMocks(); } } diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-11.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-11.txt index 727837ec1..e64dc79a3 100644 --- a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-11.txt +++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-11.txt @@ -1,19 +1,19 @@ -
+ @@ -23,10 +23,10 @@ diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-13.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-13.txt index 3c74d927d..418ab66cc 100644 --- a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-13.txt +++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-13.txt @@ -1,4 +1,4 @@ - +
- - +
-    -    -    +    +    +   
\ No newline at end of file diff --git a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-2.txt b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-2.txt index 1a4678cf8..8cd21021e 100644 --- a/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-2.txt +++ b/core/src/test/resources/org/apache/struts2/views/jsp/ui/Formtag-2.txt @@ -1,19 +1,19 @@ -
+ @@ -23,17 +23,17 @@ - +
- - +
-    -    -    +    +    +   
@@ -23,16 +23,16 @@ - +
- - +
-    -    -    +    +    +   
@@ -23,16 +23,16 @@
- - +
-    -    -    +    +    +