You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ff...@apache.org on 2018/03/02 07:01:36 UTC

[cxf] branch 3.1.x-fixes updated: [CXF-7661]add isTimeout flag for Continutation so that we can easily know when the timeout happen outside CXF

This is an automated email from the ASF dual-hosted git repository.

ffang pushed a commit to branch 3.1.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/3.1.x-fixes by this push:
     new 9b8365a  [CXF-7661]add isTimeout flag for Continutation so that we can easily know when the timeout happen outside CXF
9b8365a is described below

commit 9b8365aab75b6cda05fa1277f70c7bd4d24a4bf5
Author: Freeman Fang <fr...@gmail.com>
AuthorDate: Thu Mar 1 18:04:27 2018 +0800

    [CXF-7661]add isTimeout flag for Continutation so that we can easily know when the timeout happen outside CXF
    
    (cherry picked from commit e791b0b8e69ee4368db88607ce00d53fdfcbf180)
    
    Conflicts:
    	core/src/main/java/org/apache/cxf/continuations/Continuation.java
    	rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationWrapper.java
    	rt/transports/http/src/main/java/org/apache/cxf/transport/http/Servlet3ContinuationProvider.java
    	rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/continuations/JMSContinuation.java
---
 .../main/java/org/apache/cxf/continuations/Continuation.java  |  8 +++++++-
 .../http_jetty/continuations/JettyContinuationWrapper.java    | 11 ++++++++++-
 .../cxf/transport/http/Servlet3ContinuationProvider.java      | 10 ++++++++--
 .../cxf/transport/jms/continuations/JMSContinuation.java      |  5 +++++
 4 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/core/src/main/java/org/apache/cxf/continuations/Continuation.java b/core/src/main/java/org/apache/cxf/continuations/Continuation.java
index 08955d1..fc603f9 100644
--- a/core/src/main/java/org/apache/cxf/continuations/Continuation.java
+++ b/core/src/main/java/org/apache/cxf/continuations/Continuation.java
@@ -62,7 +62,13 @@ public interface Continuation {
      */
     boolean isResumed();
     
-    /** 
+    /**
+     * Get the timeout status
+     * @return true if the continuation is has been timeout.
+     */
+    boolean isTimeout();
+
+    /**
      * Get arbitrary object associated with the continuation for context
      * 
      * @return An arbitrary object associated with the continuation
diff --git a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationWrapper.java b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationWrapper.java
index 3c83170..b543b22 100644
--- a/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationWrapper.java
+++ b/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationWrapper.java
@@ -19,6 +19,7 @@
 
 package org.apache.cxf.transport.http_jetty.continuations;
 
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -33,6 +34,7 @@ public class JettyContinuationWrapper implements Continuation, ContinuationListe
     volatile boolean isNew;
     volatile boolean isResumed;
     volatile boolean isPending;
+    volatile boolean isTimeout;
     volatile long pendingTimeout;
     volatile Object obj;
     
@@ -93,6 +95,7 @@ public class JettyContinuationWrapper implements Continuation, ContinuationListe
         }
         obj = null;
         pendingTimeout = 0;
+        isTimeout = false;
     }
 
 
@@ -137,6 +140,12 @@ public class JettyContinuationWrapper implements Continuation, ContinuationListe
         isPending = false;
         pendingTimeout = 0;
         isResumed = true;
+        isTimeout = true;
     }
-    
+
+    @Override
+    public boolean isTimeout() {
+        return isTimeout;
+    }
+
 }
diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Servlet3ContinuationProvider.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Servlet3ContinuationProvider.java
index 51be32a..01ba2b0 100644
--- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Servlet3ContinuationProvider.java
+++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Servlet3ContinuationProvider.java
@@ -79,6 +79,7 @@ public class Servlet3ContinuationProvider implements ContinuationProvider {
         volatile boolean isResumed;
         volatile boolean isPending;
         volatile boolean isComplete;
+        volatile boolean isTimeout;
         volatile Object obj;
         private ContinuationCallback callback;
         private boolean blockRestart;
@@ -141,7 +142,7 @@ public class Servlet3ContinuationProvider implements ContinuationProvider {
             isPending = false;
             isResumed = false;
             isNew = false;
-            
+            isTimeout = false;
             obj = null;
             if (callback != null) {
                 final Exception ex = inMessage.getExchange().get(Exception.class);
@@ -196,6 +197,7 @@ public class Servlet3ContinuationProvider implements ContinuationProvider {
         }
         public void onTimeout(AsyncEvent event) throws IOException {
             resume();
+            isTimeout = true;
         }
         
         private Throwable isCausedByIO(final Exception ex) {
@@ -216,6 +218,10 @@ public class Servlet3ContinuationProvider implements ContinuationProvider {
                 return false;
             }
         }
-        
+
+        @Override
+        public boolean isTimeout() {
+            return isTimeout;
+        }
     }
 }
diff --git a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/continuations/JMSContinuation.java b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/continuations/JMSContinuation.java
index b56ee84..ba20aa2 100644
--- a/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/continuations/JMSContinuation.java
+++ b/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/continuations/JMSContinuation.java
@@ -158,4 +158,9 @@ public class JMSContinuation implements Continuation {
     }
 
 
+    @Override
+    public boolean isTimeout() {
+        return false;
+    }
+
 }

-- 
To stop receiving notification emails like this one, please contact
ffang@apache.org.