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/24 11:12:21 UTC

svn commit: r569304 - in /struts/struts2/branches/STRUTS_2_0_X/core/src: main/java/org/apache/struts2/components/ main/java/org/apache/struts2/portlet/util/ test/java/org/apache/struts2/portlet/util/

Author: nilsga
Date: Fri Aug 24 02:12:20 2007
New Revision: 569304

URL: http://svn.apache.org/viewvc?rev=569304&view=rev
Log:
WW-1713 Backport to 2.0.x

Modified:
    struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/Form.java
    struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/URL.java
    struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java
    struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/portlet/util/PortletUrlHelperTest.java

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/Form.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/Form.java?rev=569304&r1=569303&r2=569304&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/Form.java (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/Form.java Fri Aug 24 02:12:20 2007
@@ -382,7 +382,7 @@
             }
         }
         if (action != null) {
-            String result = PortletUrlHelper.buildUrl(action, namespace,
+            String result = PortletUrlHelper.buildUrl(action, namespace, null,
                     getParameters(), type, portletMode, windowState);
             addParameter("action", result);
 

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/URL.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/URL.java?rev=569304&r1=569303&r2=569304&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/URL.java (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/components/URL.java Fri Aug 24 02:12:20 2007
@@ -250,7 +250,7 @@
         String result;
         if (value == null && action != null) {
             if (Dispatcher.getInstance().isPortletSupportActive() && PortletActionContext.isPortletRequest()) {
-                result = PortletUrlHelper.buildUrl(action, namespace, parameters, portletUrlType, portletMode, windowState);
+                result = PortletUrlHelper.buildUrl(action, namespace, method, parameters, portletUrlType, portletMode, windowState);
             }
             else {
                 result = determineActionURL(action, namespace, method, req, res, parameters, scheme, includeContext, encode, forceAddSchemeHostAndPort, escapeAmp);

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java?rev=569304&r1=569303&r2=569304&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/main/java/org/apache/struts2/portlet/util/PortletUrlHelper.java Fri Aug 24 02:12:20 2007
@@ -22,8 +22,8 @@
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
-import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.StringTokenizer;
 
@@ -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)) {
@@ -230,7 +234,7 @@
     public static Map ensureParamsAreStringArrays(Map params) {
         Map result = null;
         if (params != null) {
-            result = new HashMap(params.size());
+            result = new LinkedHashMap(params.size());
             Iterator it = params.keySet().iterator();
             while (it.hasNext()) {
                 Object key = it.next();

Modified: struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/portlet/util/PortletUrlHelperTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/portlet/util/PortletUrlHelperTest.java?rev=569304&r1=569303&r2=569304&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/portlet/util/PortletUrlHelperTest.java (original)
+++ struts/struts2/branches/STRUTS_2_0_X/core/src/test/java/org/apache/struts2/portlet/util/PortletUrlHelperTest.java Fri Aug 24 02:12:20 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();