This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit e0d8a1f30daa3a46db8d5a6fb9701393fdd6b321 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Apr 1 18:58:19 2021 +0200 camel-core - Small optimization --- .../camel/impl/engine/AbstractDynamicRegistry.java | 2 ++ .../camel/impl/engine/DefaultRouteController.java | 8 ++++---- .../org/apache/camel/support/ExpressionAdapter.java | 17 ++++++++++++++++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractDynamicRegistry.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractDynamicRegistry.java index a96d91f..2dee3a7 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractDynamicRegistry.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractDynamicRegistry.java @@ -67,6 +67,8 @@ public class AbstractDynamicRegistry<K, V> extends AbstractMap<K, V> implements V answer = staticMap.get(o); if (answer == null) { answer = dynamicMap.get(o); + // TODO: avoid this expensive lookup, since its a get lookup which we want to be fast + // TODO: instead use some kind of event notifier to transfer from dynamic to static if (answer != null && (context.isSetupRoutes() || routeController.isStartingRoutes())) { dynamicMap.remove(o); staticMap.put((K) o, answer); diff --git a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java index cdd0375..7245c95 100644 --- a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java +++ b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/DefaultRouteController.java @@ -40,7 +40,7 @@ public class DefaultRouteController extends ServiceSupport implements RouteContr // mark this as non managed service as its registered specially as a route controller - private CamelContext camelContext; + private ExtendedCamelContext camelContext; private LoggingLevel loggingLevel = LoggingLevel.DEBUG; @@ -49,7 +49,7 @@ public class DefaultRouteController extends ServiceSupport implements RouteContr } public DefaultRouteController(CamelContext camelContext) { - this.camelContext = camelContext; + this.camelContext = (ExtendedCamelContext) camelContext; } // *************************************************** @@ -58,7 +58,7 @@ public class DefaultRouteController extends ServiceSupport implements RouteContr @Override public void setCamelContext(CamelContext camelContext) { - this.camelContext = camelContext; + this.camelContext = (ExtendedCamelContext) camelContext; } @Override @@ -86,7 +86,7 @@ public class DefaultRouteController extends ServiceSupport implements RouteContr // *************************************************** protected RouteController getInternalRouteController() { - return camelContext.adapt(ExtendedCamelContext.class).getInternalRouteController(); + return camelContext.getInternalRouteController(); } @Override diff --git a/core/camel-support/src/main/java/org/apache/camel/support/ExpressionAdapter.java b/core/camel-support/src/main/java/org/apache/camel/support/ExpressionAdapter.java index 22cbec3..f87d4ce 100644 --- a/core/camel-support/src/main/java/org/apache/camel/support/ExpressionAdapter.java +++ b/core/camel-support/src/main/java/org/apache/camel/support/ExpressionAdapter.java @@ -16,7 +16,9 @@ */ package org.apache.camel.support; +import org.apache.camel.CamelContext; import org.apache.camel.Exchange; +import org.apache.camel.TypeConverter; /** * A helper class for developers wishing to implement an {@link org.apache.camel.Expression} using Java code with a @@ -25,6 +27,14 @@ import org.apache.camel.Exchange; */ public abstract class ExpressionAdapter extends ExpressionSupport { + private TypeConverter converter; + + @Override + public void init(CamelContext context) { + super.init(context); + this.converter = context.getTypeConverter(); + } + @Override protected String assertionFailureMessage(Exchange exchange) { return toString(); @@ -37,7 +47,12 @@ public abstract class ExpressionAdapter extends ExpressionSupport { // do not use type converter if type is Object (optimize) return (T) value; } - return exchange.getContext().getTypeConverter().convertTo(type, exchange, value); + if (converter != null) { + // optimized to use converter from init + return converter.convertTo(type, exchange, value); + } else { + return exchange.getContext().getTypeConverter().convertTo(type, exchange, value); + } } }