You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/03/08 12:43:27 UTC

[camel] branch master updated: camel-bean - optimize

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


The following commit(s) were added to refs/heads/master by this push:
     new 9c9faff  camel-bean - optimize
9c9faff is described below

commit 9c9faffb98341ab897672d219c33ff182ecbda54
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Mar 8 13:28:03 2020 +0100

    camel-bean - optimize
---
 .../org/apache/camel/component/bean/BeanInfo.java  |  2 +-
 .../bean/DefaultParameterMappingStrategy.java      | 38 ++++++++++------------
 2 files changed, 18 insertions(+), 22 deletions(-)

diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java
index d662e21..13ff155 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/BeanInfo.java
@@ -163,7 +163,7 @@ public class BeanInfo {
         ParameterMappingStrategy answer = registry.lookupByNameAndType(BeanConstants.BEAN_PARAMETER_MAPPING_STRATEGY, ParameterMappingStrategy.class);
         if (answer == null) {
             // no then use the default one
-            answer = new DefaultParameterMappingStrategy();
+            answer = DefaultParameterMappingStrategy.INSTANCE;
         }
 
         return answer;
diff --git a/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java b/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java
index a57949b..bf5c4c7 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/component/bean/DefaultParameterMappingStrategy.java
@@ -16,8 +16,8 @@
  */
 package org.apache.camel.component.bean;
 
+import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
@@ -30,31 +30,27 @@ import org.apache.camel.support.builder.ExpressionBuilder;
 /**
  * Represents the strategy used to figure out how to map a message exchange to a POJO method invocation
  */
-public class DefaultParameterMappingStrategy implements ParameterMappingStrategy {
-    private final Map<Class<?>, Expression> parameterTypeToExpressionMap = new ConcurrentHashMap<>();
+public final class DefaultParameterMappingStrategy implements ParameterMappingStrategy {
 
-    public DefaultParameterMappingStrategy() {
-        loadDefaultRegistry();
+    public static final DefaultParameterMappingStrategy INSTANCE = new DefaultParameterMappingStrategy();
+
+    private static final Map<Class<?>, Expression> map = new HashMap<>(6);
+
+    static {
+        map.put(Exchange.class, ExpressionBuilder.exchangeExpression());
+        map.put(Message.class, ExpressionBuilder.inMessageExpression());
+        map.put(Exception.class, ExpressionBuilder.exchangeExceptionExpression());
+        map.put(TypeConverter.class, ExpressionBuilder.typeConverterExpression());
+        map.put(Registry.class, ExpressionBuilder.registryExpression());
+        map.put(CamelContext.class, ExpressionBuilder.camelContextExpression());
+    };
+
+    private DefaultParameterMappingStrategy() {
     }
 
     @Override
     public Expression getDefaultParameterTypeExpression(Class<?> parameterType) {
-        return parameterTypeToExpressionMap.get(parameterType);
+        return map.get(parameterType);
     }
 
-    /**
-     * Adds a default parameter type mapping to an expression
-     */
-    public void addParameterMapping(Class<?> parameterType, Expression expression) {
-        parameterTypeToExpressionMap.put(parameterType, expression);
-    }
-
-    public void loadDefaultRegistry() {
-        addParameterMapping(Exchange.class, ExpressionBuilder.exchangeExpression());
-        addParameterMapping(Message.class, ExpressionBuilder.inMessageExpression());
-        addParameterMapping(Exception.class, ExpressionBuilder.exchangeExceptionExpression());
-        addParameterMapping(TypeConverter.class, ExpressionBuilder.typeConverterExpression());
-        addParameterMapping(Registry.class, ExpressionBuilder.registryExpression());
-        addParameterMapping(CamelContext.class, ExpressionBuilder.camelContextExpression());
-    }
 }