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 ed...@apache.org on 2010/12/30 17:54:48 UTC

svn commit: r1053938 - in /portals/pluto/trunk: pluto-container-api/src/main/java/org/apache/pluto/container/ pluto-container/src/main/java/org/apache/pluto/container/impl/ pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/

Author: edalquist
Date: Thu Dec 30 16:54:48 2010
New Revision: 1053938

URL: http://svn.apache.org/viewvc?rev=1053938&view=rev
Log:
PLUTO-600 Add method to PortletRequestContext SPI that allows the portal to have complete control over request attribute resolution for portlets and servlets that portlets delegate to 

Modified:
    portals/pluto/trunk/pluto-container-api/src/main/java/org/apache/pluto/container/PortletRequestContext.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/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=1053938&r1=1053937&r2=1053938&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 Dec 30 16:54:48 2010
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import javax.portlet.PortletConfig;
 import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -45,6 +46,14 @@ public interface PortletRequestContext
     
     Enumeration<String> getAttributeNames();
     Object getAttribute(String name);
+    /**
+     * Get the attribute from the request. Generally only called by servlet code that has been dispatched
+     * to by a portlet (such as rendering a JSP).
+     * 
+     * @param name attribute name
+     * @param servletRequest The current servlet request
+     */
+    Object getAttribute(String name, ServletRequest servletRequest);
     void setAttribute(String name, Object value);
 
     Locale getPreferredLocale();

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=1053938&r1=1053937&r2=1053938&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 Dec 30 16:54:48 2010
@@ -42,6 +42,8 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletRequestWrapper;
 import javax.servlet.http.HttpSession;
 
+import org.apache.pluto.container.PortletInvokerService;
+import org.apache.pluto.container.PortletRequestContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -318,6 +320,7 @@ public class HttpServletPortletRequestWr
      */
     protected Map<String, String[]> parameterMap;
     
+    protected final PortletRequestContext requestContext;
     protected final ServletContext servletContext;
     protected final PortletRequest portletRequest;
     protected final ClientDataRequest clientDataRequest;
@@ -353,6 +356,7 @@ public class HttpServletPortletRequestWr
         lifecyclePhase = (String)portletRequest.getAttribute(PortletRequest.LIFECYCLE_PHASE);
         clientDataRequest = PortletRequest.ACTION_PHASE.equals(lifecyclePhase) || PortletRequest.RESOURCE_PHASE.equals(lifecyclePhase) ? (ClientDataRequest)portletRequest : null;
         renderPhase = PortletRequest.RENDER_PHASE.equals(lifecyclePhase);
+        requestContext = (PortletRequestContext )portletRequest.getAttribute(PortletInvokerService.REQUEST_CONTEXT);
         this.forwarded = !included;
         this.namedDispatch = namedDispatch;
         origParameterMap = new HashMap<String,String[]>(request.getParameterMap());
@@ -1109,7 +1113,7 @@ public class HttpServletPortletRequestWr
         // except for servlet container injected (managed) attributes which cannot reliably be retrieved from the portletRequest
         Object value = servletContainerManagedAttributes.contains(name) ? null : portletRequest.getAttribute(name);
         // if null, fall back to retrieve the attribute from the web container itself
-        return value != null ? value : getRequest().getAttribute(name);
+        return value != null ? value : requestContext.getAttribute(name, getRequest());
     }
 
     @Override

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=1053938&r1=1053937&r2=1053938&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 Dec 30 16:54:48 2010
@@ -76,10 +76,10 @@ public abstract class PortletRequestImpl
     // Private Member Variables ------------------------------------------------
 
     /** The PortalContext within which this request is occuring. */
-    private PortalContext portalContext;
+    private final PortalContext portalContext;
 
-    private PortletRequestContext requestContext;
-    private PortletResponseContext responseContext;
+    private final PortletRequestContext requestContext;
+    private final PortletResponseContext responseContext;
 
     /** The portlet session. */
     private PortletSession portletSession;

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=1053938&r1=1053937&r2=1053938&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 Dec 30 16:54:48 2010
@@ -26,6 +26,7 @@ import java.util.Map;
 
 import javax.portlet.PortletConfig;
 import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -119,6 +120,10 @@ public class PortletRequestContextImpl i
         Object value = servletRequest.getAttribute(encodeAttributeName(name));
         return value != null ? value : servletRequest.getAttribute(name);
     }
+    
+    public Object getAttribute(String name, ServletRequest servletRequest) {
+        return servletRequest.getAttribute(name);
+    }
 
     @SuppressWarnings("unchecked")
     public Enumeration<String> getAttributeNames()