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>


Reply via email to