Author: julien(a)jboss.com
Date: 2008-01-23 18:43:05 -0500 (Wed, 23 Jan 2008)
New Revision: 9593
Added:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/ext/portletrequests/ReadCookieTestCase.java
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractClientContext.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/ClientContext.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/spi/ClientContextSupport.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/PortletRenderTestAction.java
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletResourceTestAction.java
modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletrequests-war/WEB-INF/portlet.xml
Log:
- implemented getCookies()
- tested getCookies()
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java 2008-01-23
22:49:55 UTC (rev 9592)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletRequestImpl.java 2008-01-23
23:43:05 UTC (rev 9593)
@@ -73,6 +73,7 @@
public abstract class PortletRequestImpl implements PortletRequest
{
+ /** . */
protected static final Logger log = Logger.getLogger(PortletRequestImpl.class);
protected PortletInvocation invocation;
@@ -463,7 +464,17 @@
public Cookie[] getCookies()
{
- throw new NotYetImplemented();
+ List<Cookie> cookies = clientContext.getCookies();
+
+ //
+ if (cookies.isEmpty())
+ {
+ return null;
+ }
+ else
+ {
+ return cookies.toArray(new Cookie[cookies.size()]);
+ }
}
public Map<String, String[]> getPrivateParameterMap()
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractClientContext.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractClientContext.java 2008-01-23
22:49:55 UTC (rev 9592)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractClientContext.java 2008-01-23
23:43:05 UTC (rev 9593)
@@ -25,6 +25,7 @@
import org.jboss.portal.portlet.spi.ClientContext;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.Cookie;
import java.util.List;
import java.util.Set;
import java.util.Map;
@@ -32,6 +33,7 @@
import java.util.Enumeration;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Arrays;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -46,6 +48,9 @@
/** . */
private final Map<String, List<String>> headers;
+ /** . */
+ private final List<Cookie> cookies;
+
public AbstractClientContext(HttpServletRequest request)
{
Map<String, List<String>> headers = new HashMap<String,
List<String>>();
@@ -75,10 +80,21 @@
headers.put(headerName, headerValues);
}
}
+ List<Cookie> cookies = null;
+ Cookie[] tmp = request.getCookies();
+ if (tmp == null || tmp.length == 0)
+ {
+ cookies = Collections.emptyList();
+ }
+ else
+ {
+ cookies = Arrays.asList(tmp);
+ }
//
this.headers = headers;
this.method = request.getMethod();
+ this.cookies = cookies;
}
public String getMethod()
@@ -99,4 +115,9 @@
{
return headers.keySet();
}
+
+ public List<Cookie> getCookies()
+ {
+ return cookies;
+ }
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/ClientContext.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/ClientContext.java 2008-01-23
22:49:55 UTC (rev 9592)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/ClientContext.java 2008-01-23
23:43:05 UTC (rev 9593)
@@ -22,6 +22,7 @@
******************************************************************************/
package org.jboss.portal.portlet.spi;
+import javax.servlet.http.Cookie;
import java.util.Iterator;
import java.util.Set;
import java.util.List;
@@ -35,8 +36,17 @@
String getMethod();
- List<String> getProperties(String name);
+ /**
+ * Returns the list of values of a specified property as seen by the client.
+ *
+ * @param name the property
+ * @return the list of properties
+ * @throws IllegalArgumentException if the name is null
+ */
+ List<String> getProperties(String name) throws IllegalArgumentException;
Set<String> getPropertyNames();
+ List<Cookie> getCookies();
+
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/spi/ClientContextSupport.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/spi/ClientContextSupport.java 2008-01-23
22:49:55 UTC (rev 9592)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/spi/ClientContextSupport.java 2008-01-23
23:43:05 UTC (rev 9593)
@@ -24,6 +24,7 @@
import org.jboss.portal.portlet.spi.ClientContext;
+import javax.servlet.http.Cookie;
import java.util.List;
import java.util.Set;
@@ -47,4 +48,9 @@
{
throw new UnsupportedOperationException();
}
+
+ public List<Cookie> getCookies()
+ {
+ throw new UnsupportedOperationException();
+ }
}
Added:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/ext/portletrequests/ReadCookieTestCase.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/ext/portletrequests/ReadCookieTestCase.java
(rev 0)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/test/portlet/jsr286/ext/portletrequests/ReadCookieTestCase.java 2008-01-23
23:43:05 UTC (rev 9593)
@@ -0,0 +1,131 @@
+/******************************************************************************
+ * 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.ext.portletrequests;
+
+import org.jboss.portal.unit.PortletTestCase;
+import org.jboss.portal.unit.PortletTestContext;
+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.unit.driver.DriverResponse;
+import org.jboss.unit.driver.response.EndTestResponse;
+import org.jboss.unit.remote.driver.handler.http.response.InvokeGetResponse;
+
+import static org.jboss.unit.api.Assert.*;
+
+import javax.portlet.Portlet;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.PortletException;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.EventRequest;
+import javax.portlet.EventResponse;
+import javax.portlet.ResourceRequest;
+import javax.portlet.ResourceResponse;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+@TestCase
+public class ReadCookieTestCase
+{
+ public ReadCookieTestCase(PortletTestCase seq)
+ {
+ seq.bindAction(0, UTP5.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context) throws PortletException, IOException
+ {
+ Map<String, String> cookieMap = createCookieMap(request);
+ assertFalse(cookieMap.containsKey("foo"));
+ assertFalse(cookieMap.containsKey("bar"));
+
+ // Invoke render with header
+ InvokeGetResponse get = new
InvokeGetResponse(response.createRenderURL().toString());
+ get.addHeader("Cookie").addElement("foo=foo_value1;
bar=bar_value2");
+ return get;
+ }
+ });
+ seq.bindAction(1, UTP5.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context) throws PortletException, IOException
+ {
+ Map<String, String> cookieMap = createCookieMap(request);
+ assertEquals("foo_value1", cookieMap.get("foo"));
+ assertEquals("bar_value2", cookieMap.get("bar"));
+
+ // Invoke render with header
+ InvokeGetResponse get = new
InvokeGetResponse(response.createActionURL().toString());
+ get.addHeader("Cookie").addElement("foo=foo_value3;
bar=bar_value4");
+ return get;
+ }
+ });
+ seq.bindAction(2, UTP5.ACTION_JOIN_POINT, new PortletActionTestAction()
+ {
+ protected void run(Portlet portlet, ActionRequest request, ActionResponse
response, PortletTestContext context) throws PortletException, IOException
+ {
+ Map<String, String> cookieMap = createCookieMap(request);
+ assertEquals("foo_value3", cookieMap.get("foo"));
+ assertEquals("bar_value4", cookieMap.get("bar"));
+ 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
+ {
+ Map<String, String> cookieMap = createCookieMap(request);
+ assertEquals("foo_value3", cookieMap.get("foo"));
+ assertEquals("bar_value4", cookieMap.get("bar"));
+ }
+ });
+ seq.bindAction(2, UTP5.RENDER_JOIN_POINT, new PortletRenderTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context) throws PortletException, IOException
+ {
+ // Invoke render with header
+ InvokeGetResponse get = new
InvokeGetResponse(response.createResourceURL().toString());
+ get.addHeader("Cookie").addElement("foo=foo_value5;
bar=bar_value6");
+ return get;
+ }
+ });
+ seq.bindAction(3, UTP5.RESOURCE_JOIN_POINT, new PortletResourceTestAction()
+ {
+ protected DriverResponse run(Portlet portlet, ResourceRequest request,
ResourceResponse response, PortletTestContext context) throws PortletException,
IOException
+ {
+ Map<String, String> cookieMap = createCookieMap(request);
+ assertEquals("foo_value5", cookieMap.get("foo"));
+ assertEquals("bar_value6", cookieMap.get("bar"));
+
+ //
+ 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-23
22:49:55 UTC (rev 9592)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/TestAction.java 2008-01-23
23:43:05 UTC (rev 9593)
@@ -23,10 +23,12 @@
package org.jboss.portal.unit;
import javax.portlet.PortletRequest;
+import javax.servlet.http.Cookie;
import java.util.Map;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import static org.jboss.unit.api.Assert.*;
import org.jboss.portal.common.util.Tools;
@@ -68,7 +70,7 @@
* @param request the actual portlet request
* @throws AssertionError if the provided request does not match the expected map
state
*/
- public final void assertParameterMap(Map<String, String[]> expectedMap,
PortletRequest request) throws AssertionError
+ protected final void assertParameterMap(Map<String, String[]> expectedMap,
PortletRequest request) throws AssertionError
{
assertNotNull(request);
@@ -105,7 +107,7 @@
* @param map the actual map
* @throws AssertionError if the provided map is not equals to the expected map
*/
- public final void assertParameterMap(Map<String, String[]> expectedMap,
Map<String, String[]> map) throws AssertionError
+ protected final void assertParameterMap(Map<String, String[]> expectedMap,
Map<String, String[]> map) throws AssertionError
{
assertNotNull(map);
assertEquals(expectedMap.size(), map.size());
@@ -115,4 +117,24 @@
assertEquals(entry.getValue(), expectedValues);
}
}
+
+ /**
+ * Build a cookie map from the request.
+ *
+ * @param request the request
+ * @return the cookie map
+ */
+ protected final Map<String, String> createCookieMap(PortletRequest request)
+ {
+ Map<String, String> cookieMap = new HashMap<String, String>();
+ Cookie[] cookies = request.getCookies();
+ if (cookies != null)
+ {
+ for (Cookie cookie : cookies)
+ {
+ cookieMap.put(cookie.getName(), cookie.getValue());
+ }
+ }
+ return cookieMap;
+ }
}
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletRenderTestAction.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletRenderTestAction.java 2008-01-23
22:49:55 UTC (rev 9592)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletRenderTestAction.java 2008-01-23
23:43:05 UTC (rev 9593)
@@ -45,7 +45,7 @@
public abstract class PortletRenderTestAction extends TestAction
{
- public DriverResponse execute(Portlet portlet, RenderRequest request, RenderResponse
response, PortletTestContext context) throws PortletException, IOException
+ public final DriverResponse execute(Portlet portlet, RenderRequest request,
RenderResponse response, PortletTestContext context) throws PortletException, IOException
{
try
{
Modified:
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletResourceTestAction.java
===================================================================
---
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletResourceTestAction.java 2008-01-23
22:49:55 UTC (rev 9592)
+++
modules/portlet/trunk/portlet/src/test/java/org/jboss/portal/unit/actions/PortletResourceTestAction.java 2008-01-23
23:43:05 UTC (rev 9593)
@@ -69,7 +69,7 @@
this(true);
}
- public DriverResponse execute(Portlet portlet, ResourceRequest request,
ResourceResponse response, PortletTestContext context) throws PortletException,
IOException
+ public final DriverResponse execute(Portlet portlet, ResourceRequest request,
ResourceResponse response, PortletTestContext context) throws PortletException,
IOException
{
// We attempty to do it
boolean sendResponse = false;
Modified:
modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletrequests-war/WEB-INF/portlet.xml
===================================================================
---
modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletrequests-war/WEB-INF/portlet.xml 2008-01-23
22:49:55 UTC (rev 9592)
+++
modules/portlet/trunk/test/src/test/resources/jsr286/ext/portletrequests-war/WEB-INF/portlet.xml 2008-01-23
23:43:05 UTC (rev 9593)
@@ -68,6 +68,14 @@
</supports>
</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>
+ </portlet>
+
<event-definition>
<name>Event</name>
</event-definition>