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/03/07 16:34:38 UTC

svn commit: r1297994 - in /struts/struts2/trunk/plugins/portlet/src: main/java/org/apache/struts2/components/ test/java/org/apache/struts2/components/ test/java/org/apache/struts2/views/jsp/ test/resources/

Author: lukaszlenart
Date: Wed Mar  7 15:34:38 2012
New Revision: 1297994

URL: http://svn.apache.org/viewvc?rev=1297994&view=rev
Log:
WW-3769 adds missing line of code to generate namespace without explicit specifying it

Added:
    struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/
    struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletAction.java
    struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java
    struts/struts2/trunk/plugins/portlet/src/test/resources/
    struts/struts2/trunk/plugins/portlet/src/test/resources/struts.xml
Modified:
    struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java
    struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java

Modified: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java?rev=1297994&r1=1297993&r2=1297994&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java (original)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java Wed Mar  7 15:34:38 2012
@@ -75,6 +75,7 @@ public class PortletUrlRenderer implemen
         }
 
         String result;
+        urlComponent.setNamespace(urlComponent.determineNamespace(urlComponent.getNamespace(), urlComponent.getStack(), urlComponent.getHttpServletRequest()));
         if (onlyActionSpecified(urlComponent)) {
             result = portletUrlHelper.buildUrl(urlComponent.getAction(), urlComponent.getNamespace(), urlComponent.getMethod(),
                     urlComponent.getParameters(), urlComponent.getPortletUrlType(), urlComponent.getPortletMode(), urlComponent.getWindowState());

Added: struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletAction.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletAction.java?rev=1297994&view=auto
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletAction.java (added)
+++ struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletAction.java Wed Mar  7 15:34:38 2012
@@ -0,0 +1,11 @@
+package org.apache.struts2.components;
+
+import com.opensymphony.xwork2.Action;
+
+public class PortletAction {
+
+    public String execute() {
+        return Action.SUCCESS;
+    }
+
+}

Added: struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java?rev=1297994&view=auto
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java (added)
+++ struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java Wed Mar  7 15:34:38 2012
@@ -0,0 +1,50 @@
+package org.apache.struts2.components;
+
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.ActionProxy;
+import com.opensymphony.xwork2.util.ValueStack;
+import org.apache.struts2.StrutsStatics;
+import org.apache.struts2.StrutsTestCase;
+import org.apache.struts2.portlet.PortletConstants;
+import org.springframework.mock.web.portlet.MockMimeResponse;
+import org.springframework.mock.web.portlet.MockPortletContext;
+import org.springframework.mock.web.portlet.MockPortletRequest;
+
+import javax.portlet.PortletContext;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.Collections;
+
+public class PortletUrlRendererTest extends StrutsTestCase {
+
+    private ValueStack stack;
+
+    public void setUp() throws Exception {
+        super.setUp();
+
+        ActionProxy actionProxy = getActionProxy("/portlettest/test"); // creates new empty ActionContext
+        ActionContext.getContext().put(ActionContext.ACTION_INVOCATION, actionProxy.getInvocation());
+
+        PortletContext portletCtx = new MockPortletContext();
+        ActionContext.getContext().put(StrutsStatics.STRUTS_PORTLET_CONTEXT, portletCtx);
+        ActionContext.getContext().put(PortletConstants.REQUEST, new MockPortletRequest(portletCtx));
+        ActionContext.getContext().put(PortletConstants.RESPONSE, new MockMimeResponse());
+        ActionContext.getContext().put(PortletConstants.MODE_NAMESPACE_MAP, Collections.emptyMap());
+
+        stack = actionProxy.getInvocation().getStack();
+    }
+
+    public void testRenderUrlWithNamespace() throws Exception {
+        // given
+        PortletUrlRenderer renderer = new PortletUrlRenderer();
+        UrlProvider component = new URL(stack, request, response).getUrlProvider();
+        Writer writer = new StringWriter();
+
+        // when
+        renderer.renderUrl(writer, component);
+
+        // then
+        assertTrue("/portlettest".equals(component.getNamespace()));
+    }
+
+}

Modified: struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java?rev=1297994&r1=1297993&r2=1297994&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java (original)
+++ struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java Wed Mar  7 15:34:38 2012
@@ -20,35 +20,38 @@
  */
 package org.apache.struts2.views.jsp;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.portlet.*;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.PageContext;
-
+import com.mockobjects.servlet.MockJspWriter;
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.ActionProxy;
+import com.opensymphony.xwork2.util.ValueStack;
+import com.opensymphony.xwork2.util.ValueStackFactory;
 import junit.textui.TestRunner;
-
 import org.apache.struts2.dispatcher.Dispatcher;
 import org.apache.struts2.portlet.PortletActionConstants;
 import org.apache.struts2.portlet.util.PortletUrlHelper;
-import org.apache.struts2.StrutsStatics;
-import static org.apache.struts2.StrutsStatics.*;
 import org.jmock.Mock;
 import org.jmock.cglib.MockObjectTestCase;
 import org.jmock.core.Constraint;
 
-import com.mockobjects.servlet.MockJspWriter;
-import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.ActionProxy;
-import static com.opensymphony.xwork2.ActionContext.SESSION;
-import static com.opensymphony.xwork2.ActionContext.PARAMETERS;
-import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.ValueStackFactory;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletMode;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+import javax.portlet.PortletURL;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.WindowState;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.jsp.PageContext;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import static org.apache.struts2.StrutsStatics.STRUTS_PORTLET_CONTEXT;
 
 /**
  */
@@ -117,6 +120,11 @@ public class PortletUrlTagTest extends M
         mockHttpReq.stubs().method("getAttribute").with(
                 eq("javax.portlet.request")).will(
                 returnValue((PortletRequest) mockPortletReq.proxy()));
+        mockHttpReq.stubs().method("getAttribute").with(
+                eq("javax.servlet.include.servlet_path")).will(
+                returnValue("/servletPath"));
+        mockHttpReq.stubs().method("getParameterMap").will(
+                returnValue(Collections.emptyMap()));
 
         mockPortletReq.stubs().method("getPortletMode").will(returnValue(PortletMode.VIEW));
         mockPortletReq.stubs().method("getWindowState").will(returnValue(WindowState.NORMAL));
@@ -332,6 +340,7 @@ public class PortletUrlTagTest extends M
     	
     	Mock mockActionProxy = mock(ActionProxy.class);
     	mockActionProxy.stubs().method("getActionName").will(returnValue("currentExecutingAction"));
+    	mockActionProxy.stubs().method("getNamespace").will(returnValue(""));
     	final ActionProxy proxy = (ActionProxy)mockActionProxy.proxy();
     	
     	Mock mockActionInvocation = mock(ActionInvocation.class);

Added: struts/struts2/trunk/plugins/portlet/src/test/resources/struts.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/test/resources/struts.xml?rev=1297994&view=auto
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/test/resources/struts.xml (added)
+++ struts/struts2/trunk/plugins/portlet/src/test/resources/struts.xml Wed Mar  7 15:34:38 2012
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE struts PUBLIC
+	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
+	"http://struts.apache.org/dtds/struts-2.3.dtd">
+
+<struts>
+
+    <package name="test-portlet-default" namespace="/portlettest" extends="struts-portlet-default">
+
+        <action name="test" class="org.apache.struts2.components.PortletAction">
+            <result type="redirectAction">redirectAction</result>
+        </action>
+
+    </package>
+
+</struts>