Are there any reason to mantain junit 3 stuff? Sent from my mobile device, so please excuse typos and brevity.
Maurizio Cucchiara Il giorno 01/gen/2012 18.29, <lukaszlen...@apache.org> ha scritto: > Author: lukaszlenart > Date: Sun Jan 1 17:29:25 2012 > New Revision: 1226265 > > URL: http://svn.apache.org/viewvc?rev=1226265&view=rev > Log: > WW-3733 - adds missing PortletContext to ActionContext to avoid NPE during > PortletResult initialisation > > Modified: > struts/struts2/trunk/plugins/junit/pom.xml > > > struts/struts2/trunk/plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java > > > struts/struts2/trunk/plugins/junit/src/test/java/org/apache/struts2/StrutsTestCaseTest.java > struts/struts2/trunk/plugins/portlet/pom.xml > struts/struts2/trunk/pom.xml > > Modified: struts/struts2/trunk/plugins/junit/pom.xml > URL: > http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/junit/pom.xml?rev=1226265&r1=1226264&r2=1226265&view=diff > > ============================================================================== > --- struts/struts2/trunk/plugins/junit/pom.xml (original) > +++ struts/struts2/trunk/plugins/junit/pom.xml Sun Jan 1 17:29:25 2012 > @@ -55,7 +55,6 @@ > <dependency> > <groupId>org.apache.struts</groupId> > <artifactId>struts2-spring-plugin</artifactId> > - <version>${project.version}</version> > <optional>true</optional> > </dependency> > <dependency> > @@ -67,5 +66,11 @@ > <groupId>junit</groupId> > <artifactId>junit</artifactId> > </dependency> > + <!-- Portlet --> > + <dependency> > + <groupId>javax.portlet</groupId> > + <artifactId>portlet-api</artifactId> > + <scope>test</scope> > + </dependency> > </dependencies> > </project> > > Modified: > struts/struts2/trunk/plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java > URL: > http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java?rev=1226265&r1=1226264&r2=1226265&view=diff > > ============================================================================== > --- > struts/struts2/trunk/plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java > (original) > +++ > struts/struts2/trunk/plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java > Sun Jan 1 17:29:25 2012 > @@ -37,6 +37,7 @@ import org.springframework.mock.web.Mock > import org.springframework.mock.web.MockHttpServletResponse; > import org.springframework.mock.web.MockPageContext; > import org.springframework.mock.web.MockServletContext; > +import org.springframework.mock.web.portlet.MockPortletContext; > > import javax.servlet.ServletException; > import javax.servlet.http.HttpServletRequest; > @@ -46,7 +47,11 @@ import java.text.SimpleDateFormat; > import java.util.Date; > import java.util.HashMap; > import java.util.Map; > -import java.util.logging.*; > +import java.util.logging.ConsoleHandler; > +import java.util.logging.Formatter; > +import java.util.logging.Level; > +import java.util.logging.LogRecord; > +import java.util.logging.Logger; > > /** > * Base test case for JUnit testing Struts. > @@ -57,7 +62,7 @@ public abstract class StrutsTestCase ext > protected MockPageContext pageContext; > protected MockServletContext servletContext; > protected Map<String, String> dispatcherInitParams; > - > + > protected DefaultResourceLoader resourceLoader = new > DefaultResourceLoader(); > > static { > @@ -109,10 +114,9 @@ public abstract class StrutsTestCase ext > assertNotNull(mapping); > Dispatcher.getInstance().serviceAction(request, response, > servletContext, mapping); > > - if (response.getStatus() != HttpServletResponse.SC_OK) > - throw new ServletException("Error code [" + > response.getStatus() + "], Error: [" > - + response.getErrorMessage() + "]"); > - > + if (response.getStatus() != HttpServletResponse.SC_OK) { > + throw new ServletException("Error code [" + > response.getStatus() + "], Error: [" + response.getErrorMessage() + "]"); > + } > return response.getContentAsString(); > } > > @@ -131,12 +135,9 @@ public abstract class StrutsTestCase ext > ActionProxy proxy = > config.getContainer().getInstance(ActionProxyFactory.class).createActionProxy( > namespace, name, method, new HashMap<String, Object>(), > true, false); > > - ActionContext invocationContext = > proxy.getInvocation().getInvocationContext(); > - invocationContext.setParameters(new > HashMap(request.getParameterMap())); > - // set the action context to the one used by the proxy > - ActionContext.setContext(invocationContext); > + initActionContext(proxy.getInvocation().getInvocationContext()); > > - // this is normaly done in onSetUp(), but we are using Struts > internal > + // this is normally done in onSetUp(), but we are using Struts > internal > // objects (proxy and action invocation) > // so we have to hack around so it works > ServletActionContext.setServletContext(servletContext); > @@ -146,6 +147,29 @@ public abstract class StrutsTestCase ext > return proxy; > } > > + private void initActionContext(ActionContext actionContext) { > + actionContext.setParameters(new > HashMap(request.getParameterMap())); > + > + initMockPortletContext(actionContext); > + applyAdditionalParams(actionContext); > + > + // set the action context to the one used by the proxy > + ActionContext.setContext(actionContext); > + } > + > + private void initMockPortletContext(ActionContext actionContext) { > + actionContext.put(StrutsStatics.STRUTS_PORTLET_CONTEXT, new > MockPortletContext()); > + } > + > + /** > + * Can be overwritten in subclass to provide additional context's > params and settings used during action invocation > + * > + * @param context current {@link ActionContext} > + */ > + protected void applyAdditionalParams(ActionContext context) { > + // empty be default > + } > + > /** > * Finds an ActionMapping for a given request > */ > @@ -179,10 +203,16 @@ public abstract class StrutsTestCase ext > super.setUp(); > initServletMockObjects(); > setupBeforeInitDispatcher(); > - initDispatcher(dispatcherInitParams); > + Dispatcher dispatcher = initDispatcher(dispatcherInitParams); > + setupAfterInitDispatcher(dispatcher); > } > > protected void setupBeforeInitDispatcher() throws Exception { > + // empty by default > + } > + > + protected void setupAfterInitDispatcher(Dispatcher dispatcher) { > + // empty by default > } > > protected void initServletMockObjects() { > > Modified: > struts/struts2/trunk/plugins/junit/src/test/java/org/apache/struts2/StrutsTestCaseTest.java > URL: > http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/junit/src/test/java/org/apache/struts2/StrutsTestCaseTest.java?rev=1226265&r1=1226264&r2=1226265&view=diff > > ============================================================================== > --- > struts/struts2/trunk/plugins/junit/src/test/java/org/apache/struts2/StrutsTestCaseTest.java > (original) > +++ > struts/struts2/trunk/plugins/junit/src/test/java/org/apache/struts2/StrutsTestCaseTest.java > Sun Jan 1 17:29:25 2012 > @@ -21,13 +21,17 @@ > package org.apache.struts2; > > import com.opensymphony.xwork2.Action; > +import com.opensymphony.xwork2.ActionContext; > import com.opensymphony.xwork2.ActionProxy; > import org.apache.struts2.dispatcher.mapper.ActionMapping; > +import org.junit.Test; > > +import javax.portlet.PortletContext; > import javax.servlet.ServletException; > import java.io.UnsupportedEncodingException; > > public class StrutsTestCaseTest extends StrutsSpringTestCase { > + > public void testGetActionMapping() { > ActionMapping mapping = > getActionMapping("/test/testAction.action"); > assertNotNull(mapping); > @@ -61,4 +65,38 @@ public class StrutsTestCaseTest extends > String name = (String) findValueAfterExecute("name"); > assertEquals("FD", name); > } > + > + @Test > + public void shouldPortletContextBeAvailable() throws Exception { > + // given > + > > assertNull(ActionContext.getContext().get(StrutsStatics.STRUTS_PORTLET_CONTEXT)); > + > + // when > + String output = executeAction("/test/testAction.action"); > + assertEquals("Hello", output); > + > + // then > + Object portletContext = > ActionContext.getContext().get(StrutsStatics.STRUTS_PORTLET_CONTEXT); > + assertNotNull(portletContext); > + assertTrue(portletContext instanceof PortletContext); > + } > + > + @Test > + public void shouldAdditionalContextParamsBeAvailable() throws > Exception { > + // given > + String key = "my-param"; > + assertNull(ActionContext.getContext().get(key)); > + > + // when > + String output = executeAction("/test/testAction.action"); > + assertEquals("Hello", output); > + > + // then > + assertNotNull(ActionContext.getContext().get(key)); > + } > + > + @Override > + protected void applyAdditionalParams(ActionContext context) { > + context.put("my-param", new Object()); > + } > } > > Modified: struts/struts2/trunk/plugins/portlet/pom.xml > URL: > http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/pom.xml?rev=1226265&r1=1226264&r2=1226265&view=diff > > ============================================================================== > --- struts/struts2/trunk/plugins/portlet/pom.xml (original) > +++ struts/struts2/trunk/plugins/portlet/pom.xml Sun Jan 1 17:29:25 2012 > @@ -18,9 +18,8 @@ > > <dependencies> > <dependency> > - <groupId>${project.groupId}</groupId> > + <groupId>org.apache.struts</groupId> > <artifactId>struts2-junit-plugin</artifactId> > - <version>${project.version}</version> > <scope>test</scope> > </dependency> > > > Modified: struts/struts2/trunk/pom.xml > URL: > http://svn.apache.org/viewvc/struts/struts2/trunk/pom.xml?rev=1226265&r1=1226264&r2=1226265&view=diff > > ============================================================================== > --- struts/struts2/trunk/pom.xml (original) > +++ struts/struts2/trunk/pom.xml Sun Jan 1 17:29:25 2012 > @@ -352,6 +352,11 @@ > <artifactId>struts2-dwr-plugin</artifactId> > <version>${project.version}</version> > </dependency> > + <dependency> > + <groupId>org.apache.struts</groupId> > + <artifactId>struts2-junit-plugin</artifactId> > + <version>${project.version}</version> > + </dependency> > > <dependency> > <groupId>org.freemarker</groupId> > > >