Author: julien(a)jboss.com
Date: 2008-01-22 15:13:25 -0500 (Tue, 22 Jan 2008)
New Revision: 9565
Added:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterAvailableInLifeCycleMethodTestCase.java
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/framework/UTP5.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/TestAction.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletActionTestAction.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletEventTestAction.java
modules/portlet/trunk/test/src/test/build.xml
modules/portlet/trunk/test/src/test/resources/jsr286/tck/portletrequests-war/WEB-INF/portlet.xml
Log:
test that public render parameters are available in all life cycle methods and that they
are merged with action/resource parameters
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/framework/UTP5.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/framework/UTP5.java 2008-01-22
20:11:35 UTC (rev 9564)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/framework/UTP5.java 2008-01-22
20:13:25 UTC (rev 9565)
@@ -46,6 +46,8 @@
public final static JoinPoint ACTION_JOIN_POINT = new JoinPoint(NAME,
JoinPointType.PORTLET_ACTION);
+ public final static JoinPoint RESOURCE_JOIN_POINT = new JoinPoint(NAME,
JoinPointType.PORTLET_RESOURCE);
+
/** Resets helper variables */
public void reset()
{
Added:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterAvailableInLifeCycleMethodTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterAvailableInLifeCycleMethodTestCase.java
(rev 0)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/tck/portletrequests/PublicRenderParameterAvailableInLifeCycleMethodTestCase.java 2008-01-22
20:13:25 UTC (rev 9565)
@@ -0,0 +1,190 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.test.portlet.jsr286.tck.portletrequests;
+
+import org.jboss.portal.unit.PortletTestCase;
+import org.jboss.portal.unit.PortletTestContext;
+import org.jboss.portal.unit.Assertion;
+import org.jboss.portal.unit.annotations.TestCase;
+import org.jboss.portal.unit.actions.PortletRenderTestAction;
+import org.jboss.portal.unit.actions.PortletActionTestAction;
+import org.jboss.portal.unit.actions.PortletEventTestAction;
+import org.jboss.portal.unit.actions.PortletResourceTestAction;
+import org.jboss.portal.test.portlet.framework.UTP5;
+import org.jboss.portal.common.http.HttpRequest;
+import org.jboss.unit.driver.DriverResponse;
+import org.jboss.unit.driver.response.EndTestResponse;
+import org.jboss.unit.remote.driver.handler.http.response.InvokeGetResponse;
+import org.jboss.unit.remote.driver.handler.http.response.InvokePostResponse;
+import static org.jboss.unit.api.Assert.*;
+
+import javax.portlet.Portlet;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.PortletURL;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import javax.portlet.EventRequest;
+import javax.portlet.EventResponse;
+import javax.portlet.ResourceURL;
+import javax.portlet.ResourceRequest;
+import javax.portlet.ResourceResponse;
+import java.io.IOException;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Collections;
+
+/**
+ * A portlet can access the public render parameters in any lifecycle method via the
+ * getPublicParameterMap method of the portlet request. In addition the portlet can
access
+ * public render parameters via the getParameter and getParameterMap methods. In the
+ * case of a processAction or serveResource call the public parameters are merged with
+ * the action / resource parameters set on the action / resource URL. If a action or
resource
+ * parameter has the same name as a public render parameter the public render parameter
+ * values must be the last entries in the parameter value array.
+ *
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+(a)TestCase({Assertion.JSR168_1000})
+public class PublicRenderParameterAvailableInLifeCycleMethodTestCase
+{
+
+ /** . */
+ private Map<String, String[]> expectedClientDataMap;
+
+ /** . */
+ private Map<String, String[]> expectedClientDataPrivateMap;
+
+ /** . */
+ private Map<String, String[]> expectedPublicMap;
+
+ public PublicRenderParameterAvailableInLifeCycleMethodTestCase(PortletTestCase seq)
+ {
+ expectedClientDataMap = new HashMap<String, String[]>();
+ expectedClientDataMap.put("foo",new
String[]{"foo_value1","foo_value2"});
+ expectedClientDataMap.put("bar",new
String[]{"is_bar_value1","is_bar_value2","bar_value1","bar_value2"});
+ expectedClientDataMap.put("juu",new
String[]{"form_juu_value1","form_juu_value2","juu_value1","juu_value2"});
+ expectedClientDataMap.put("daa",new
String[]{"is_daa_value1","is_daa_value2","form_daa_value1","form_daa_value2","daa_value1","daa_value2"});
+
+ //
+ expectedClientDataPrivateMap = new HashMap<String, String[]>();
+ expectedClientDataPrivateMap.put("bar",new
String[]{"is_bar_value1","is_bar_value2"});
+ expectedClientDataPrivateMap.put("juu",new
String[]{"form_juu_value1","form_juu_value2"});
+ expectedClientDataPrivateMap.put("daa",new
String[]{"is_daa_value1","is_daa_value2","form_daa_value1","form_daa_value2"});
+
+ //
+ expectedPublicMap = new HashMap<String, String[]>();
+ expectedPublicMap.put("foo",new
String[]{"foo_value1","foo_value2"});
+ expectedPublicMap.put("bar",new
String[]{"bar_value1","bar_value2"});
+ expectedPublicMap.put("juu",new
String[]{"juu_value1","juu_value2"});
+ expectedPublicMap.put("daa",new
String[]{"daa_value1","daa_value2"});
+
+ //
+ seq.bindAction(0, UTP5.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context)
+ {
+ PortletURL renderURL = response.createRenderURL();
+ renderURL.setParameter("foo", new
String[]{"foo_value1","foo_value2"});
+ renderURL.setParameter("bar", new
String[]{"bar_value1","bar_value2"});
+ renderURL.setParameter("juu", new
String[]{"juu_value1","juu_value2"});
+ renderURL.setParameter("daa", new
String[]{"daa_value1","daa_value2"});
+ return new InvokeGetResponse(renderURL.toString());
+ }
+ });
+ seq.bindAction(1, UTP5.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context)
+ {
+ PortletURL actionURL = response.createActionURL();
+ actionURL.setParameter("bar", new
String[]{"is_bar_value1","is_bar_value2"});
+ actionURL.setParameter("daa", new
String[]{"is_daa_value1","is_daa_value2"});
+
+ //
+ InvokePostResponse post = new InvokePostResponse(actionURL.toString());
+ HttpRequest.Form form = new HttpRequest.Form();
+ form.addParameter("juu", new
String[]{"form_juu_value1","form_juu_value2"});
+ form.addParameter("daa", new
String[]{"form_daa_value1","form_daa_value2"});
+ post.setBody(form);
+
+ //
+ return post;
+ }
+ });
+ seq.bindAction(2, UTP5.ACTION_JOIN_POINT, new PortletActionTestAction()
+ {
+ protected void run(Portlet portlet, ActionRequest request, ActionResponse
response, PortletTestContext context) throws PortletException, IOException
+ {
+ assertParameterMap(expectedClientDataMap, request);
+ assertEquals(expectedClientDataPrivateMap,
request.getPrivateParameterMap());
+ assertEquals(expectedPublicMap, request.getPublicParameterMap());
+ response.setEvent("Event", null);
+ }
+ });
+ seq.bindAction(2, UTP5.EVENT_JOIN_POINT, new PortletEventTestAction()
+ {
+ protected void run(Portlet portlet, EventRequest request, EventResponse
response, PortletTestContext context) throws PortletException, IOException
+ {
+ assertParameterMap(expectedPublicMap, request);
+ assertEquals(Collections.emptyMap(), request.getPrivateParameterMap());
+ assertEquals(expectedPublicMap, request.getPublicParameterMap());
+ }
+ });
+ seq.bindAction(2, UTP5.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context)
+ {
+ assertParameterMap(expectedPublicMap, request);
+ assertEquals(Collections.emptyMap(), request.getPrivateParameterMap());
+ assertEquals(expectedPublicMap, request.getPublicParameterMap());
+
+ //
+ ResourceURL resourceURL = response.createResourceURL();
+ resourceURL.setParameter("bar", new
String[]{"is_bar_value1","is_bar_value2"});
+ resourceURL.setParameter("daa", new
String[]{"is_daa_value1","is_daa_value2"});
+
+ //
+ InvokePostResponse post = new InvokePostResponse(resourceURL.toString());
+ HttpRequest.Form form = new HttpRequest.Form();
+ form.addParameter("juu", new
String[]{"form_juu_value1","form_juu_value2"});
+ form.addParameter("daa", new
String[]{"form_daa_value1","form_daa_value2"});
+ post.setBody(form);
+
+ //
+ return post;
+ }
+ });
+ seq.bindAction(3, UTP5.RESOURCE_JOIN_POINT, new PortletResourceTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, ResourceRequest request,
ResourceResponse response, PortletTestContext context) throws PortletException,
IOException
+ {
+ assertParameterMap(expectedClientDataMap, request);
+ assertEquals(expectedClientDataPrivateMap,
request.getPrivateParameterMap());
+ assertEquals(expectedPublicMap, request.getPublicParameterMap());
+ return new EndTestResponse();
+ }
+ });
+ }
+}
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/TestAction.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/TestAction.java 2008-01-22
20:11:35 UTC (rev 9564)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/TestAction.java 2008-01-22
20:13:25 UTC (rev 9565)
@@ -22,10 +22,55 @@
******************************************************************************/
package org.jboss.portal.unit;
+import javax.portlet.PortletRequest;
+import java.util.Map;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Collections;
+
+import static org.jboss.unit.api.Assert.*;
+import org.jboss.portal.common.util.Tools;
+
/**
* @author <a href="mailto:boleslaw.dawidowicz@jboss.org">Boleslaw
Dawidowicz</a>
* @version $Revision: 7018 $
*/
public abstract class TestAction
{
+
+ public final void assertParameterMap(Map<String, String[]> expectedMap,
PortletRequest request)
+ {
+ assertNotNull(request);
+
+ // Test getParameter(String name)
+ for (Map.Entry<String, String[]> entry : expectedMap.entrySet())
+ {
+ String expectedValue = entry.getValue()[0];
+ assertEquals(expectedValue, request.getParameter(entry.getKey()));
+ }
+
+ // Test getParameterValues(String name)
+ for (Map.Entry<String, String[]> entry : expectedMap.entrySet())
+ {
+ String[] expectedValues = entry.getValue();
+ assertEquals(expectedValues, request.getParameterValues(entry.getKey()));
+ }
+
+ // Test parameter names, we use list in order to catch eventually a wrong
Enumeration returned by the request
+ List<String> names = Tools.toList(request.getParameterNames());
+ List<String> expectedNames = new
ArrayList<String>(expectedMap.keySet());
+ Collections.sort(names);
+ Collections.sort(expectedNames);
+ assertEquals(expectedNames, names);
+
+ //
+ Map<String, String[]> map = request.getParameterMap();
+ assertNotNull(map);
+ assertEquals(expectedMap.size(), map.size());
+ for (Map.Entry<String, String[]> entry : expectedMap.entrySet())
+ {
+ String[] expectedValues = map.get(entry.getKey());
+ assertEquals(entry.getValue(), expectedValues);
+ }
+ }
}
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletActionTestAction.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletActionTestAction.java 2008-01-22
20:11:35 UTC (rev 9564)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletActionTestAction.java 2008-01-22
20:13:25 UTC (rev 9565)
@@ -41,15 +41,27 @@
public abstract class PortletActionTestAction extends TestAction
{
- public DriverResponse execute(Portlet portlet, ActionRequest request, ActionResponse
response, PortletTestContext context) throws PortletException, IOException
+ public final DriverResponse execute(Portlet portlet, ActionRequest request,
ActionResponse response, PortletTestContext context) throws PortletException, IOException
{
try
{
- run(portlet, request, response, context);
+ runWithRuntimeException(portlet, request, response, context);
//
return null;
}
+ catch (AssertionError t)
+ {
+ return new FailureResponse(Failure.createFailure(t));
+ }
+ }
+
+ protected void runWithRuntimeException(Portlet portlet, ActionRequest request,
ActionResponse response, PortletTestContext context) throws PortletException, IOException
+ {
+ try
+ {
+ run(portlet, request, response, context);
+ }
catch (Exception e)
{
if (e instanceof PortletException)
@@ -60,12 +72,8 @@
{
throw (IOException)e;
}
- return new FailureResponse(Failure.createAssertionFailure(e));
+ throw new AssertionError(e);
}
- catch (AssertionError t)
- {
- return new FailureResponse(Failure.createFailure(t));
- }
}
protected abstract void run(Portlet portlet, ActionRequest request, ActionResponse
response, PortletTestContext context) throws PortletException, IOException;
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletEventTestAction.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletEventTestAction.java 2008-01-22
20:11:35 UTC (rev 9564)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletEventTestAction.java 2008-01-22
20:13:25 UTC (rev 9565)
@@ -41,7 +41,7 @@
public abstract class PortletEventTestAction extends TestAction
{
- public DriverResponse execute(Portlet portlet, EventRequest request, EventResponse
response, PortletTestContext context) throws PortletException, IOException
+ public final DriverResponse execute(Portlet portlet, EventRequest request,
EventResponse response, PortletTestContext context) throws PortletException, IOException
{
try
{
Modified: modules/portlet/trunk/test/src/test/build.xml
===================================================================
--- modules/portlet/trunk/test/src/test/build.xml 2008-01-22 20:11:35 UTC (rev 9564)
+++ modules/portlet/trunk/test/src/test/build.xml 2008-01-22 20:13:25 UTC (rev 9565)
@@ -539,7 +539,7 @@
<configuration>
<property name="cargo.servlet.port" value="8080"/>
<property name="cargo.logging" value="high"/>
- <!--<property name="cargo.jvmargs" value="-Xdebug
-Xnoagent -Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"/>-->
+ <property name="cargo.jvmargs" value="-Xdebug -Xnoagent
-Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"/>
<deployable type="war"
file="${test.temp.lib}/manager.war"/>
<deployable type="war"
file="${test.temp.lib}/tomcat-6.0/portlet-test.war"/>
</configuration>
Modified:
modules/portlet/trunk/test/src/test/resources/jsr286/tck/portletrequests-war/WEB-INF/portlet.xml
===================================================================
---
modules/portlet/trunk/test/src/test/resources/jsr286/tck/portletrequests-war/WEB-INF/portlet.xml 2008-01-22
20:11:35 UTC (rev 9564)
+++
modules/portlet/trunk/test/src/test/resources/jsr286/tck/portletrequests-war/WEB-INF/portlet.xml 2008-01-22
20:13:25 UTC (rev 9565)
@@ -64,6 +64,28 @@
<supported-public-render-parameter>foo</supported-public-render-parameter>
</portlet>
+ <portlet>
+ <portlet-name>UniversalTestPortletE</portlet-name>
+
<portlet-class>org.jboss.portal.test.portlet.framework.UTP5</portlet-class>
+ <supports>
+ <mime-type>text/html</mime-type>
+ </supports>
+ <supported-processing-event>
+ <name>Event</name>
+ </supported-processing-event>
+ <supported-publishing-event>
+ <name>Event</name>
+ </supported-publishing-event>
+
<supported-public-render-parameter>foo</supported-public-render-parameter>
+
<supported-public-render-parameter>bar</supported-public-render-parameter>
+
<supported-public-render-parameter>juu</supported-public-render-parameter>
+
<supported-public-render-parameter>daa</supported-public-render-parameter>
+ </portlet>
+
+ <event-definition>
+ <name>Event</name>
+ </event-definition>
+
<public-render-parameter>
<identifier>foo</identifier>
<name>Foo</name>
@@ -74,4 +96,14 @@
<name>Bar</name>
</public-render-parameter>
+ <public-render-parameter>
+ <identifier>juu</identifier>
+ <name>Juu</name>
+ </public-render-parameter>
+
+ <public-render-parameter>
+ <identifier>daa</identifier>
+ <name>Daa</name>
+ </public-render-parameter>
+
</portlet-app>