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 ms...@apache.org on 2016/04/14 14:29:04 UTC

[24/50] [abbrv] portals-pluto git commit: worked on Resource phase async implementation

worked on Resource phase async implementation


Project: http://git-wip-us.apache.org/repos/asf/portals-pluto/repo
Commit: http://git-wip-us.apache.org/repos/asf/portals-pluto/commit/60c741fb
Tree: http://git-wip-us.apache.org/repos/asf/portals-pluto/tree/60c741fb
Diff: http://git-wip-us.apache.org/repos/asf/portals-pluto/diff/60c741fb

Branch: refs/heads/master
Commit: 60c741fb133d61551c3a2de9c1b74b9751734c4c
Parents: ae198fe
Author: Scott Nicklous <ms...@apache.org>
Authored: Wed Mar 23 16:25:50 2016 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Wed Mar 23 16:25:50 2016 +0100

----------------------------------------------------------------------
 .../PortletResourceRequestContext.java          | 13 +++++++++
 .../container/impl/PortletContainerImpl.java    |  1 +
 .../container/impl/ResourceRequestImpl.java     | 30 +++++++++++++-------
 .../PortletResourceRequestContextImpl.java      | 24 ++++++++++++++++
 4 files changed, 57 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/60c741fb/pluto-container-api/src/main/java/org/apache/pluto/container/PortletResourceRequestContext.java
----------------------------------------------------------------------
diff --git a/pluto-container-api/src/main/java/org/apache/pluto/container/PortletResourceRequestContext.java b/pluto-container-api/src/main/java/org/apache/pluto/container/PortletResourceRequestContext.java
index bf69dac..242d8a6 100644
--- a/pluto-container-api/src/main/java/org/apache/pluto/container/PortletResourceRequestContext.java
+++ b/pluto-container-api/src/main/java/org/apache/pluto/container/PortletResourceRequestContext.java
@@ -19,6 +19,7 @@ package org.apache.pluto.container;
 import java.util.Map;
 
 import javax.portlet.ResourceParameters;
+import javax.portlet.ResourceResponse;
 
 /**
  * @version $Id$
@@ -41,4 +42,16 @@ public interface PortletResourceRequestContext extends PortletRequestContext
      * @return
      */
     ResourceParameters getResourceParameters();
+    
+    /**
+     * Returns the resource response needed for async support. V3 method.
+     * @return
+     */
+    ResourceResponse getResponse();
+    
+    /**
+     * Sets the resource response needed for async support. V3 method.
+     * @return
+     */
+    void setResponse(ResourceResponse response);
 }

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/60c741fb/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletContainerImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletContainerImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletContainerImpl.java
index 44f2035..ce60f2e 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletContainerImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/PortletContainerImpl.java
@@ -265,6 +265,7 @@ public class PortletContainerImpl implements PortletContainer
         responseContext.setPropsAllowed(true);
         ResourceRequest portletRequest = envService.createResourceRequest(requestContext, responseContext);
         ResourceResponse portletResponse = envService.createResourceResponse(responseContext, requestContext.getCacheability());
+        requestContext.setResponse(portletResponse);     // for async support
 
         FilterManager filterManager = filterInitialisation(portletWindow,PortletRequest.RESOURCE_PHASE);
         

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/60c741fb/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
----------------------------------------------------------------------
diff --git a/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java b/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
index 96aa81e..aafbbee 100644
--- a/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
+++ b/pluto-container/src/main/java/org/apache/pluto/container/impl/ResourceRequestImpl.java
@@ -38,17 +38,24 @@ public class ResourceRequestImpl extends ClientDataRequestImpl implements Resour
    /** Internal logger. */
    private static final Logger LOG = LoggerFactory.getLogger(ResourceRequestImpl.class);
 
-    private PortletResourceRequestContext requestContext;
     private CacheControl cacheControl;
     
     public ResourceRequestImpl(PortletResourceRequestContext requestContext, PortletResourceResponseContext responseContext)
     {
         super(requestContext, responseContext, PortletRequest.RESOURCE_PHASE);
-        this.requestContext = requestContext;
         this.cacheControl = responseContext.getCacheControl();
     }
     
     @Override
+    protected PortletResourceRequestContext getRequestContext() {
+       return (PortletResourceRequestContext) requestContext;
+    }
+    
+    protected PortletResourceResponseContext getResponseContext() {
+       return (PortletResourceResponseContext) responseContext;
+    }
+    
+    @Override
     public String getProperty(String name)
     {
         String result = getMimeRequestProperty(name, cacheControl);
@@ -57,7 +64,7 @@ public class ResourceRequestImpl extends ClientDataRequestImpl implements Resour
 
     public String getCacheability()
     {
-        return requestContext.getCacheability();
+        return getRequestContext().getCacheability();
     }
 
     public String getETag()
@@ -67,12 +74,12 @@ public class ResourceRequestImpl extends ClientDataRequestImpl implements Resour
 
     public Map<String, String[]> getPrivateRenderParameterMap()
     {
-        return cloneParameterMap(requestContext.getPrivateRenderParameterMap());
+        return cloneParameterMap(getRequestContext().getPrivateRenderParameterMap());
     }
 
     public String getResourceID()
 	{
-		return requestContext.getResourceID();
+		return getRequestContext().getResourceID();
 	}
 
     public String getResponseContentType()
@@ -108,12 +115,13 @@ public class ResourceRequestImpl extends ClientDataRequestImpl implements Resour
    }
 
    public ResourceParameters getResourceParameters() {
-      return requestContext.getResourceParameters();
+      return getRequestContext().getResourceParameters();
    }
 
    @Override
    public AsyncContext startAsync() throws IllegalStateException {
-      return null;
+      ResourceResponse resp = getRequestContext().getResponse();
+      return startAsync(this, resp);
    }
 
    @Override
@@ -123,21 +131,21 @@ public class ResourceRequestImpl extends ClientDataRequestImpl implements Resour
 
    @Override
    public boolean isAsyncStarted() {
-      return false;
+      return getRequestContext().getServletRequest().isAsyncStarted();
    }
 
    @Override
    public boolean isAsyncSupported() {
-      return false;
+      return getRequestContext().getServletRequest().isAsyncSupported();
    }
 
    @Override
    public AsyncContext getAsyncContext() {
-      return null;
+      return getRequestContext().getServletRequest().getAsyncContext();
    }
 
    @Override
    public DispatcherType getDispatcherType() {
-      return null;
+      return getRequestContext().getServletRequest().getDispatcherType();
    }
 }

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/60c741fb/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceRequestContextImpl.java
----------------------------------------------------------------------
diff --git a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceRequestContextImpl.java b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceRequestContextImpl.java
index b008e51..1a6bf5e 100644
--- a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceRequestContextImpl.java
+++ b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletResourceRequestContextImpl.java
@@ -19,6 +19,7 @@ package org.apache.pluto.driver.services.container;
 import java.util.Map;
 
 import javax.portlet.ResourceParameters;
+import javax.portlet.ResourceResponse;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -35,6 +36,8 @@ public class PortletResourceRequestContextImpl extends PortletRequestContextImpl
                 PortletResourceRequestContext
 {
    private String pageState;
+   private ResourceResponse response;
+   
    
     public PortletResourceRequestContextImpl(PortletContainer container, HttpServletRequest containerRequest,
                                              HttpServletResponse containerResponse, PortletWindow window,
@@ -47,16 +50,19 @@ public class PortletResourceRequestContextImpl extends PortletRequestContextImpl
         this.pageState = pageState;
     }
 
+    @Override
     public String getCacheability()
     {
         return getPortalURL().getCacheability();
     }
 
+    @Override
     public Map<String, String[]> getPrivateRenderParameterMap()
     {
         return paramFactory.getResourceRenderParameterMap(window.getId().getStringId());
     }
 
+    @Override
     public String getResourceID()
     {
         return getPortalURL().getResourceID();
@@ -65,11 +71,29 @@ public class PortletResourceRequestContextImpl extends PortletRequestContextImpl
    /* (non-Javadoc)
     * @see org.apache.pluto.container.PortletResourceRequestContext#getPageState()
     */
+    @Override
    public String getPageState() {
       return pageState;
    }
 
+    @Override
    public ResourceParameters getResourceParameters() {
       return new ResourceParametersImpl(urlProvider, windowId);
    }
+
+   /**
+    * @return the response
+    */
+    @Override
+   public ResourceResponse getResponse() {
+      return response;
+   }
+
+   /**
+    * @param response the response to set
+    */
+    @Override
+   public void setResponse(ResourceResponse response) {
+      this.response = response;
+   }
 }