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);
+        }
     }
 
 }

Reply via email to