You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by at...@apache.org on 2009/03/27 15:38:24 UTC
svn commit: r759154 - in /portals/jetspeed-2/portal/trunk:
components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/
jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/
Author: ate
Date: Fri Mar 27 14:38:23 2009
New Revision: 759154
URL: http://svn.apache.org/viewvc?rev=759154&view=rev
Log:
Restoring old PortletRequestResponseUnwrapper, but now renamed to ContainerRequestResponseUnwrapper.
This turned out to be required after all as for cross-context dispatching (on Tomcat) the original request is required
to maintain access to the ContainerRequest session during a Portlet invocation (note: with Tomcat server connector emptySessionPath="true").
Added:
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/DefaultContainerRequestResponseUnwrapper.java (contents, props changed)
- copied, changed from r759128, portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/DefaultPortletRequestResponseUnwrapper.java
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/ContainerRequestResponseUnwrapper.java (contents, props changed)
- copied, changed from r759128, portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/PortletRequestResponseUnwrapper.java
Removed:
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/DefaultPortletRequestResponseUnwrapper.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/LocalPortletInvokerFactory.java
portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/PortletRequestResponseUnwrapper.java
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/JetspeedPortletInvokerService.java
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/ServletPortletInvoker.java
Copied: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/DefaultContainerRequestResponseUnwrapper.java (from r759128, portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/DefaultPortletRequestResponseUnwrapper.java)
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/DefaultContainerRequestResponseUnwrapper.java?p2=portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/DefaultContainerRequestResponseUnwrapper.java&p1=portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/DefaultPortletRequestResponseUnwrapper.java&r1=759128&r2=759154&rev=759154&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/DefaultPortletRequestResponseUnwrapper.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/DefaultContainerRequestResponseUnwrapper.java Fri Mar 27 14:38:23 2009
@@ -20,25 +20,43 @@
import javax.portlet.PortletResponse;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponse;
import org.apache.jetspeed.Jetspeed;
/**
- * DefaultPortletRequestResponseUnwrapper implements PortletRequestResponseUnwrapper
+ * DefaultContainerRequestResponseUnwrapper implements ContainerRequestResponseUnwrapper
* and finds servlet request or servlet response
*
* @author <a href="mailto:woonsan@apache.org">Woonsan Ko</a>
- * @version $Id: $
+ * @version $Id$
*/
-public class DefaultPortletRequestResponseUnwrapper implements PortletRequestResponseUnwrapper
+public class DefaultContainerRequestResponseUnwrapper implements ContainerRequestResponseUnwrapper
{
public ServletRequest unwrapPortletRequest(PortletRequest portletRequest)
{
- return Jetspeed.getCurrentRequestContext().getCurrentPortletWindow().getPortletRequestContext().getContainerRequest();
+ return unwrapContainerRequest(Jetspeed.getCurrentRequestContext().getCurrentPortletWindow().getPortletRequestContext().getContainerRequest());
}
public ServletResponse unwrapPortletResponse(PortletResponse portletResponse)
{
- return Jetspeed.getCurrentRequestContext().getCurrentPortletWindow().getPortletRequestContext().getContainerResponse();
+ return unwrapContainerResponse(Jetspeed.getCurrentRequestContext().getCurrentPortletWindow().getPortletRequestContext().getContainerResponse());
+ }
+
+ public ServletRequest unwrapContainerRequest(HttpServletRequest containerRequest)
+ {
+ ServletRequest request = containerRequest;
+ while (request instanceof HttpServletRequestWrapper)
+ {
+ request = ((HttpServletRequestWrapper)request).getRequest();
+ }
+ return request;
+ }
+
+ public ServletResponse unwrapContainerResponse(HttpServletResponse containerResponse)
+ {
+ return containerResponse;
}
}
Propchange: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/DefaultContainerRequestResponseUnwrapper.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/JetspeedPortletInvokerService.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/JetspeedPortletInvokerService.java?rev=759154&r1=759153&r2=759154&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/JetspeedPortletInvokerService.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/JetspeedPortletInvokerService.java Fri Mar 27 14:38:23 2009
@@ -70,13 +70,21 @@
private ServletConfig servletConfig;
private PortletFactory portletFactory;
+ private ContainerRequestResponseUnwrapper requestResponseUnwrapper;
private String servletMappingName;
public JetspeedPortletInvokerService(ServletConfig servletConfig, PortalContext portalContext, PortletFactory portletFactory)
{
+ this(servletConfig, portalContext, portletFactory, new DefaultContainerRequestResponseUnwrapper());
+ }
+
+ public JetspeedPortletInvokerService(ServletConfig servletConfig, PortalContext portalContext,
+ PortletFactory portletFactory, ContainerRequestResponseUnwrapper requestResponseUnwrapper)
+ {
this.servletConfig = servletConfig;
this.portletFactory = portletFactory;
- this.servletMappingName = portalContext.getConfigurationProperty(INVOKER_SERVLET_MAPPING_NAME, DEFAULT_MAPPING_NAME);
+ this.requestResponseUnwrapper = requestResponseUnwrapper;
+ this.servletMappingName = portalContext.getConfigurationProperty(INVOKER_SERVLET_MAPPING_NAME, DEFAULT_MAPPING_NAME);
}
public void action(PortletRequestContext requestContext, ActionRequest request, ActionResponse response, FilterManager filterManager)
@@ -139,7 +147,7 @@
}
else
{
- invoker = new ServletPortletInvoker(servletMappingName);
+ invoker = new ServletPortletInvoker(requestResponseUnwrapper, servletMappingName);
}
invoker.activate(portletFactory, portletDefinition, servletConfig);
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/ServletPortletInvoker.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/ServletPortletInvoker.java?rev=759154&r1=759153&r2=759154&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/ServletPortletInvoker.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/container/invoker/ServletPortletInvoker.java Fri Mar 27 14:38:23 2009
@@ -24,6 +24,8 @@
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -71,8 +73,15 @@
protected boolean activated = false;
protected String servletMappingName;
- public ServletPortletInvoker(String servletMappingName)
+ /**
+ * requestResponseUnwrapper used to unwrap container request or portlet response
+ * to find the real servlet request or servlet response.
+ */
+ protected ContainerRequestResponseUnwrapper requestResponseUnwrapper;
+
+ public ServletPortletInvoker(ContainerRequestResponseUnwrapper requestResponseUnwrapper, String servletMappingName)
{
+ this.requestResponseUnwrapper = requestResponseUnwrapper;
this.servletMappingName = servletMappingName;
}
@@ -144,13 +153,16 @@
window.setAttribute(PortalReservedParameters.PORTLET_DEFINITION_ATTRIBUTE, portletDefinition);
window.setAttribute(PortalReservedParameters.PORTLET_FILTER_MANAGER_ATTRIBUTE, filter);
+ ServletRequest request = this.requestResponseUnwrapper.unwrapContainerRequest(requestContext.getContainerRequest());
+ ServletResponse response = this.requestResponseUnwrapper.unwrapContainerResponse(requestContext.getContainerResponse());
+
if (useForward)
{
- dispatcher.forward(requestContext.getContainerRequest(), requestContext.getContainerResponse());
+ dispatcher.forward(request, response);
}
else
{
- dispatcher.include(requestContext.getContainerRequest(), requestContext.getContainerResponse());
+ dispatcher.include(request, response);
}
}
Copied: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/ContainerRequestResponseUnwrapper.java (from r759128, portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/PortletRequestResponseUnwrapper.java)
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/ContainerRequestResponseUnwrapper.java?p2=portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/ContainerRequestResponseUnwrapper.java&p1=portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/PortletRequestResponseUnwrapper.java&r1=759128&r2=759154&rev=759154&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/PortletRequestResponseUnwrapper.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/ContainerRequestResponseUnwrapper.java Fri Mar 27 14:38:23 2009
@@ -16,37 +16,40 @@
*/
package org.apache.jetspeed.container.invoker;
-import javax.portlet.PortletRequest;
-import javax.portlet.PortletResponse;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
/**
- * PortletRequestResponseUnwrapper finds servlet request or servlet response
- * from portlet request or portlet response by unwrapping.
+ * ContainerRequestResponseUnwrapper finds the web container servlet request
+ * or servlet response suitable for cross-context dispatching
+ * from the current container request or response by unwrapping.
* Third-party module can provide an implementation to decorate the real request
- * or response object of a servlet container.
- * For example, the real request object of a servlet container can be decorated
- * because it is not thread-safe under Jetspeed parallel rendering mode.
+ * or response object of a servlet container for instance to ensure reliable
+ * behavior when executing multiple portlet invocations in parallel on top of
+ * the same web container request and response.
*
* @author <a href="mailto:woonsan@apache.org">Woonsan Ko</a>
- * @version $Id: $
+ * @version $Id$
*/
-public interface PortletRequestResponseUnwrapper
+public interface ContainerRequestResponseUnwrapper
{
/**
- * Unwraps portlet request to find the real servlet request.
+ * Unwraps the container request to find the web container servlet request
+ * suitable for cross-context request dispatching.
*
- * @param portletRequest The portlet request to be unwrapped.
+ * @param containerRequest The container request to be unwrapped.
* @return servletRequest The servlet request found by unwrapping.
*/
- ServletRequest unwrapPortletRequest(PortletRequest portletRequest);
-
+ ServletRequest unwrapContainerRequest(HttpServletRequest containerRequest);
+
/**
- * Unwraps portlet response to find the real servlet response.
+ * Unwraps the container response to find the web container servlet response
+ * suitable for cross-context request dispatching.
*
- * @param portletResponse The portlet response to be unwrapped.
+ * @param containerResponse The container response to be unwrapped.
* @return servletResponse The servlet response found by unwrapping.
*/
- ServletResponse unwrapPortletResponse(PortletResponse portletResponse);
+ ServletResponse unwrapContainerResponse(HttpServletResponse containerResponse);
}
Propchange: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/container/invoker/ContainerRequestResponseUnwrapper.java
------------------------------------------------------------------------------
svn:eol-style = native
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org