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) {