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/5299b2d8
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5299b2d8
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5299b2d8

Branch: refs/heads/master
Commit: 5299b2d815b0356a087c677ec6bf7d058fa1b322
Parents: eeafd69
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sun May 26 20:25:01 2013 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sun May 26 20:25:01 2013 +0200

----------------------------------------------------------------------
 .../org/apache/camel/model/PolicyDefinition.java   |    9 ++++++---
 .../apache/camel/model/TransactedDefinition.java   |   10 ++++++----
 2 files changed, 12 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5299b2d8/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java 
b/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
index c6cb667..fb5ece0 100644
--- a/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/PolicyDefinition.java
@@ -23,6 +23,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.Processor;
+import org.apache.camel.Service;
 import org.apache.camel.processor.WrapProcessor;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
@@ -134,9 +135,11 @@ public class PolicyDefinition extends 
OutputDefinition<PolicyDefinition> {
         // wrap
         Processor target = policy.wrap(routeContext, childProcessor);
 
-        // wrap the target so it becomes a service and we can manage its 
lifecycle
-        WrapProcessor wrap = new WrapProcessor(target, childProcessor);
-        return wrap;
+        if (!(target instanceof Service)) {
+            // wrap the target so it becomes a service and we can manage its 
lifecycle
+            target = new WrapProcessor(target, childProcessor);
+        }
+        return target;
     }
 
     protected Policy resolvePolicy(RouteContext routeContext) {

http://git-wip-us.apache.org/repos/asf/camel/blob/5299b2d8/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java 
b/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
index 5a52b56..d65203c 100644
--- a/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/TransactedDefinition.java
@@ -27,6 +27,7 @@ import javax.xml.bind.annotation.XmlTransient;
 import org.apache.camel.NoSuchBeanException;
 import org.apache.camel.Processor;
 import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.Service;
 import org.apache.camel.processor.WrapProcessor;
 import org.apache.camel.spi.Policy;
 import org.apache.camel.spi.RouteContext;
@@ -147,10 +148,11 @@ public class TransactedDefinition extends 
OutputDefinition<TransactedDefinition>
         // wrap
         Processor target = policy.wrap(routeContext, childProcessor);
 
-        // TODO: should not be needed as its already a service
-        // wrap the target so it becomes a service and we can manage its 
lifecycle
-        WrapProcessor wrap = new WrapProcessor(target, childProcessor);
-        return wrap;
+        if (!(target instanceof Service)) {
+            // wrap the target so it becomes a service and we can manage its 
lifecycle
+            target = new WrapProcessor(target, childProcessor);
+        }
+        return target;
     }
 
     protected Policy resolvePolicy(RouteContext routeContext) {

Reply via email to