Author: julien(a)jboss.com
Date: 2008-01-21 08:55:49 -0500 (Mon, 21 Jan 2008)
New Revision: 9546
Added:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractRequestContext.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/RequestContext.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/spi/RequestContextSupport.java
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/spi/AbstractActionContext.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/invocation/PortletInvocation.java
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/ActionContext.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java
Log:
- introduce request context to hold the services related to the http request provided by
the client when it performs a POST
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-21
13:25:38 UTC (rev 9545)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/jsr168/api/ClientDataRequestImpl.java 2008-01-21
13:55:49 UTC (rev 9546)
@@ -23,7 +23,7 @@
package org.jboss.portal.portlet.impl.jsr168.api;
import org.jboss.portal.portlet.invocation.PortletInvocation;
-import org.jboss.portal.portlet.spi.ActionContext;
+import org.jboss.portal.portlet.spi.RequestContext;
import org.jboss.portal.common.NotYetImplemented;
import javax.portlet.ClientDataRequest;
@@ -40,47 +40,47 @@
{
/** . */
- protected final ActionContext actionContext;
+ protected final RequestContext requestContext;
public ClientDataRequestImpl(PortletInvocation invocation)
{
super(invocation);
//
- this.actionContext = (ActionContext)invocation.getPortletContext();
+ this.requestContext = invocation.getRequestContext();
}
public InputStream getPortletInputStream() throws IOException
{
- if
("application/x-www-form-urlencoded".equals(actionContext.getContentType()))
+ if
("application/x-www-form-urlencoded".equals(requestContext.getContentType()))
{
throw new IllegalStateException();
}
- return actionContext.getInputStream();
+ return requestContext.getInputStream();
}
public BufferedReader getReader() throws UnsupportedEncodingException, IOException
{
- if
("application/x-www-form-urlencoded".equals(actionContext.getContentType()))
+ if
("application/x-www-form-urlencoded".equals(requestContext.getContentType()))
{
throw new IllegalStateException();
}
- return actionContext.getReader();
+ return requestContext.getReader();
}
public String getCharacterEncoding()
{
- return actionContext.getCharacterEncoding();
+ return requestContext.getCharacterEncoding();
}
public String getContentType()
{
- return actionContext.getContentType();
+ return requestContext.getContentType();
}
public int getContentLength()
{
- return actionContext.getContentLength();
+ return requestContext.getContentLength();
}
public void setCharacterEncoding(String s) throws UnsupportedEncodingException
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractActionContext.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractActionContext.java 2008-01-21
13:25:38 UTC (rev 9545)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractActionContext.java 2008-01-21
13:55:49 UTC (rev 9546)
@@ -29,10 +29,6 @@
import org.jboss.portal.common.util.MarkupInfo;
import org.jboss.portal.common.util.ParameterMap;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 1.1 $
@@ -63,31 +59,6 @@
this.form = form;
}
- public String getCharacterEncoding()
- {
- return getClientRequest().getCharacterEncoding();
- }
-
- public BufferedReader getReader() throws IOException
- {
- return getClientRequest().getReader();
- }
-
- public InputStream getInputStream() throws IOException
- {
- return getClientRequest().getInputStream();
- }
-
- public int getContentLength()
- {
- return getClientRequest().getContentLength();
- }
-
- public String getContentType()
- {
- return getClientRequest().getContentType();
- }
-
public StateString getInteractionState()
{
return interactionState;
Added:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractRequestContext.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractRequestContext.java
(rev 0)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/impl/spi/AbstractRequestContext.java 2008-01-21
13:55:49 UTC (rev 9546)
@@ -0,0 +1,77 @@
+/******************************************************************************
+ * 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.portlet.impl.spi;
+
+import org.jboss.portal.portlet.spi.RequestContext;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+public class AbstractRequestContext implements RequestContext
+{
+
+ /** . */
+ private final HttpServletRequest clientRequest;
+
+ public AbstractRequestContext(HttpServletRequest clientRequest)
+ {
+ if (clientRequest == null)
+ {
+ throw new IllegalArgumentException("No client request provided");
+ }
+
+ //
+ this.clientRequest = clientRequest;
+ }
+
+ public String getCharacterEncoding()
+ {
+ return clientRequest.getCharacterEncoding();
+ }
+
+ public BufferedReader getReader() throws IOException
+ {
+ return clientRequest.getReader();
+ }
+
+ public InputStream getInputStream() throws IOException
+ {
+ return clientRequest.getInputStream();
+ }
+
+ public int getContentLength()
+ {
+ return clientRequest.getContentLength();
+ }
+
+ public String getContentType()
+ {
+ return clientRequest.getContentType();
+ }
+}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/invocation/PortletInvocation.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/invocation/PortletInvocation.java 2008-01-21
13:25:38 UTC (rev 9545)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/invocation/PortletInvocation.java 2008-01-21
13:55:49 UTC (rev 9546)
@@ -32,6 +32,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.RequestContext;
import org.jboss.portal.portlet.PortletContext;
import javax.servlet.http.HttpServletRequest;
@@ -82,6 +83,9 @@
/** The window context. */
protected WindowContext windowContext;
+ /** The request context. */
+ protected RequestContext requestContext;
+
/** The window states this portlet can accept. */
protected Set supportedWindowStates;
@@ -236,4 +240,14 @@
{
this.windowContext = windowContext;
}
+
+ public RequestContext getRequestContext()
+ {
+ return requestContext;
+ }
+
+ public void setRequestContext(RequestContext requestContext)
+ {
+ this.requestContext = requestContext;
+ }
}
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/ActionContext.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/ActionContext.java 2008-01-21
13:25:38 UTC (rev 9545)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/ActionContext.java 2008-01-21
13:55:49 UTC (rev 9546)
@@ -25,10 +25,6 @@
import org.jboss.portal.portlet.StateString;
import org.jboss.portal.common.util.ParameterMap;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-
/**
* Extends the generic invocation context to provide action invocation specific
input/services.
*
@@ -37,67 +33,7 @@
*/
public interface ActionContext extends PortletInvocationContext
{
-
/**
- * Returns the name of the character encoding used in the body of this request. This
method returns <code>null</code>
- * if the request does not specify a character encoding.
- *
- * @return a <code>String</code> containing the name of the chararacter
encoding, or <code>null</code> if the
- * request does not specify a character encoding.
- */
- String getCharacterEncoding();
-
- /**
- * Returns the length, in bytes, of the request body which is made available by the
input stream, or -1 if the length
- * is not known.
- *
- * @return an integer containing the length of the request body or -1 if the length is
not known
- */
- int getContentLength();
-
- /**
- * Retrieves the body of the HTTP request from the client to the portal as character
data using a
- * <code>BufferedReader</code>. The reader translates the character data
according to the character encoding used on
- * the body. Either this method or {@link #getInputStream} may be called to read the
body, not both.
- * <p/>
- * For HTTP POST data of type application/x-www-form-urlencoded this method throws an
- * <code>IllegalStateException</code> as this data has been already
processed by the portal/portlet-container and is
- * available as request parameters.
- *
- * @throws java.io.UnsupportedEncodingException if the character set encoding used is
not supported and
- * the text cannot be decoded
- * @throws java.lang.IllegalStateException if {@link #getInputStream} method has been
called on this request,
- * it is a HTTP POST data of type application/x-www-form-urlencoded.
- * @throws java.io.IOException if an input or output exception occurred
- * @return a <code>BufferedReader</code> containing the body of the
request
- * @see #getInputStream
- */
- BufferedReader getReader() throws IOException;
-
- /**
- * Retrieves the body of the HTTP request from client to portal as binary data using
an <CODE>InputStream</CODE>.
- * Either this method or {@link #getReader} may be called to read the body, but not
both.
- * <p/>
- * For HTTP POST data of type application/x-www-form-urlencoded this method throws an
- * <code>IllegalStateException</code> as this data has been already
processed by the portal/portlet-container and is
- * available as request parameters.
- *
- * @return an input stream containing the body of the request
- * @throws java.lang.IllegalStateException if getReader was already called, or it is a
HTTP POST data of type
- * application/x-www-form-urlencoded
- * @throws java.io.IOException if an input or output exception occurred
- */
- InputStream getInputStream() throws IOException, IllegalStateException;
-
- /**
- * Returns the MIME type of the body of the request, or null if the type is not
known.
- *
- * @return a <code>String</code> containing the name of the MIME type of
the request, or null if the type is not
- * known.
- */
- String getContentType();
-
- /**
* Returns the interaction state of the request.
*
* @return the interaction state
Added:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/RequestContext.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/RequestContext.java
(rev 0)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/spi/RequestContext.java 2008-01-21
13:55:49 UTC (rev 9546)
@@ -0,0 +1,93 @@
+/******************************************************************************
+ * 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.portlet.spi;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+public interface RequestContext
+{
+ /**
+ * Returns the name of the character encoding used in the body of this request. This
method returns <code>null</code>
+ * if the request does not specify a character encoding.
+ *
+ * @return a <code>String</code> containing the name of the chararacter
encoding, or <code>null</code> if the
+ * request does not specify a character encoding.
+ */
+ String getCharacterEncoding();
+
+ /**
+ * Returns the length, in bytes, of the request body which is made available by the
input stream, or -1 if the length
+ * is not known.
+ *
+ * @return an integer containing the length of the request body or -1 if the length is
not known
+ */
+ int getContentLength();
+
+ /**
+ * Returns the MIME type of the body of the request, or null if the type is not
known.
+ *
+ * @return a <code>String</code> containing the name of the MIME type of
the request, or null if the type is not
+ * known.
+ */
+ String getContentType();
+
+ /**
+ * Retrieves the body of the HTTP request from the client to the portal as character
data using a
+ * <code>BufferedReader</code>. The reader translates the character data
according to the character encoding used on
+ * the body. Either this method or {@link #getInputStream} may be called to read the
body, not both.
+ * <p/>
+ * For HTTP POST data of type application/x-www-form-urlencoded this method throws an
+ * <code>IllegalStateException</code> as this data has been already
processed by the portal/portlet-container and is
+ * available as request parameters.
+ *
+ * @throws java.io.UnsupportedEncodingException if the character set encoding used is
not supported and
+ * the text cannot be decoded
+ * @throws java.lang.IllegalStateException if {@link #getInputStream} method has been
called on this request,
+ * it is a HTTP POST data of type application/x-www-form-urlencoded.
+ * @throws java.io.IOException if an input or output exception occurred
+ * @return a <code>BufferedReader</code> containing the body of the
request
+ * @see #getInputStream
+ */
+ BufferedReader getReader() throws IOException;
+
+ /**
+ * Retrieves the body of the HTTP request from client to portal as binary data using
an <CODE>InputStream</CODE>.
+ * Either this method or {@link #getReader} may be called to read the body, but not
both.
+ * <p/>
+ * For HTTP POST data of type application/x-www-form-urlencoded this method throws an
+ * <code>IllegalStateException</code> as this data has been already
processed by the portal/portlet-container and is
+ * available as request parameters.
+ *
+ * @return an input stream containing the body of the request
+ * @throws java.lang.IllegalStateException if getReader was already called, or it is a
HTTP POST data of type
+ * application/x-www-form-urlencoded
+ * @throws java.io.IOException if an input or output exception occurred
+ */
+ InputStream getInputStream() throws IOException, IllegalStateException;
+}
Added:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/spi/RequestContextSupport.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/spi/RequestContextSupport.java
(rev 0)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/support/spi/RequestContextSupport.java 2008-01-21
13:55:49 UTC (rev 9546)
@@ -0,0 +1,61 @@
+/******************************************************************************
+ * 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.portlet.support.spi;
+
+import org.jboss.portal.portlet.spi.RequestContext;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+public class RequestContextSupport implements RequestContext
+{
+ public String getCharacterEncoding()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public int getContentLength()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public String getContentType()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public BufferedReader getReader() throws IOException
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public InputStream getInputStream() throws IOException, IllegalStateException
+ {
+ 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-21
13:25:38 UTC (rev 9545)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/PortletController.java 2008-01-21
13:55:49 UTC (rev 9546)
@@ -34,6 +34,7 @@
import org.jboss.portal.portlet.impl.spi.AbstractWindowContext;
import org.jboss.portal.portlet.impl.spi.AbstractPortalContext;
import org.jboss.portal.portlet.impl.spi.AbstractSecurityContext;
+import org.jboss.portal.portlet.impl.spi.AbstractRequestContext;
import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
import org.jboss.portal.portlet.invocation.response.UpdateNavigationalStateResponse;
import org.jboss.portal.portlet.invocation.response.HTTPRedirectionResponse;
@@ -175,6 +176,7 @@
actionInvocation.setWindowContext(new
AbstractWindowContext(portlet.getContext().getId()));
actionInvocation.setPortalContext(new AbstractPortalContext());
actionInvocation.setSecurityContext(new AbstractSecurityContext(req));
+ actionInvocation.setRequestContext(new AbstractRequestContext(req));
actionInvocation.setTarget(instanceContext.getTarget());
//