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 <claus.ib...@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()); - } }