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;
}