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:06 UTC
[26/50] [abbrv] portals-pluto git commit: worked on startAsync
implementaion
worked on startAsync implementaion
Project: http://git-wip-us.apache.org/repos/asf/portals-pluto/repo
Commit: http://git-wip-us.apache.org/repos/asf/portals-pluto/commit/ba9ee3be
Tree: http://git-wip-us.apache.org/repos/asf/portals-pluto/tree/ba9ee3be
Diff: http://git-wip-us.apache.org/repos/asf/portals-pluto/diff/ba9ee3be
Branch: refs/heads/master
Commit: ba9ee3bea3026ab99e3ec7e182d3a9cfebd9ffa0
Parents: 51caad7
Author: Scott Nicklous <ms...@apache.org>
Authored: Thu Mar 24 06:34:43 2016 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Thu Mar 24 06:34:43 2016 +0100
----------------------------------------------------------------------
.../container/impl/ResourceRequestImpl.java | 43 +++++++++++++++++++-
1 file changed, 42 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/ba9ee3be/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 aafbbee..b73a29b 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
@@ -20,13 +20,20 @@ import java.util.Enumeration;
import java.util.Map;
import javax.portlet.CacheControl;
+import javax.portlet.PortletConfig;
import javax.portlet.PortletRequest;
import javax.portlet.ResourceParameters;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import javax.servlet.AsyncContext;
import javax.servlet.DispatcherType;
+import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import org.apache.pluto.container.PortletInvokerService;
+import org.apache.pluto.container.PortletRequestContext;
import org.apache.pluto.container.PortletResourceRequestContext;
import org.apache.pluto.container.PortletResourceResponseContext;
import org.slf4j.Logger;
@@ -126,7 +133,23 @@ public class ResourceRequestImpl extends ClientDataRequestImpl implements Resour
@Override
public AsyncContext startAsync(ResourceRequest request, ResourceResponse response) throws IllegalStateException {
- return null;
+
+ HttpServletRequest hreq = getRequestContext().getServletRequest();
+ HttpServletResponse hresp = getRequestContext().getServletResponse();
+ ServletContext ctx = getRequestContext().getServletContext();
+ HttpSession sess = getSession();
+ PortletConfig cfg =getRequestContext().getPortletConfig();
+
+ HttpServletRequest wreq = new HttpServletPortletRequestWrapper(hreq, ctx, sess, request, false, false);
+ HttpServletResponse wresp = new HttpServletPortletResponseWrapper(hresp, request, response, false);
+
+ request.setAttribute(PortletInvokerService.PORTLET_CONFIG, cfg);
+ request.setAttribute(PortletInvokerService.PORTLET_REQUEST, request);
+ request.setAttribute(PortletInvokerService.PORTLET_RESPONSE, response);
+
+ AsyncContext actx = hreq.startAsync(wreq, wresp);
+
+ return actx;
}
@Override
@@ -148,4 +171,22 @@ public class ResourceRequestImpl extends ClientDataRequestImpl implements Resour
public DispatcherType getDispatcherType() {
return getRequestContext().getServletRequest().getDispatcherType();
}
+
+ // For use within the wrapper.
+ // PLT.10.4.3. Proxied session is created and passed if
+ // javax.portlet.servletDefaultSessionScope == PORTLET_SCOPE
+ private HttpSession getSession() {
+ HttpSession sess = null;
+
+ PortletConfig portletConfig = getRequestContext().getPortletConfig();
+ Map<String, String[]> containerRuntimeOptions = portletConfig.getContainerRuntimeOptions();
+ String[] values = containerRuntimeOptions.get("javax.portlet.servletDefaultSessionScope");
+
+ if ((values != null) && (values.length > 0) && "PORTLET_SCOPE".equals(values[0])) {
+ String portletWindowId = getRequestContext().getPortletWindow().getId().getStringId();
+ sess = ServletPortletSessionProxy.createProxy(getRequestContext().getServletRequest(), portletWindowId);
+ }
+
+ return sess;
+ }
}