Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id F1EF3200B56 for ; Fri, 15 Jul 2016 15:18:46 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id F0568160A61; Fri, 15 Jul 2016 13:18:46 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 9C7DB160A79 for ; Fri, 15 Jul 2016 15:18:45 +0200 (CEST) Received: (qmail 34269 invoked by uid 500); 15 Jul 2016 13:18:30 -0000 Mailing-List: contact commits-help@struts.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@struts.apache.org Delivered-To: mailing list commits@struts.apache.org Received: (qmail 32923 invoked by uid 99); 15 Jul 2016 13:18:30 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 15 Jul 2016 13:18:30 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id E64BAEE686; Fri, 15 Jul 2016 13:18:29 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: lukaszlenart@apache.org To: commits@struts.apache.org Date: Fri, 15 Jul 2016 13:19:13 -0000 Message-Id: <2e800ee9be0c4d4f81ca1acc049b7d64@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [46/50] [abbrv] struts git commit: Merge remote-tracking branch 'upstream/master' into http-parameters archived-at: Fri, 15 Jul 2016 13:18:47 -0000 Merge remote-tracking branch 'upstream/master' into http-parameters Conflicts: core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java core/src/test/java/com/opensymphony/xwork2/interceptor/I18nInterceptorTest.java core/src/test/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptorTest.java core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/bb21dbe4 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/bb21dbe4 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/bb21dbe4 Branch: refs/heads/master Commit: bb21dbe4929cf88a4c2565fdbd359d0e0b067e1f Parents: abd8c6b fc2179c Author: Lukasz Lenart Authored: Sat Mar 12 16:03:42 2016 +0100 Committer: Lukasz Lenart Committed: Sat Mar 12 16:03:42 2016 +0100 ---------------------------------------------------------------------- .gitignore | 1 - apps/portlet/pom.xml | 2 +- .../struts2/portlet/test/BasePortletTest.java | 6 +- .../portlet/test/Struts2PortletTest.java | 2 + .../org/demo/rest/example/IndexController.java | 16 ++ apps/rest-showcase/src/main/webapp/index.jsp | 2 - .../showcase/tiles/TilesAnnotationsAction.java | 40 +++ apps/showcase/src/main/webapp/WEB-INF/tiles.xml | 10 +- .../src/main/webapp/WEB-INF/tiles/body.jsp | 3 + .../webapp/WEB-INF/tiles/layout-annotations.jsp | 14 ++ .../WEB-INF/validation/ajaxFormSubmit.jsp | 7 +- assembly/pom.xml | 5 - assembly/src/main/assembly/all.xml | 4 - assembly/src/main/assembly/docs.xml | 4 - bom/pom.xml | 5 - .../xwork2/DefaultActionInvocation.java | 7 +- .../com/opensymphony/xwork2/XWorkConstants.java | 1 + ...ervletContextAwareConfigurationProvider.java | 32 +++ .../xwork2/config/entities/ActionConfig.java | 1 + .../xwork2/config/entities/AllowedMethods.java | 30 +++ .../xwork2/config/entities/PackageConfig.java | 2 +- .../xwork2/config/impl/ActionConfigMatcher.java | 1 + .../providers/XmlConfigurationProvider.java | 32 +-- .../interceptor/DefaultWorkflowInterceptor.java | 4 +- .../xwork2/interceptor/I18nInterceptor.java | 5 + .../interceptor/ParametersInterceptor.java | 29 +-- .../com/opensymphony/xwork2/ognl/OgnlUtil.java | 15 +- .../xwork2/ognl/OgnlValueStack.java | 1 + .../xwork2/ognl/SecurityMemberAccess.java | 16 +- .../xwork2/util/LocalizedTextUtil.java | 31 ++- .../validator/DelegatingValidatorContext.java | 7 +- .../org/apache/struts2/StrutsConstants.java | 1 + .../apache/struts2/components/Component.java | 6 +- .../org/apache/struts2/components/UIBean.java | 4 +- .../template/VelocityTemplateEngine.java | 2 +- .../config/DefaultBeanSelectionProvider.java | 1 + .../apache/struts2/dispatcher/Dispatcher.java | 3 + .../struts2/dispatcher/PrepareOperations.java | 2 + .../multipart/JakartaMultiPartRequest.java | 12 +- .../struts2/interceptor/CookieInterceptor.java | 12 +- .../interceptor/MessageStoreInterceptor.java | 58 +---- .../MessageStorePreResultListener.java | 95 +++++++ .../org/apache/struts2/util/ComponentUtils.java | 9 +- .../struts2/views/jsp/ui/AbstractUITag.java | 2 +- core/src/main/resources/struts-default.xml | 20 +- .../resources/template/simple/checkboxlist.ftl | 7 +- .../main/resources/template/simple/radiomap.ftl | 5 +- .../xwork2/DefaultActionInvocationTest.java | 3 + .../config/entities/ActionConfigTest.java | 4 +- .../config/entities/AllowedMethodsTest.java | 15 ++ .../config/impl/ActionConfigMatcherTest.java | 16 +- ...ConfigurationProviderAllowedMethodsTest.java | 38 ++- .../XmlConfigurationProviderResultsTest.java | 54 ++++ .../xwork2/config/providers/XmlHelperTest.java | 234 ++++++----------- .../xwork2/interceptor/I18nInterceptorTest.java | 16 +- .../ParameterRemoverInterceptorTest.java | 23 +- .../PrefixMethodInvocationUtilTest.java | 135 ++++------ .../interceptor/PrepareInterceptorTest.java | 83 +++--- .../xwork2/ognl/SecurityMemberAccessTest.java | 20 +- .../validator/VisitorFieldValidatorTest.java | 2 +- .../org/apache/struts2/RequestUtilsTest.java | 66 +++-- .../interceptor/CookieInterceptorTest.java | 124 ++++----- .../interceptor/I18nInterceptorTest.java | 16 +- .../MessageStoreInterceptorTest.java | 183 +++----------- .../MessageStorePreResultListenerTest.java | 252 +++++++++++++++++++ .../ServletConfigInterceptorTest.java | 70 +++--- .../struts2/result/VelocityResultTest.java | 4 +- .../apache/struts2/util/ComponentUtilsTest.java | 44 ++++ .../apache/struts2/views/jsp/ActionTagTest.java | 3 +- .../struts2/views/jsp/IncludeTagTest.java | 50 ++-- .../struts2/views/util/ResourceUtilTest.java | 24 +- .../com/opensymphony/xwork2/TestBean.properties | 2 +- .../providers/xwork-test-allowed-methods.xml | 6 +- .../providers/xwork-test-result-names.xml | 48 ++++ plugins/convention/pom.xml | 5 - .../convention/DefaultResultMapBuilder.java | 20 +- .../PackageBasedActionConfigBuilder.java | 6 +- .../convention/annotation/AllowedMethods.java | 2 +- .../struts2/convention/annotation/Result.java | 2 +- .../ConventionUnknownHandlerTest.java | 6 +- .../convention/DefaultResultMapBuilderTest.java | 58 +++++ .../PackageBasedActionConfigBuilderTest.java | 4 +- .../actions/allowedmethods/package-info.java | 2 +- .../result/ActionLevelResultsNamesAction.java | 47 ++++ plugins/javatemplates/pom.xml | 6 +- .../views/java/simple/TextFieldHandler.java | 4 +- .../struts2/views/java/simple/AbstractTest.java | 36 +-- .../rest/DefaultContentTypeHandlerManager.java | 69 ++++- .../apache/struts2/rest/RestActionMapper.java | 7 +- .../DefaultContentTypeHandlerManagerTest.java | 42 ++++ .../struts2/rest/RestActionMapperTest.java | 41 ++- .../sitemesh/VelocityDecoratorServlet.java | 53 ++-- .../tiles/StrutsTilesAnnotationProcessor.java | 177 +++++++++++++ .../tiles/annotation/TilesAddAttribute.java | 30 +++ .../tiles/annotation/TilesAddListAttribute.java | 28 +++ .../tiles/annotation/TilesDefinition.java | 66 +++++ .../tiles/annotation/TilesDefinitions.java | 36 +++ .../tiles/annotation/TilesPutAttribute.java | 32 +++ .../tiles/annotation/TilesPutListAttribute.java | 32 +++ .../apache/struts2/views/tiles/TilesResult.java | 69 ++++- .../StrutsTilesAnnotationProcessorTest.java | 147 +++++++++++ .../TilesTestActionMultipleAnnotations.java | 12 + .../tiles/TilesTestActionSingleAnnotation.java | 49 ++++ ...TilesTestActionSingleAnnotationAllEmpty.java | 28 +++ pom.xml | 23 +- .../VisitorValidatorTestAction.properties | 1 + 106 files changed, 2308 insertions(+), 941 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/bb21dbe4/core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java ---------------------------------------------------------------------- diff --cc core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java index 3d1e6f2,cf4995e..acc0d7b --- a/core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java +++ b/core/src/main/java/com/opensymphony/xwork2/interceptor/I18nInterceptor.java @@@ -20,9 -20,8 +20,10 @@@ import com.opensymphony.xwork2.ActionIn import com.opensymphony.xwork2.util.LocalizedTextUtil; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.struts2.dispatcher.Parameter; +import org.apache.struts2.dispatcher.HttpParameters; + import java.util.Arrays; import java.util.Locale; import java.util.Map; http://git-wip-us.apache.org/repos/asf/struts/blob/bb21dbe4/core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java ---------------------------------------------------------------------- diff --cc core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java index 67288ff,f90e8c3..80aa363 --- a/core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java +++ b/core/src/main/java/com/opensymphony/xwork2/interceptor/ParametersInterceptor.java @@@ -168,10 -169,11 +168,10 @@@ public class ParametersInterceptor exte acceptableParameters = new TreeMap<>(); } - for (Map.Entry entry : params.entrySet()) { - String name = entry.getKey(); - Object value = entry.getValue(); + for (String name : params.getNames()) { + Parameter parameter = params.get(name); - if (isAcceptableParameter(name, action) && isAcceptableValue(parameter.getValue())) { + if (isAcceptableParameter(name, action)) { - acceptableParameters.put(name, entry.getValue()); + acceptableParameters.put(name, parameter); } } http://git-wip-us.apache.org/repos/asf/struts/blob/bb21dbe4/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/bb21dbe4/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java ---------------------------------------------------------------------- diff --cc core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java index 341615d,4b7220e..f3e8cb5 --- a/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/MessageStoreInterceptor.java @@@ -27,9 -27,7 +27,8 @@@ import com.opensymphony.xwork2.intercep import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.struts2.dispatcher.HttpParameters; - import org.apache.struts2.ServletActionContext; import org.apache.struts2.result.ServletRedirectResult; import java.util.ArrayList; http://git-wip-us.apache.org/repos/asf/struts/blob/bb21dbe4/core/src/test/java/com/opensymphony/xwork2/interceptor/I18nInterceptorTest.java ---------------------------------------------------------------------- diff --cc core/src/test/java/com/opensymphony/xwork2/interceptor/I18nInterceptorTest.java index 2a4d98c,17c27aa..f4dfa93 --- a/core/src/test/java/com/opensymphony/xwork2/interceptor/I18nInterceptorTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/interceptor/I18nInterceptorTest.java @@@ -83,12 -82,12 +83,12 @@@ public class I18nInterceptorTest extend } public void testCountryOnlyLocale() throws Exception { - prepare(I18nInterceptor.DEFAULT_PARAMETER, "DK"); - params.put(I18nInterceptor.DEFAULT_PARAMETER, "NL"); ++ prepare(I18nInterceptor.DEFAULT_PARAMETER, "NL"); interceptor.intercept(mai); - assertNull(params.get(I18nInterceptor.DEFAULT_PARAMETER)); // should have been removed + assertFalse(mai.getInvocationContext().getParameters().get(I18nInterceptor.DEFAULT_PARAMETER).isDefined()); // should have been removed - Locale denmark = new Locale("DK"); + Locale denmark = new Locale("NL"); assertNotNull(session.get(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE)); // should be stored here assertEquals(denmark, session.get(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE)); // should create a locale object } @@@ -105,12 -104,12 +105,12 @@@ } public void testWithVariant() throws Exception { - prepare(I18nInterceptor.DEFAULT_PARAMETER, "fr_CA_xx"); - params.put(I18nInterceptor.DEFAULT_PARAMETER, "ja_JP_JP"); ++ prepare(I18nInterceptor.DEFAULT_PARAMETER, "ja_JP_JP"); interceptor.intercept(mai); - assertNull(params.get(I18nInterceptor.DEFAULT_PARAMETER)); // should have been removed + assertFalse(mai.getInvocationContext().getParameters().get(I18nInterceptor.DEFAULT_PARAMETER).isDefined()); // should have been removed - Locale variant = new Locale("fr", "CA", "xx"); + Locale variant = new Locale("ja", "JP", "JP"); Locale locale = (Locale) session.get(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE); assertNotNull(locale); // should be stored here assertEquals(variant, locale); @@@ -118,13 -117,13 +118,13 @@@ } public void testWithVariantRequestOnly() throws Exception { - prepare(I18nInterceptor.DEFAULT_REQUESTONLY_PARAMETER, "fr_CA_xx"); - params.put(I18nInterceptor.DEFAULT_REQUESTONLY_PARAMETER, "ja_JP_JP"); ++ prepare(I18nInterceptor.DEFAULT_REQUESTONLY_PARAMETER, "ja_JP_JP"); interceptor.intercept(mai); - assertNull(params.get(I18nInterceptor.DEFAULT_PARAMETER)); // should have been removed + assertFalse(mai.getInvocationContext().getParameters().get(I18nInterceptor.DEFAULT_PARAMETER).isDefined()); // should have been removed assertNull(session.get(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE)); - Locale variant = new Locale("fr", "CA", "xx"); + Locale variant = new Locale("ja", "JP", "JP"); Locale locale = mai.getInvocationContext().getLocale(); assertNotNull(locale); // should be stored here assertEquals(variant, locale); http://git-wip-us.apache.org/repos/asf/struts/blob/bb21dbe4/core/src/test/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptorTest.java ---------------------------------------------------------------------- diff --cc core/src/test/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptorTest.java index eeaec7c,720ef93..5412fb8 --- a/core/src/test/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptorTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/interceptor/ParameterRemoverInterceptorTest.java @@@ -4,8 -4,7 +4,9 @@@ import com.opensymphony.xwork2.ActionCo import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.ActionSupport; import junit.framework.TestCase; +import org.apache.struts2.dispatcher.HttpParameters; +import org.easymock.MockControl; + import static org.easymock.EasyMock.*; import java.util.LinkedHashMap; import java.util.Map; @@@ -34,30 -31,31 +33,30 @@@ public class ParameterRemoverIntercepto } public void testInterception1() throws Exception { - contextMap.put(ActionContext.PARAMETERS, new LinkedHashMap() { - private static final long serialVersionUID = 0L; + contextMap.put(ActionContext.PARAMETERS, HttpParameters.create(new LinkedHashMap() { { - put("param1", new String[] { "paramValue1" }); - put("param2", new String[] { "paramValue2" }); - put("param3", new String[] { "paramValue3" }); - put("param", new String[] { "paramValue" }); + put("param1", new String[]{"paramValue1"}); + put("param2", new String[]{"paramValue2"}); + put("param3", new String[]{"paramValue3"}); + put("param", new String[]{"paramValue"}); } - }); + }).build()); - actionInvocationControl.replay(); + replay(actionInvocation); ParameterRemoverInterceptor interceptor = new ParameterRemoverInterceptor(); interceptor.setParamNames("param1,param2"); interceptor.setParamValues("paramValue1,paramValue2"); interceptor.intercept(actionInvocation); - Map params = (Map) contextMap.get(ActionContext.PARAMETERS); - assertEquals(params.size(), 2); - assertTrue(params.containsKey("param3")); - assertTrue(params.containsKey("param")); - assertEquals(((String[])params.get("param3"))[0], "paramValue3"); - assertEquals(((String[])params.get("param"))[0], "paramValue"); + HttpParameters params = (HttpParameters) contextMap.get(ActionContext.PARAMETERS); + assertEquals(params.getNames().size(), 2); + assertTrue(params.contains("param3")); + assertTrue(params.contains("param")); + assertEquals(params.get("param3").getValue(), "paramValue3"); + assertEquals(params.get("param").getValue(), "paramValue"); - actionInvocationControl.verify(); + verify(actionInvocation); } @@@ -67,19 -66,19 +66,19 @@@ put("param1", new String[] { "paramValue2" }); put("param2", new String[] { "paramValue1" }); } - }); + }).build()); - actionInvocationControl.replay(); + replay(actionInvocation); ParameterRemoverInterceptor interceptor = new ParameterRemoverInterceptor(); interceptor.setParamNames("param1,param2"); interceptor.setParamValues("paramValue1,paramValue2"); interceptor.intercept(actionInvocation); - Map params = (Map) contextMap.get(ActionContext.PARAMETERS); - assertEquals(params.size(), 0); + HttpParameters params = (HttpParameters) contextMap.get(ActionContext.PARAMETERS); + assertEquals(params.getNames().size(), 0); - actionInvocationControl.verify(); + verify(actionInvocation); } @@@ -89,23 -89,23 +88,23 @@@ put("param1", new String[] { "paramValueOne" }); put("param2", new String[] { "paramValueTwo" }); } - }); + }).build()); - actionInvocationControl.replay(); + replay(actionInvocation); ParameterRemoverInterceptor interceptor = new ParameterRemoverInterceptor(); interceptor.setParamNames("param1,param2"); interceptor.setParamValues("paramValue1,paramValue2"); interceptor.intercept(actionInvocation); - Map params = (Map) contextMap.get(ActionContext.PARAMETERS); - assertEquals(params.size(), 2); - assertTrue(params.containsKey("param1")); - assertTrue(params.containsKey("param2")); - assertEquals(((String[])params.get("param1"))[0], "paramValueOne"); - assertEquals(((String[])params.get("param2"))[0], "paramValueTwo"); + HttpParameters params = (HttpParameters) contextMap.get(ActionContext.PARAMETERS); + assertEquals(params.getNames().size(), 2); + assertTrue(params.contains("param1")); + assertTrue(params.contains("param2")); + assertEquals(params.get("param1").getValue(), "paramValueOne"); + assertEquals(params.get("param2").getValue(), "paramValueTwo"); - actionInvocationControl.verify(); + verify(actionInvocation); } class SampleAction extends ActionSupport { http://git-wip-us.apache.org/repos/asf/struts/blob/bb21dbe4/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java ---------------------------------------------------------------------- diff --cc core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java index a3784d3,9fc8396..1e73955 --- a/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java +++ b/core/src/test/java/org/apache/struts2/interceptor/MessageStoreInterceptorTest.java @@@ -27,9 -27,10 +27,11 @@@ import java.util.LinkedHashMap import java.util.List; import java.util.Map; + import com.opensymphony.xwork2.ActionProxy; + import com.opensymphony.xwork2.interceptor.PreResultListener; import org.apache.struts2.ServletActionContext; import org.apache.struts2.StrutsInternalTestCase; +import org.apache.struts2.dispatcher.HttpParameters; import org.apache.struts2.result.ServletActionRedirectResult; import org.easymock.EasyMock; @@@ -65,81 -69,24 +70,22 @@@ public class MessageStoreInterceptorTes interceptor.setAllowRequestParameterSwitch(true); interceptor.setOperationMode(MessageStoreInterceptor.STORE_MODE); - - Map sessionMap = new LinkedHashMap(); - Map paramMap = new LinkedHashMap(); -- ActionSupport action = new ActionSupport(); action.addActionError("some action error 1"); - action.addActionError("some action error 2"); action.addActionMessage("some action message 1"); - action.addActionMessage("some action message 2"); - action.addFieldError("field1", "some field error 1"); action.addFieldError("field2", "some field error 2"); ActionContext actionContext = new ActionContext(new HashMap()); - actionContext.put(ActionContext.PARAMETERS, paramMap); + actionContext.setParameters(HttpParameters.createEmpty().build()); - actionContext.setSession(sessionMap); - - // Mock (ActionInvocation) - ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class); - mockActionInvocation.getInvocationContext(); - EasyMock.expectLastCall().andReturn(actionContext); - EasyMock.expectLastCall().anyTimes(); - - mockActionInvocation.invoke(); - EasyMock.expectLastCall().andReturn(Action.SUCCESS); - - mockActionInvocation.getAction(); - EasyMock.expectLastCall().andReturn(action); - - mockActionInvocation.getResult(); - EasyMock.expectLastCall().andReturn(new ServletActionRedirectResult()); - - EasyMock.replay(mockActionInvocation); - interceptor.init(); - interceptor.intercept(mockActionInvocation); - interceptor.destroy(); - - assertEquals(sessionMap.size(), 3); - assertTrue(sessionMap.containsKey(MessageStoreInterceptor.actionErrorsSessionKey)); - assertTrue(sessionMap.containsKey(MessageStoreInterceptor.actionMessagesSessionKey)); - assertTrue(sessionMap.containsKey(MessageStoreInterceptor.fieldErrorsSessionKey)); - - List actionErrors = (List) sessionMap.get(MessageStoreInterceptor.actionErrorsSessionKey); - List actionMessages = (List) sessionMap.get(MessageStoreInterceptor.actionMessagesSessionKey); - Map fieldErrors = (Map) sessionMap.get(MessageStoreInterceptor.fieldErrorsSessionKey); - - assertEquals(actionErrors.size(), 2); - assertEquals(actionMessages.size(), 2); - assertEquals(fieldErrors.size(), 2); - - assertTrue(actionErrors.contains("some action error 1")); - assertTrue(actionErrors.contains("some action error 2")); - assertTrue(actionMessages.contains("some action message 1")); - assertTrue(actionMessages.contains("some action message 2")); - assertTrue(fieldErrors.containsKey("field1")); - assertTrue(fieldErrors.containsKey("field2")); - assertEquals(((List)fieldErrors.get("field1")).size(), 1); - assertEquals(((List)fieldErrors.get("field2")).size(), 1); - assertEquals(((List)fieldErrors.get("field1")).get(0), "some field error 1"); - assertEquals(((List)fieldErrors.get("field2")).get(0), "some field error 2"); - - EasyMock.verify(mockActionInvocation); - } - - public void testIgnoreMessageWithoutSession() throws Exception { - MessageStoreInterceptor interceptor = new MessageStoreInterceptor(); - interceptor.setAllowRequestParameterSwitch(true); - interceptor.setOperationMode(MessageStoreInterceptor.STORE_MODE); + HttpSession mockedSession = EasyMock.createControl().createMock(HttpSession.class); + HttpServletRequest mockedRequest = EasyMock.createControl().createMock(HttpServletRequest.class); + mockedRequest.getSession(false); + EasyMock.expectLastCall().andReturn(mockedSession); + EasyMock.expectLastCall().once(); + ServletActionContext.setRequest(mockedRequest); - ActionSupport action = new ActionSupport(); - action.addActionError("some action error 1"); - action.addActionMessage("some action message 1"); - action.addFieldError("field2", "some field error 2"); - - ActionContext actionContext = new ActionContext(new HashMap()); - actionContext.setParameters(HttpParameters.createEmpty().build()); + EasyMock.replay(mockedRequest); // Mock (ActionInvocation) ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class); @@@ -198,9 -143,17 +141,17 @@@ sessionMap.put(MessageStoreInterceptor.actionMessagesSessionKey, actionMessages); sessionMap.put(MessageStoreInterceptor.fieldErrorsSessionKey, fieldErrors); + HttpSession mockedSession = EasyMock.createControl().createMock(HttpSession.class); + HttpServletRequest mockedRequest = EasyMock.createControl().createMock(HttpServletRequest.class); + mockedRequest.getSession(false); + EasyMock.expectLastCall().andReturn(mockedSession); + EasyMock.expectLastCall().once(); + ServletActionContext.setRequest(mockedRequest); + + EasyMock.replay(mockedRequest); ActionContext actionContext = new ActionContext(new HashMap()); - actionContext.put(ActionContext.PARAMETERS, paramsMap); + actionContext.setParameters(HttpParameters.createEmpty().build()); actionContext.put(ActionContext.SESSION, sessionMap); mockActionInvocation.getInvocationContext(); @@@ -252,9 -206,18 +203,18 @@@ action.addFieldError("field2", "some field error 2"); ActionContext actionContext = new ActionContext(new HashMap()); - actionContext.put(ActionContext.PARAMETERS, paramMap); + actionContext.setParameters(HttpParameters.createEmpty().build()); actionContext.put(ActionContext.SESSION, sessionMap); + HttpSession mockedSession = EasyMock.createControl().createMock(HttpSession.class); + HttpServletRequest mockedRequest = EasyMock.createControl().createMock(HttpServletRequest.class); + mockedRequest.getSession(false); + EasyMock.expectLastCall().andReturn(mockedSession); + EasyMock.expectLastCall().once(); + ServletActionContext.setRequest(mockedRequest); + + EasyMock.replay(mockedRequest); + // Mock (ActionInvocation) ActionInvocation mockActionInvocation = EasyMock.createControl().createMock(ActionInvocation.class); mockActionInvocation.getInvocationContext(); http://git-wip-us.apache.org/repos/asf/struts/blob/bb21dbe4/core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java ---------------------------------------------------------------------- diff --cc core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java index 982d7b1,a3b8a7b..244d5f3 --- a/core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java +++ b/core/src/test/java/org/apache/struts2/interceptor/ServletConfigInterceptorTest.java @@@ -30,9 -30,10 +30,11 @@@ import javax.servlet.http.HttpServletRe import org.apache.struts2.StrutsInternalTestCase; import org.apache.struts2.StrutsStatics; + import org.apache.struts2.interceptor.servlet.ServletPrincipalProxy; +import org.apache.struts2.dispatcher.HttpParameters; import org.apache.struts2.util.ServletContextAware; - import org.easymock.MockControl; + + import static org.easymock.EasyMock.*; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockServletContext; @@@ -89,15 -87,15 +88,15 @@@ public class ServletConfigInterceptorTe MockActionInvocation mai = createActionInvocation(mock); - Map param = new HashMap(); + HttpParameters param = HttpParameters.createEmpty().build(); mai.getInvocationContext().setParameters(param); - mock.setParameters((Map)param); + mock.setParameters(param); - control.setVoidCallable(); + expectLastCall().times(1); - control.replay(); + replay(mock); interceptor.intercept(mai); - control.verify(); + verify(mock); } public void testSessionAware() throws Exception { @@@ -125,13 -121,13 +122,13 @@@ Map app = new HashMap(); mai.getInvocationContext().setApplication(app); - + mock.setApplication(app); - control.setVoidCallable(); + expectLastCall().times(1); - control.replay(); + replay(mock); interceptor.intercept(mai); - control.verify(); + verify(mock); } public void testPrincipalAware() throws Exception { @@@ -148,12 -142,12 +143,12 @@@ MockServletContext ctx = new MockServletContext(); mai.getInvocationContext().put(StrutsStatics.SERVLET_CONTEXT, ctx); - mock.setPrincipalProxy(null); // we can do this because of ALWAYS_MATCHER - control.setVoidCallable(); + mock.setPrincipalProxy(anyObject(ServletPrincipalProxy.class)); // less strick match is needed for this unit test to be conducted using mocks + expectLastCall().times(1); - + - control.replay(); + replay(mock); interceptor.intercept(mai); - control.verify(); + verify(mock); } public void testPrincipalProxy() throws Exception { @@@ -186,13 -179,13 +180,13 @@@ MockServletContext ctx = new MockServletContext(); mai.getInvocationContext().put(StrutsStatics.SERVLET_CONTEXT, ctx); - + mock.setServletContext((ServletContext) ctx); - control.setVoidCallable(); + expectLastCall().times(1); - + - control.replay(); + replay(mock); interceptor.intercept(mai); - control.verify(); + verify(mock); } private MockActionInvocation createActionInvocation(Object mock) { http://git-wip-us.apache.org/repos/asf/struts/blob/bb21dbe4/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java ---------------------------------------------------------------------- diff --cc core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java index 4d2f878,2b1cd82..024ded8 --- a/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java +++ b/core/src/test/java/org/apache/struts2/views/jsp/ActionTagTest.java @@@ -180,8 -178,9 +180,9 @@@ public class ActionTagTest extends Abst TestActionTagResult result = (TestActionTagResult) component.getProxy().getInvocation().getResult(); assertTrue(stack.getContext().containsKey(ServletActionContext.PAGE_CONTEXT)); - assertTrue(stack.getContext().get(ServletActionContext.PAGE_CONTEXT)instanceof PageContext); + assertTrue(stack.getContext().get(ServletActionContext.PAGE_CONTEXT) instanceof PageContext); - assertNull(result); // result is never executed, hence never set into invocation + assertNotNull(result); + assertFalse(result.isExecuted()); } public void testExecuteButResetReturnSameInvocation() throws Exception {