Updated Branches:
  refs/heads/master 7b786b9d0 -> 2ff3b1dab

CAMEL-6377: Optimized routing engine to reduce stack frames in use during 
routing. Work in progress.


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

Branch: refs/heads/master
Commit: f3b233d447c94245d260121f94748fd6039239a1
Parents: 7b786b9
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sun May 26 20:36:11 2013 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sun May 26 21:16:08 2013 +0200

----------------------------------------------------------------------
 .../org/apache/camel/processor/WrapProcessor.java  |   30 +++++++++++++++
 .../processor/interceptor/DefaultChannel.java      |    4 +-
 2 files changed, 32 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/f3b233d4/camel-core/src/main/java/org/apache/camel/processor/WrapProcessor.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/processor/WrapProcessor.java 
b/camel-core/src/main/java/org/apache/camel/processor/WrapProcessor.java
index adb508a..3eb629a 100644
--- a/camel-core/src/main/java/org/apache/camel/processor/WrapProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/processor/WrapProcessor.java
@@ -18,7 +18,11 @@ package org.apache.camel.processor;
 
 import java.util.List;
 
+import org.apache.camel.AsyncCallback;
+import org.apache.camel.AsyncProcessor;
+import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.util.AsyncProcessorHelper;
 import org.apache.camel.util.ServiceHelper;
 
 /**
@@ -48,6 +52,32 @@ public class WrapProcessor extends DelegateAsyncProcessor {
     }
 
     @Override
+    public void process(Exchange exchange) throws Exception {
+        if (wrapped instanceof AsyncProcessor) {
+            AsyncProcessor async = (AsyncProcessor) wrapped;
+            AsyncProcessorHelper.process(async, exchange);
+        } else {
+            wrapped.process(exchange);
+        }
+    }
+
+    @Override
+    public boolean process(Exchange exchange, AsyncCallback callback) {
+        if (wrapped instanceof AsyncProcessor) {
+            AsyncProcessor async = (AsyncProcessor) wrapped;
+            return async.process(exchange, callback);
+        } else {
+            try {
+                wrapped.process(exchange);
+            } catch (Exception e) {
+                exchange.setException(e);
+            }
+            callback.done(true);
+            return true;
+        }
+    }
+
+    @Override
     protected void doStart() throws Exception {
         ServiceHelper.startService(wrapped);
         super.doStart();

http://git-wip-us.apache.org/repos/asf/camel/blob/f3b233d4/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
 
b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
index 4634ec6..9a68502 100644
--- 
a/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
+++ 
b/camel-core/src/main/java/org/apache/camel/processor/interceptor/DefaultChannel.java
@@ -262,8 +262,8 @@ public class DefaultChannel extends ServiceSupport 
implements ModelChannel {
                 bridge.setTarget(wrapped);
                 wrapped = bridge;
             }
-            // ensure target gets wrapped so we can control its lifecycle
-            if (!(wrapped instanceof WrapProcessor)) {
+            if (!(wrapped instanceof Service)) {
+                // wrap the target so it becomes a service and we can manage 
its lifecycle
                 wrapped = new WrapProcessor(wrapped, target);
             }
             target = wrapped;

Reply via email to