You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ni...@apache.org on 2007/08/11 22:20:34 UTC

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

Author: nilsga
Date: Sat Aug 11 13:20:33 2007
New Revision: 564967

URL: http://svn.apache.org/viewvc?view=rev&rev=564967
Log:
WW-1713 Consider "method" tag attribute when creating urls

Modified:
    struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/components/PortletUrlRenderer.java
    struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java
    struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/util/PortletUrlHelperTest.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?view=diff&rev=564967&r1=564966&r2=564967
==============================================================================
--- 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 Sat Aug 11 13:20:33 2007
@@ -50,7 +50,7 @@
 
 	       String result;
 	        if (urlComponent.value == null && urlComponent.action != null) {
-	                result = PortletUrlHelper.buildUrl(urlComponent.action, urlComponent.namespace, urlComponent.parameters, urlComponent.portletUrlType, urlComponent.portletMode, urlComponent.windowState);
+	                result = PortletUrlHelper.buildUrl(urlComponent.action, urlComponent.namespace, urlComponent.method, urlComponent.parameters, urlComponent.portletUrlType, urlComponent.portletMode, urlComponent.windowState);
 	        } else {
 	                result = PortletUrlHelper.buildResourceUrl(urlComponent.value, urlComponent.parameters);
 	        }
@@ -91,7 +91,7 @@
             }
         }
         if (action != null) {
-            String result = PortletUrlHelper.buildUrl(action, formComponent.namespace,
+            String result = PortletUrlHelper.buildUrl(action, formComponent.namespace, null,
                     formComponent.getParameters(), type, formComponent.portletMode, formComponent.windowState);
             formComponent.addParameter("action", result);
 

Modified: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java?view=diff&rev=564967&r1=564966&r2=564967
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java (original)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java Sat Aug 11 13:20:33 2007
@@ -59,15 +59,16 @@
      *
      * @param action The action the URL should invoke.
      * @param namespace The namespace of the action to invoke.
+     * @param method The method of the action to invoke.
      * @param params The parameters of the URL.
      * @param type The type of the url, either <tt>action</tt> or <tt>render</tt>
      * @param mode The PortletMode of the URL.
      * @param state The WindowState of the URL.
      * @return The URL String.
      */
-    public static String buildUrl(String action, String namespace, Map params,
+    public static String buildUrl(String action, String namespace, String method, Map params,
             String type, String mode, String state) {
-        return buildUrl(action, namespace, params, null, type, mode, state,
+        return buildUrl(action, namespace, method, params, null, type, mode, state,
                 true, true);
     }
 
@@ -76,9 +77,10 @@
      *
      * @see #buildUrl(String, String, Map, String, String, String)
      */
-    public static String buildUrl(String action, String namespace, Map params,
+    public static String buildUrl(String action, String namespace, String method, Map params,
             String scheme, String type, String portletMode, String windowState,
             boolean includeContext, boolean encodeResult) {
+    	StringBuffer resultingAction = new StringBuffer();
         RenderRequest request = PortletActionContext.getRenderRequest();
         RenderResponse response = PortletActionContext.getRenderResponse();
         LOG.debug("Creating url. Action = " + action + ", Namespace = "
@@ -102,15 +104,17 @@
             }
         }
         if (TextUtils.stringSet(namespace)) {
-            StringBuffer sb = new StringBuffer();
-            sb.append(namespace);
+            resultingAction.append(namespace);
             if(!action.startsWith("/") && !namespace.endsWith("/")) {
-                sb.append("/");
+                resultingAction.append("/");
             }
-            action = sb.append(action).toString();
+            resultingAction.append(action);
             LOG.debug("Resulting actionPath: " + action);
         }
-        params.put(PortletActionConstants.ACTION_PARAM, new String[] { action });
+        if(TextUtils.stringSet(method)) {
+        	resultingAction.append("!").append(method);
+        }
+        params.put(PortletActionConstants.ACTION_PARAM, new String[] { resultingAction.toString() });
 
         PortletURL url = null;
         if ("action".equalsIgnoreCase(type)) {

Modified: struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/util/PortletUrlHelperTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/util/PortletUrlHelperTest.java?view=diff&rev=564967&r1=564966&r2=564967
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/util/PortletUrlHelperTest.java (original)
+++ struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/util/PortletUrlHelperTest.java Sat Aug 11 13:20:33 2007
@@ -95,7 +95,7 @@
         renderRequestControl.replay();
         renderResponseControl.replay();
         portletUrlControl.replay();
-        PortletUrlHelper.buildUrl("testAction", null,
+        PortletUrlHelper.buildUrl("testAction", null, null,
                 new HashMap(), null, null, null);
         portletUrlControl.verify();
         renderRequestControl.verify();
@@ -113,7 +113,7 @@
         renderRequestControl.replay();
         renderResponseControl.replay();
         portletUrlControl.replay();
-        PortletUrlHelper.buildUrl("testAction", null,
+        PortletUrlHelper.buildUrl("testAction", null, null,
                 new HashMap(), null, "edit", null);
         portletUrlControl.verify();
         renderRequestControl.verify();
@@ -131,7 +131,7 @@
         renderRequestControl.replay();
         renderResponseControl.replay();
         portletUrlControl.replay();
-        PortletUrlHelper.buildUrl("testAction", null,
+        PortletUrlHelper.buildUrl("testAction", null, null,
                 new HashMap(), null, null, "maximized");
         portletUrlControl.verify();
         renderRequestControl.verify();
@@ -149,7 +149,7 @@
         renderRequestControl.replay();
         renderResponseControl.replay();
         portletUrlControl.replay();
-        PortletUrlHelper.buildUrl("testAction", null,
+        PortletUrlHelper.buildUrl("testAction", null, null,
                 new HashMap(), "action", null, null);
         portletUrlControl.verify();
         renderRequestControl.verify();

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?view=diff&rev=564967&r1=564966&r2=564967
==============================================================================
--- 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 Sat Aug 11 13:20:33 2007
@@ -306,6 +306,23 @@
         mockJspWriter.verify();
     }
 
+    public void testUrlWithMethod() throws Exception {
+    	PortletMode mode = PortletMode.VIEW;
+    	mockHttpReq.stubs().method("getQueryString").will(returnValue(""));
+        mockPortletRes.expects(once()).method("createRenderURL").will(
+                returnValue((PortletURL) mockPortletUrl.proxy()));
+    	tag.setAction("testAction");
+    	Map paramMap = new HashMap();
+        paramMap.put(PortletActionConstants.ACTION_PARAM, new String[]{"/view/testAction!input"});
+        paramMap.put(PortletActionConstants.MODE_PARAM, new String[]{mode.toString()});
+        mockPortletUrl.expects(once()).method("setParameters").with(new ParamMapConstraint(paramMap));
+        mockPortletUrl.expects(once()).method("setPortletMode").with(eq(PortletMode.VIEW));
+        mockPortletUrl.expects(once()).method("setWindowState").with(eq(WindowState.NORMAL));
+    	tag.setMethod("input");
+    	tag.doStartTag();
+    	tag.doEndTag();
+    }
+    
     private static class ParamMapConstraint implements Constraint {
 
         private Map myExpectedMap = null;
@@ -353,7 +370,17 @@
          * @see org.jmock.core.SelfDescribing#describeTo(java.lang.StringBuffer)
          */
         public StringBuffer describeTo(StringBuffer sb) {
-            return sb.append(myExpectedMap);
+        	Iterator<String> it = myExpectedMap.keySet().iterator();
+        	while(it.hasNext()) {
+        		String key = it.next();
+        		sb.append(key).append("=");
+        		String[] value = (String[])myExpectedMap.get(key);
+        		sb.append(value[0]);
+        		if(it.hasNext()) {
+        			sb.append(", ");
+        		}
+        	}
+            return sb;
         }