Author: julien_viet
Date: 2010-09-21 05:19:29 -0400 (Tue, 21 Sep 2010)
New Revision: 4275
Modified:
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/jsr168/api/PortletURLImpl.java
components/pc/trunk/test/src/test/java/org/gatein/pc/test/portlet/jsr286/api/portleturl/ParameterMapTestCase.java
Log:
GTNPC-30: Implement getParameterMap() safely modifiable for action url
Modified:
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/jsr168/api/PortletURLImpl.java
===================================================================
---
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/jsr168/api/PortletURLImpl.java 2010-09-21
08:50:52 UTC (rev 4274)
+++
components/pc/trunk/portlet/src/main/java/org/gatein/pc/portlet/impl/jsr168/api/PortletURLImpl.java 2010-09-21
09:19:29 UTC (rev 4275)
@@ -242,7 +242,7 @@
protected Map<String, String[]> getParameters()
{
- return ParameterMap.clone(interactionState.getParameters());
+ return interactionState.getParameters();
}
public StateString getNavigationalState()
Modified:
components/pc/trunk/test/src/test/java/org/gatein/pc/test/portlet/jsr286/api/portleturl/ParameterMapTestCase.java
===================================================================
---
components/pc/trunk/test/src/test/java/org/gatein/pc/test/portlet/jsr286/api/portleturl/ParameterMapTestCase.java 2010-09-21
08:50:52 UTC (rev 4274)
+++
components/pc/trunk/test/src/test/java/org/gatein/pc/test/portlet/jsr286/api/portleturl/ParameterMapTestCase.java 2010-09-21
09:19:29 UTC (rev 4275)
@@ -23,12 +23,15 @@
import org.gatein.pc.test.unit.Assertion;
import org.gatein.pc.test.unit.PortletTestCase;
import org.gatein.pc.test.unit.PortletTestContext;
+import org.gatein.pc.test.unit.actions.PortletActionTestAction;
import org.gatein.pc.test.unit.actions.PortletRenderTestAction;
import org.gatein.pc.test.unit.annotations.TestCase;
import org.jboss.unit.driver.DriverResponse;
import org.jboss.unit.driver.response.EndTestResponse;
import org.jboss.unit.remote.driver.handler.http.response.InvokeGetResponse;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
import javax.portlet.Portlet;
import javax.portlet.PortletException;
import javax.portlet.PortletURL;
@@ -49,12 +52,11 @@
{
public ParameterMapTestCase(PortletTestCase seq)
{
-
seq.bindAction(0, UTP1.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context) throws PortletException, IOException
{
- PortletURL url = response.createRenderURL();
+ PortletURL url = response.createActionURL();
// Set parameter
url.setParameter("foo", "bar");
@@ -78,10 +80,47 @@
return new InvokeGetResponse(url.toString());
}
});
+ seq.bindAction(1, UTP1.ACTION_JOIN_POINT, new PortletActionTestAction()
+ {
+ @Override
+ protected void run(Portlet portlet, ActionRequest request, ActionResponse
response, PortletTestContext context) throws PortletException, IOException
+ {
+ // It should be empty
+ assertEquals(Collections.<Object, Object>emptyMap(),
request.getParameterMap());
+ }
+ });
seq.bindAction(1, UTP1.RENDER_JOIN_POINT, new PortletRenderTestAction()
{
protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context) throws PortletException, IOException
{
+ PortletURL url = response.createRenderURL();
+
+ // Set parameter
+ url.setParameter("foo", "bar");
+
+ // Clear parameters
+ Map<String, String[]> map = url.getParameterMap();
+
+ // Check expected entry
+ String[] bar1 = map.get("foo");
+ assertEquals(1, bar1.length);
+ assertEquals("bar", bar1[0]);
+
+ // Check that the entry we had a copy of the value
+ url.setParameter("foo", "juu");
+ assertEquals("bar", bar1[0]);
+
+ //
+ map.clear();
+
+ // Invoker with the no parameter URL
+ return new InvokeGetResponse(url.toString());
+ }
+ });
+ seq.bindAction(2, UTP1.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context) throws PortletException, IOException
+ {
// It should be empty
assertEquals(Collections.<Object, Object>emptyMap(),
request.getParameterMap());