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