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>