Repository: camel
Updated Branches:
  refs/heads/camel-2.16.x 0363a7274 -> ed5790bd9
  refs/heads/master 9a6e6d8a9 -> f3671b48a


CAMEL-9635 - read configuration for using continuation or not from the
httpconsumer on each request

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2bf791b9
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2bf791b9
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2bf791b9

Branch: refs/heads/master
Commit: 2bf791b98aee3e327feaf2736c89260f06daf1c2
Parents: 9a6e6d8
Author: laeubi <lae...@laeubi-soft.de>
Authored: Tue Feb 23 12:20:15 2016 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Feb 24 17:34:00 2016 +0100

----------------------------------------------------------------------
 .../jetty/CamelContinuationServlet.java         | 39 ++++++++++++++------
 .../component/jetty/JettyHttpComponent.java     | 25 +------------
 2 files changed, 30 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/2bf791b9/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
 
b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
index 68e7b48..0038a98 100644
--- 
a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
+++ 
b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
@@ -28,6 +28,7 @@ import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.http.common.CamelServlet;
+import org.apache.camel.http.common.HttpCommonEndpoint;
 import org.apache.camel.http.common.HttpConstants;
 import org.apache.camel.http.common.HttpConsumer;
 import org.apache.camel.http.common.HttpHelper;
@@ -48,8 +49,6 @@ public class CamelContinuationServlet extends CamelServlet {
     static final String EXCHANGE_ATTRIBUTE_ID = "CamelExchangeId";
 
     private static final long serialVersionUID = 1L;
-    // jetty will by default use 30000 millis as default timeout
-    private Long continuationTimeout;
     // we must remember expired exchanges as Jetty will initiate a new 
continuation when we send
     // back the error when timeout occurred, and thus in the async callback we 
cannot check the
     // continuation if it was previously expired. So that's why we have our 
own map for that
@@ -65,9 +64,35 @@ public class CamelContinuationServlet extends CamelServlet {
             response.sendError(HttpServletResponse.SC_NOT_FOUND);
             return;
         }
+        boolean useContinuation = false;
+        Long continuationTimeout = null;
+        HttpCommonEndpoint endpoint = consumer.getEndpoint();
+        if (endpoint instanceof JettyHttpEndpoint) {
+            JettyHttpEndpoint jettyEndpoint = (JettyHttpEndpoint) endpoint;
+            Boolean epUseContinuation = jettyEndpoint.getUseContinuation();
+            Long epContinuationTimeout = 
jettyEndpoint.getContinuationTimeout();
+            if (epUseContinuation != null) {
+                useContinuation = epUseContinuation.booleanValue(); 
+            } else {
+                useContinuation = 
jettyEndpoint.getComponent().isUseContinuation();
+            }
+            if(epContinuationTimeout != null) {
+                continuationTimeout = epContinuationTimeout;
+            } else {
+                continuationTimeout = 
jettyEndpoint.getComponent().getContinuationTimeout();
+            }
+        }
+        if (useContinuation) {
+            log.trace("Start request with continuation timeout of {}", 
continuationTimeout!= null?continuationTimeout:"jetty default");
+        } else {
+            log.trace("Usage of continuation is disabled, either by component 
or endpoint configuration, fall back to normal servlet processing instead");
+            super.service(request, response);
+            return;
+        }
+        
 
         if (consumer.getEndpoint().getHttpMethodRestrict() != null) {
-            Iterator it = 
ObjectHelper.createIterable(consumer.getEndpoint().getHttpMethodRestrict()).iterator();
+            Iterator<?> it = 
ObjectHelper.createIterable(consumer.getEndpoint().getHttpMethodRestrict()).iterator();
             boolean match = false;
             while (it.hasNext()) {
                 String method = it.next().toString();
@@ -215,14 +240,6 @@ public class CamelContinuationServlet extends CamelServlet 
{
         }
     }
 
-    public Long getContinuationTimeout() {
-        return continuationTimeout;
-    }
-
-    public void setContinuationTimeout(Long continuationTimeout) {
-        this.continuationTimeout = continuationTimeout;
-    }
-
     @Override
     public void destroy() {
         expiredExchanges.clear();

http://git-wip-us.apache.org/repos/asf/camel/blob/2bf791b9/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
 
b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
index 5e39a14..e3621a4 100644
--- 
a/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
+++ 
b/components/camel-jetty-common/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
@@ -1103,28 +1103,7 @@ public abstract class JettyHttpComponent extends 
HttpCommonComponent implements
 
         addJettyHandlers(server, handlers);
 
-        CamelServlet camelServlet;
-        boolean jetty = endpoint.getUseContinuation() != null ? 
endpoint.getUseContinuation() : isUseContinuation();
-        if (jetty) {
-            // use Jetty continuations
-            CamelContinuationServlet jettyServlet = new 
CamelContinuationServlet();
-            // configure timeout and log it so end user know what we are using
-            Long timeout = endpoint.getContinuationTimeout() != null ? 
endpoint.getContinuationTimeout() : getContinuationTimeout();
-            if (timeout != null) {
-                LOG.info("Using Jetty continuation timeout: " + timeout + " 
millis for: " + endpoint);
-                jettyServlet.setContinuationTimeout(timeout);
-            } else {
-                LOG.info("Using default Jetty continuation timeout for: " + 
endpoint);
-            }
-
-            // use the jetty servlet
-            camelServlet = jettyServlet;
-        } else {
-            // do not use jetty so use a plain servlet
-            camelServlet = new CamelServlet();
-            LOG.info("Jetty continuation is disabled for: " + endpoint);
-        }
-
+        CamelServlet camelServlet = new CamelContinuationServlet();
         ServletHolder holder = new ServletHolder();
         holder.setServlet(camelServlet);
         context.addServlet(holder, "/*");
@@ -1239,7 +1218,7 @@ public abstract class JettyHttpComponent extends 
HttpCommonComponent implements
             && Server.getVersion().startsWith("8")) {
             //JETTY8 only
             try {
-                boolean b = 
(boolean)mbContainer.getClass().getMethod("isStarted").invoke(mbContainer);
+                boolean b = 
(Boolean)mbContainer.getClass().getMethod("isStarted").invoke(mbContainer);
                 if (b) {
                     
mbContainer.getClass().getMethod("start").invoke(mbContainer);
                     // Publish the container itself for consistency with

Reply via email to