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