You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by Maurizio Cucchiara <ma...@gmail.com> on 2012/01/01 19:26:21 UTC

Re: svn commit: r1226265 - in /struts/struts2/trunk: plugins/junit/pom.xml plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java plugins/junit/src/test/java/org/apache/struts2/StrutsTestCaseTest.java plugins/portlet/pom.xml pom.xml

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, <lu...@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>
>
>
>

Re: svn commit: r1226265 - in /struts/struts2/trunk: plugins/junit/pom.xml plugins/junit/src/main/java/org/apache/struts2/StrutsTestCase.java plugins/junit/src/test/java/org/apache/struts2/StrutsTestCaseTest.java plugins/portlet/pom.xml pom.xml

Posted by Łukasz Lenart <lu...@googlemail.com>.
2012/1/1 Maurizio Cucchiara <ma...@gmail.com>:
> Are there any reason to mantain junit 3 stuff?

Just to keep backward compatibility, we can drop support for JUnit 3
in Struts 2.5 / 3


Regards
-- 
Łukasz
+ 48 606 323 122 http://www.lenart.org.pl/
Warszawa JUG conference - Confitura http://confitura.pl/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org