Author: julien(a)jboss.com
Date: 2008-01-22 08:31:02 -0500 (Tue, 22 Jan 2008)
New Revision: 9552
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletURLImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ResourceURLImpl.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterTestCase.java
Log:
- update implementation of PortletURL for action url to take in account spec
clarifications
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java 2008-01-22
12:30:44 UTC (rev 9551)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/BaseURLImpl.java 2008-01-22
13:31:02 UTC (rev 9552)
@@ -62,17 +62,17 @@
/** @throws IllegalArgumentException if the name is null */
public void setParameter(String name, String value)
{
- url.parameters.setParameterValue(name, value);
+ url.setParameter(name, value);
}
public void setParameter(String name, String[] values)
{
- url.parameters.setParameterValues(name, values);
+ url.setParameter(name, values);
}
public void setParameters(Map<String, String[]> parameters)
{
- url.parameters.setMap(parameters);
+ url.setParameters(parameters);
}
public void setSecure(boolean secure) throws PortletSecurityException
@@ -114,12 +114,11 @@
protected static abstract class InternalContainerURL implements
org.jboss.portal.portlet.ContainerURL
{
- /** . */
- protected final PortletParameterMap parameters;
+ protected abstract void setParameter(String name, String value);
- protected InternalContainerURL(PortletParameterMap parameters)
- {
- this.parameters = parameters;
- }
+ protected abstract void setParameter(String name, String[] values);
+
+ protected abstract void setParameters(Map<String, String[]> parameters);
+
}
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletURLImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletURLImpl.java 2008-01-22
12:30:44 UTC (rev 9551)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletURLImpl.java 2008-01-22
13:31:02 UTC (rev 9552)
@@ -37,6 +37,7 @@
import javax.portlet.WindowState;
import javax.portlet.WindowStateException;
import java.util.Map;
+import java.util.Collections;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -48,7 +49,7 @@
public static PortletURLImpl createActionURL(PortletInvocation invocation,
PortletRequestImpl preq)
{
StateString navigationalState = invocation.getContext().getNavigationalState();
- InternalActionURL url = new InternalActionURL(new
PortletParameterMap(preq.navigationInfo), navigationalState);
+ InternalActionURL url = new InternalActionURL(navigationalState);
return new PortletURLImpl(invocation, preq, url);
}
@@ -111,7 +112,7 @@
public void removePublicRenderParameter(String name)
{
- url.parameters.removePublicParameterValue(name);
+ url.removePublicRenderParameter(name);
}
private static abstract class InternalPortletURL extends InternalContainerURL
implements org.jboss.portal.portlet.PortletURL
@@ -123,11 +124,6 @@
/** . */
protected PortletMode portletMode;
- protected InternalPortletURL(PortletParameterMap parameters)
- {
- super(parameters);
- }
-
public Mode getMode()
{
if (portletMode != null)
@@ -146,10 +142,7 @@
return null;
}
- public Map<String, String[]> getPublicNavigationalStateChanges()
- {
- return parameters.getPublicMapSnapshot();
- }
+ protected abstract void removePublicRenderParameter(String name);
}
private static class InternalActionURL extends InternalPortletURL implements
ActionURL
@@ -158,36 +151,88 @@
/** . */
private final StateString navigationalState;
- private InternalActionURL(PortletParameterMap parameters, StateString
navigationalState)
+ /** . */
+ private final ParametersStateString interactionState;
+
+ private InternalActionURL(StateString navigationalState)
{
- super(parameters);
-
- //
this.navigationalState = navigationalState;
+ this.interactionState = ParametersStateString.create();
}
public StateString getInteractionState()
{
- return ParametersStateString.create(parameters.getPrivateMapSnapshot());
+ return interactionState;
}
public StateString getNavigationalState()
{
return navigationalState;
}
+
+ public Map<String, String[]> getPublicNavigationalStateChanges()
+ {
+ return Collections.emptyMap();
+ }
+
+ protected void setParameter(String name, String value)
+ {
+ interactionState.setValue(name, value);
+ }
+
+ protected void setParameter(String name, String[] values)
+ {
+ interactionState.setValues(name, values);
+ }
+
+ protected void setParameters(Map<String, String[]> parameters)
+ {
+ interactionState.replace(parameters);
+ }
+
+ protected void removePublicRenderParameter(String name)
+ {
+ }
}
private static class InternalRenderURL extends InternalPortletURL implements
RenderURL
{
+ private final PortletParameterMap parameters;
+
private InternalRenderURL(PortletParameterMap parameters)
{
- super(parameters);
+ this.parameters = parameters;
}
public StateString getNavigationalState()
{
return ParametersStateString.create(parameters.getPrivateMapSnapshot());
}
+
+ public Map<String, String[]> getPublicNavigationalStateChanges()
+ {
+ return parameters.getPublicMapSnapshot();
+ }
+
+ protected void setParameter(String name, String value)
+ {
+ parameters.setParameterValue(name, value);
+ }
+
+ protected void setParameter(String name, String[] values)
+ {
+ parameters.setParameterValues(name, values);
+ }
+
+ protected void setParameters(Map<String, String[]> parameterMap)
+ {
+ parameters.setMap(parameterMap);
+ }
+
+ protected void removePublicRenderParameter(String name)
+ {
+ parameters.removePublicParameterValue(name);
+ }
}
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ResourceURLImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ResourceURLImpl.java 2008-01-22
12:30:44 UTC (rev 9551)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ResourceURLImpl.java 2008-01-22
13:31:02 UTC (rev 9552)
@@ -134,8 +134,7 @@
public static ResourceURLImpl createResourceURL(PortletInvocation invocation,
PortletRequestImpl preq)
{
- InternalResourceURL url = new InternalResourceURL(new
PortletParameterMap(preq.navigationInfo));
- return new ResourceURLImpl(invocation, preq, url);
+ return new ResourceURLImpl(invocation, preq, new InternalResourceURL());
}
private static class InternalResourceURL extends InternalContainerURL implements
org.jboss.portal.portlet.ResourceURL
@@ -150,14 +149,32 @@
/** . */
private Cacheability cacheability;
- private InternalResourceURL(PortletParameterMap parameters)
+ /** . */
+ private ParametersStateString parameters;
+
+ private InternalResourceURL()
{
- super(parameters);
+ this.parameters = ParametersStateString.create();
}
+ protected void setParameter(String name, String value)
+ {
+ parameters.setValue(name, value);
+ }
+
+ protected void setParameter(String name, String[] values)
+ {
+ parameters.setValues(name, values);
+ }
+
+ protected void setParameters(Map<String, String[]> parameterMap)
+ {
+ parameters.replace(parameterMap);
+ }
+
public StateString getResourceState()
{
- return ParametersStateString.create(parameters.getPrivateMapSnapshot());
+ return parameters;
}
public String getId()
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterTestCase.java 2008-01-22
12:30:44 UTC (rev 9551)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterTestCase.java 2008-01-22
13:31:02 UTC (rev 9552)
@@ -36,7 +36,9 @@
import static org.jboss.unit.api.Assert.*;
import org.jboss.unit.driver.DriverResponse;
import org.jboss.unit.driver.response.EndTestResponse;
+import org.jboss.unit.driver.response.FailureResponse;
import org.jboss.unit.remote.driver.handler.http.response.InvokeGetResponse;
+import org.jboss.unit.Failure;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
@@ -106,14 +108,8 @@
protected void run(Portlet portlet, ActionRequest request, ActionResponse
response, PortletTestContext context) throws PortletException, IOException
{
assertEquals(2, renderCount);
- try
- {
- assertEquals("bar",
request.getParameterMap().get("foo"));
- }
- catch (AssertionError e)
- {
- e.printStackTrace();
- }
+ String[] strings = request.getParameterMap().get("foo");
+ assertEquals(new String[]{"bar","foo"}, strings);
response.removePublicRenderParameter("foo");
renderCount = 0;
}
@@ -134,7 +130,8 @@
String foo = request.getParameter("foo");
assertEquals(null, foo);
renderCount++;
- return ++renderCount == 2 ? new EndTestResponse() : null;
+ assertEquals(2, renderCount);
+ return new EndTestResponse();
}
});
}