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 2012/01/01 18:29:26 UTC

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

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


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 Maurizio Cucchiara <ma...@gmail.com>.
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>
>
>
>