You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by at...@apache.org on 2009/03/19 11:53:37 UTC
svn commit: r755916 - in /portals/pluto/trunk:
pluto-container-api/src/main/java/org/apache/pluto/container/
pluto-container-api/src/main/java/org/apache/pluto/container/driver/
pluto-container/src/main/java/org/apache/pluto/container/impl/ pluto-porta...
Author: ate
Date: Thu Mar 19 10:53:36 2009
New Revision: 755916
URL: http://svn.apache.org/viewvc?rev=755916&view=rev
Log:
Fix to ensure that the correct PortletRequest and PortletResponse are provided when dispatched to a servlet when they might possibly be wrapped by a filter.
Also, providing the PortletConfig instead of the PortletContext from the PortletRequestContext so it only needs to be provided as request attribute when dispatching to a servlet.
Modified:
portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContext.java
portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletServlet.java
portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletRequestWrapper.java
portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestDispatcherImpl.java
portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestImpl.java
portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContext.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContext.java?rev=755916&r1=755915&r2=755916&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContext.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContext.java Thu Mar 19 10:53:36 2009
@@ -21,7 +21,7 @@
import java.util.Locale;
import java.util.Map;
-import javax.portlet.PortletContext;
+import javax.portlet.PortletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
@@ -34,9 +34,9 @@
*/
public interface PortletRequestContext
{
- void init(PortletContext portletContext, ServletContext servletContext, HttpServletRequest servletRequest, HttpServletResponse servletResponse);
+ void init(PortletConfig portletConfig, ServletContext servletContext, HttpServletRequest servletRequest, HttpServletResponse servletResponse);
PortletContainer getContainer();
- PortletContext getPortletContext();
+ PortletConfig getPortletConfig();
ServletContext getServletContext();
HttpServletRequest getContainerRequest();
HttpServletResponse getContainerResponse();
Modified: portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletServlet.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletServlet.java?rev=755916&r1=755915&r2=755916&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletServlet.java (original)
+++ portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/driver/PortletServlet.java Thu Mar 19 10:53:36 2009
@@ -299,9 +299,6 @@
{
throw new javax.servlet.UnavailableException("Portlet "+portletName+" unavailable");
}
- // Save portlet config into servlet request.
-
- request.setAttribute(PortletInvokerService.PORTLET_CONFIG, portletConfig);
// Retrieve attributes from the servlet request.
Integer methodId = (Integer) request.getAttribute(PortletInvokerService.METHOD_ID);
@@ -314,8 +311,13 @@
final PortletResponseContext responseContext = (PortletResponseContext)portletRequest.getAttribute(PortletInvokerService.RESPONSE_CONTEXT);
final FilterManager filterManager = (FilterManager)request.getAttribute(PortletInvokerService.FILTER_MANAGER);
+
+ request.removeAttribute(PortletInvokerService.METHOD_ID);
+ request.removeAttribute(PortletInvokerService.PORTLET_REQUEST);
+ request.removeAttribute(PortletInvokerService.PORTLET_RESPONSE);
+ request.removeAttribute(PortletInvokerService.FILTER_MANAGER);
- requestContext.init(portletConfig.getPortletContext(), getServletContext(), request, response);
+ requestContext.init(portletConfig, getServletContext(), request, response);
responseContext.init(request, response);
PortletWindow window = requestContext.getPortletWindow();
@@ -423,10 +425,6 @@
throw new ServletException(ex);
}
- finally
- {
- request.removeAttribute(PortletInvokerService.PORTLET_CONFIG);
- }
}
protected void notify(PortletInvocationEvent event, boolean pre, Throwable e)
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletRequestWrapper.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletRequestWrapper.java?rev=755916&r1=755915&r2=755916&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletRequestWrapper.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/HttpServletPortletRequestWrapper.java Thu Mar 19 10:53:36 2009
@@ -666,7 +666,7 @@
}
PortletRequestContext requestContext = (PortletRequestContext)portletRequest.getAttribute(PortletInvokerService.REQUEST_CONTEXT);
PortletApplicationDefinition app = requestContext.getPortletWindow().getPortletEntity().getPortletDefinition().getApplication();
- RequestDispatcherPathInfoProvider provider = RequestDispatcherPathInfoProviderImpl.getProvider(requestContext.getPortletContext(), app);
+ RequestDispatcherPathInfoProvider provider = RequestDispatcherPathInfoProviderImpl.getProvider(requestContext.getPortletConfig().getPortletContext(), app);
return new PortletRequestDispatcherImpl(dispatcher, provider.getPathInfo(getContextPath(),path));
}
}
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestDispatcherImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestDispatcherImpl.java?rev=755916&r1=755915&r2=755916&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestDispatcherImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestDispatcherImpl.java Thu Mar 19 10:53:36 2009
@@ -145,9 +145,13 @@
HttpServletPortletResponseWrapper res = new HttpServletPortletResponseWrapper(requestContext.getServletResponse(),
request,
response,
- included);
+ included);
try
{
+ req.setAttribute(PortletInvokerService.PORTLET_CONFIG, requestContext.getPortletConfig());
+ req.setAttribute(PortletInvokerService.PORTLET_REQUEST, request);
+ req.setAttribute(PortletInvokerService.PORTLET_RESPONSE, response);
+
if (!included && req.isForwardingPossible())
{
requestDispatcher.forward(req, res);
@@ -172,6 +176,12 @@
throw new PortletException(sex);
}
}
+ finally
+ {
+ req.removeAttribute(PortletInvokerService.PORTLET_CONFIG);
+ req.removeAttribute(PortletInvokerService.PORTLET_REQUEST);
+ req.removeAttribute(PortletInvokerService.PORTLET_RESPONSE);
+ }
}
private void doDispatch(ServletRequest request, ServletResponse response, HttpServletPortletRequestWrapper req,
Modified: portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestImpl.java?rev=755916&r1=755915&r2=755916&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestImpl.java (original)
+++ portals/pluto/trunk/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletRequestImpl.java Thu Mar 19 10:53:36 2009
@@ -223,7 +223,7 @@
protected PortletContext getPortletContext()
{
- return requestContext.getPortletContext();
+ return requestContext.getPortletConfig().getPortletContext();
}
protected PortletWindow getPortletWindow()
Modified: portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java?rev=755916&r1=755915&r2=755916&view=diff
==============================================================================
--- portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java (original)
+++ portals/pluto/trunk/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletRequestContextImpl.java Thu Mar 19 10:53:36 2009
@@ -25,7 +25,7 @@
import java.util.Locale;
import java.util.Map;
-import javax.portlet.PortletContext;
+import javax.portlet.PortletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
@@ -51,7 +51,7 @@
private HttpServletResponse servletResponse;
private PortletWindow window;
private PortalURL url;
- private PortletContext portletContext;
+ private PortletConfig portletConfig;
private ServletContext servletContext;
private Cookie cookies[];
private boolean useRequestParameters;
@@ -107,9 +107,9 @@
return publicRenderParameterNames.isEmpty() ? false : publicRenderParameterNames.contains(name);
}
- public void init(PortletContext portletContext, ServletContext servletContext, HttpServletRequest servletRequest, HttpServletResponse servletResponse)
+ public void init(PortletConfig portletConfig, ServletContext servletContext, HttpServletRequest servletRequest, HttpServletResponse servletResponse)
{
- this.portletContext = portletContext;
+ this.portletConfig = portletConfig;
this.servletContext = servletContext;
this.servletRequest = servletRequest;
this.servletResponse = servletResponse;
@@ -162,9 +162,9 @@
return cookies.length > 0 ? cookies.clone() : null;
}
- public PortletContext getPortletContext()
+ public PortletConfig getPortletConfig()
{
- return portletContext;
+ return portletConfig;
}
public ServletContext getServletContext()