Author: julien(a)jboss.com
Date: 2008-01-23 17:49:55 -0500 (Wed, 23 Jan 2008)
New Revision: 9592
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ClientDataRequestImpl.java
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/PortletResponseImpl.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/impl/spi/AbstractPortalContext.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/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java
Log:
refactored request properties using ClientContext
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ClientDataRequestImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ClientDataRequestImpl.java 2008-01-23
22:37:14 UTC (rev 9591)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ClientDataRequestImpl.java 2008-01-23
22:49:55 UTC (rev 9592)
@@ -25,8 +25,6 @@
import org.jboss.portal.portlet.invocation.ActionInvocation;
import org.jboss.portal.portlet.invocation.ResourceInvocation;
import org.jboss.portal.portlet.spi.RequestContext;
-import org.jboss.portal.portlet.spi.ClientContext;
-import org.jboss.portal.common.NotYetImplemented;
import javax.portlet.ClientDataRequest;
import java.io.InputStream;
@@ -44,16 +42,12 @@
/** . */
protected final RequestContext requestContext;
- /** . */
- protected final ClientContext clientContext;
-
public ClientDataRequestImpl(ActionInvocation invocation)
{
super(invocation);
//
this.requestContext = invocation.getRequestContext();
- this.clientContext = invocation.getClientContext();
}
public ClientDataRequestImpl(ResourceInvocation invocation)
@@ -62,7 +56,6 @@
//
this.requestContext = invocation.getRequestContext();
- this.clientContext = invocation.getClientContext();
}
public InputStream getPortletInputStream() throws IOException
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:37:14 UTC (rev 9591)
+++
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)
@@ -41,6 +41,7 @@
import org.jboss.portal.portlet.spi.SecurityContext;
import org.jboss.portal.portlet.spi.UserContext;
import org.jboss.portal.portlet.spi.WindowContext;
+import org.jboss.portal.portlet.spi.ClientContext;
import org.jboss.portal.portlet.state.PropertyContext;
import javax.portlet.PortalContext;
@@ -57,12 +58,10 @@
import java.security.Principal;
import java.util.Collections;
import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import java.util.Collection;
+import java.util.List;
/**
* PortletRequest implemention. The parameter implementation is left to subclasses that
can implement it differently.
@@ -77,6 +76,7 @@
protected static final Logger log = Logger.getLogger(PortletRequestImpl.class);
protected PortletInvocation invocation;
+ protected ClientContext clientContext;
protected UserContext userContext;
protected SecurityContext securityContext;
protected ServerContext serverContext;
@@ -111,6 +111,7 @@
this.userContext = userContext;
this.securityContext = invocation.getSecurityContext();
this.serverContext = invocation.getServerContext();
+ this.clientContext = invocation.getClientContext();
this.windowContext = invocation.getWindowContext();
this.container = container;
this.dreq = invocation.getDispatchedRequest();
@@ -219,24 +220,17 @@
}
//
- Object prop = invocation.getAttribute(PortletInvocation.REQUEST_PROPERTIES_SCOPE,
name);
- if (prop instanceof Collection)
- {
- Iterator iterator = ((Collection)prop).iterator();
- if (iterator.hasNext())
- {
- prop = iterator.next();
- }
- }
+ List<String> properties = clientContext.getProperties(name);
//
- if (prop == null)
+ if (properties == null || properties.size() == 0)
{
- // Otherwise the request header
- prop = dreq.getHeader(name);
+ return null;
}
-
- return (String)prop;
+ else
+ {
+ return properties.get(0);
+ }
}
public Enumeration<String> getProperties(String name)
@@ -247,35 +241,23 @@
}
//
- Object prop = invocation.getAttribute(PortletInvocation.REQUEST_PROPERTIES_SCOPE,
name);
+ List<String> properties = clientContext.getProperties(name);
- if (prop instanceof String)
+ //
+ if (properties == null)
{
- return Tools.toEnumeration((String)prop);
+ return Tools.emptyEnumeration();
}
- else if (prop instanceof Collection)
- {
- return Collections.enumeration(((Collection<String>)prop));
- }
else
{
- // Otherwise the request headers
- return (Enumeration<String>)dreq.getHeaders(name);
+ return Collections.enumeration(properties);
}
}
public Enumeration<String> getPropertyNames()
{
- // First the properties
- Set<String> names = new
HashSet<String>((Set<String>)invocation.getContext().getAttributeResolver(PortletInvocation.REQUEST_PROPERTIES_SCOPE).getKeys());
+ Set<String> names = clientContext.getPropertyNames();
- // Then put the headers
- for (Enumeration<String> e =
(Enumeration<String>)dreq.getHeaderNames();e.hasMoreElements();)
- {
- String name = e.nextElement();
- names.add(name);
- }
-
//
return Collections.enumeration(names);
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletResponseImpl.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletResponseImpl.java 2008-01-23
22:37:14 UTC (rev 9591)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/PortletResponseImpl.java 2008-01-23
22:49:55 UTC (rev 9592)
@@ -136,6 +136,8 @@
public Element createElement(String s) throws DOMException
{
+
+
throw new NotYetImplemented();
}
}
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:37:14 UTC (rev 9591)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractClientContext.java 2008-01-23
22:49:55 UTC (rev 9592)
@@ -25,6 +25,13 @@
import org.jboss.portal.portlet.spi.ClientContext;
import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Set;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Enumeration;
+import java.util.ArrayList;
+import java.util.Collections;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -36,8 +43,41 @@
/** . */
private final String method;
+ /** . */
+ private final Map<String, List<String>> headers;
+
public AbstractClientContext(HttpServletRequest request)
{
+ Map<String, List<String>> headers = new HashMap<String,
List<String>>();
+ for (Enumeration e = request.getHeaderNames();e.hasMoreElements();)
+ {
+ String headerName = (String)e.nextElement();
+ Enumeration f = request.getHeaders(headerName);
+ if (f.hasMoreElements())
+ {
+ List<String> headerValues;
+ String headerValue = (String)f.nextElement();
+ if (f.hasMoreElements())
+ {
+ headerValues = new ArrayList<String>(4);
+ headerValues.add(headerValue);
+ headerValues.add((String)f.nextElement());
+ while (f.hasMoreElements())
+ {
+ headerValue = (String)f.nextElement();
+ headerValues.add(headerValue);
+ }
+ }
+ else
+ {
+ headerValues = Collections.singletonList(headerValue);
+ }
+ headers.put(headerName, headerValues);
+ }
+ }
+
+ //
+ this.headers = headers;
this.method = request.getMethod();
}
@@ -45,4 +85,18 @@
{
return method;
}
+
+ public List<String> getProperties(String name)
+ {
+ if (name == null)
+ {
+ throw new IllegalArgumentException("No null name accepted");
+ }
+ return headers.get(name);
+ }
+
+ public Set<String> getPropertyNames()
+ {
+ return headers.keySet();
+ }
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractPortalContext.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractPortalContext.java 2008-01-23
22:37:14 UTC (rev 9591)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractPortalContext.java 2008-01-23
22:49:55 UTC (rev 9592)
@@ -75,9 +75,14 @@
this.props = props;
}
+ public AbstractPortalContext(Map<String, String> props)
+ {
+ this(ALL_WINDOW_STATES, ALL_MODES, props);
+ }
+
public AbstractPortalContext()
{
- this(ALL_WINDOW_STATES, ALL_MODES, EMPTY_STRING_TO_STRING_MAP);
+ this(EMPTY_STRING_TO_STRING_MAP);
}
public String getInfo()
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:37:14 UTC (rev 9591)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/ClientContext.java 2008-01-23
22:49:55 UTC (rev 9592)
@@ -22,6 +22,10 @@
******************************************************************************/
package org.jboss.portal.portlet.spi;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.List;
+
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 630 $
@@ -31,4 +35,8 @@
String getMethod();
+ List<String> getProperties(String name);
+
+ Set<String> getPropertyNames();
+
}
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:37:14 UTC (rev 9591)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/spi/ClientContextSupport.java 2008-01-23
22:49:55 UTC (rev 9592)
@@ -24,6 +24,9 @@
import org.jboss.portal.portlet.spi.ClientContext;
+import java.util.List;
+import java.util.Set;
+
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 630 $
@@ -34,4 +37,14 @@
{
throw new UnsupportedOperationException();
}
+
+ public List<String> getProperties(String name)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public Set<String> getPropertyNames()
+ {
+ throw new UnsupportedOperationException();
+ }
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java 2008-01-23
22:37:14 UTC (rev 9591)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java 2008-01-23
22:49:55 UTC (rev 9592)
@@ -87,9 +87,18 @@
/** . */
private final Logger log;
+ /** . */
+ private final AbstractPortalContext portalContext;
+
public PortletController() throws IllegalRequestException,
UnsupportedEncodingException
{
- log = Logger.getLogger(PortletController.class);
+ Map<String, String> portalProperties = new HashMap<String, String>();
+ portalProperties.put("javax.portlet.markup.head.element.support",
"true");
+ AbstractPortalContext portalContext = new AbstractPortalContext(portalProperties);
+
+ //
+ this.log = Logger.getLogger(PortletController.class);
+ this.portalContext = portalContext;
}
private PortletInvocationResponse handle(PortletControllerContext context,
ContainerRequest containerRequest) throws PortletInvokerException, IOException
@@ -162,7 +171,7 @@
actionInvocation.setInstanceContext(instanceContext);
actionInvocation.setUserContext(new AbstractUserContext(req));
actionInvocation.setWindowContext(new
AbstractWindowContext(portlet.getContext().getId()));
- actionInvocation.setPortalContext(new AbstractPortalContext());
+ actionInvocation.setPortalContext(portalContext);
actionInvocation.setSecurityContext(new AbstractSecurityContext(req));
actionInvocation.setRequestContext(new AbstractRequestContext(req));
actionInvocation.setTarget(instanceContext.getTarget());
@@ -257,7 +266,7 @@
resourceInvocation.setInstanceContext(instanceContext);
resourceInvocation.setUserContext(new AbstractUserContext(req));
resourceInvocation.setWindowContext(new
AbstractWindowContext(portlet.getContext().getId()));
- resourceInvocation.setPortalContext(new AbstractPortalContext());
+ resourceInvocation.setPortalContext(portalContext);
resourceInvocation.setSecurityContext(new AbstractSecurityContext(req));
resourceInvocation.setRequestContext(new AbstractRequestContext(req));
resourceInvocation.setTarget(instanceContext.getTarget());
@@ -313,7 +322,7 @@
eventInvocation.setInstanceContext(instanceContext);
eventInvocation.setUserContext(new AbstractUserContext(req));
eventInvocation.setWindowContext(new
AbstractWindowContext(portlet.getContext().getId()));
- eventInvocation.setPortalContext(new AbstractPortalContext());
+ eventInvocation.setPortalContext(portalContext);
eventInvocation.setSecurityContext(new AbstractSecurityContext(req));
eventInvocation.setTarget(instanceContext.getTarget());
@@ -609,7 +618,7 @@
render.setInstanceContext(instanceContext);
render.setUserContext(new AbstractUserContext(req));
render.setWindowContext(new
AbstractWindowContext(portlet.getContext().getId()));
- render.setPortalContext(new AbstractPortalContext());
+ render.setPortalContext(portalContext);
render.setSecurityContext(new AbstractSecurityContext(req));
render.setTarget(instanceContext.getTarget());