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:24 UTC

[44/50] [abbrv] portals-pluto git commit: Completed contextual support for thread executed with AsyncContext#start()

Completed contextual support for thread executed with AsyncContext#start()


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

Branch: refs/heads/master
Commit: 74d5f10be327e165686edc46f72da50b5a60feda
Parents: 27e17ae
Author: Scott Nicklous <ms...@apache.org>
Authored: Mon Apr 4 22:07:08 2016 +0200
Committer: Scott Nicklous <ms...@apache.org>
Committed: Mon Apr 4 22:07:08 2016 +0200

----------------------------------------------------------------------
 .../java/org/apache/portals/samples/AsyncPortletFilter.java  | 2 +-
 .../services/container/PortletAsyncContextualRunner.java     | 5 ++++-
 .../container/PortletResourceRequestContextImpl.java         | 8 ++++++--
 3 files changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/74d5f10b/PortletV3AnnotatedDemo/src/main/java/org/apache/portals/samples/AsyncPortletFilter.java
----------------------------------------------------------------------
diff --git a/PortletV3AnnotatedDemo/src/main/java/org/apache/portals/samples/AsyncPortletFilter.java b/PortletV3AnnotatedDemo/src/main/java/org/apache/portals/samples/AsyncPortletFilter.java
index be096c5..f7c430e 100644
--- a/PortletV3AnnotatedDemo/src/main/java/org/apache/portals/samples/AsyncPortletFilter.java
+++ b/PortletV3AnnotatedDemo/src/main/java/org/apache/portals/samples/AsyncPortletFilter.java
@@ -65,7 +65,7 @@ public class AsyncPortletFilter implements ResourceFilter {
       txt.append(", request #: ").append(reqnum.getRandomNumber());
       LOGGER.fine(txt.toString());
       
-      if (type != DispatcherType.ASYNC && adb.isUseFilter()) {
+      if (adb.isUseFilter()) {
          txt.setLength(0);
          txt.append("<div class='msgbox'>");
          txt.append("Filter: Request number: ").append(reqnum.getRandomNumber());

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/74d5f10b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletAsyncContextualRunner.java
----------------------------------------------------------------------
diff --git a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletAsyncContextualRunner.java b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletAsyncContextualRunner.java
index 6dcac04..8535a7e 100644
--- a/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletAsyncContextualRunner.java
+++ b/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletAsyncContextualRunner.java
@@ -54,9 +54,12 @@ public class PortletAsyncContextualRunner implements Runnable {
          LOG.debug("Initializing contextual environment and launching runner in thread: " + Thread.currentThread().getId());
       }
 
-      pactx.registerContext();
       try {
+         pactx.registerContext();
          targetRunner.run();
+      } catch (Exception e) {
+         StringBuilder txt = new StringBuilder(128);
+         txt.append("Exception running thread: ").append(e.toString());
       } finally {
          if (isDebug) {
             LOG.debug("Shutting down contextual environment for thread: " + Thread.currentThread().getId());

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/74d5f10b/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 f607449..6906a57 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
@@ -184,9 +184,13 @@ public class PortletResourceRequestContextImpl extends PortletRequestContextImpl
       HttpServletRequest wreq = new PortletAsyncRequestWrapper(hreq, request, this);
       HttpServletResponse wresp = new HttpServletPortletResponseWrapper(hresp, request, response, false);
 
-      // Start async, add listener to release resources upon async complete only once.
+      // Start async, create portlet async context first time only.
 
-      actx = new PortletAsyncContextImpl(hreq.startAsync(wreq, wresp), wreq);
+      if (actx != null) {
+         actx.setWrapped(hreq.startAsync(wreq, wresp));
+      } else {
+         actx = new PortletAsyncContextImpl(hreq.startAsync(wreq, wresp), wreq);
+      }
 
       if (isTrace) {
          List<String> attrNames = Collections.list(hreq.getAttributeNames());