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()