Repository: camel Updated Branches: refs/heads/master 628493645 -> 7f5301b75
CAMEL-8113: Optimize type converter registry. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/aa2339db Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/aa2339db Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/aa2339db Branch: refs/heads/master Commit: aa2339dba993a70faed042e54264c3bc58962a06 Parents: 6284936 Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Dec 18 15:22:49 2014 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Dec 18 21:27:56 2014 +0100 ---------------------------------------------------------------------- .../impl/converter/BaseTypeConverterRegistry.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/aa2339db/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java index 962c415..8c46a9d 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java +++ b/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java @@ -266,7 +266,7 @@ public abstract class BaseTypeConverterRegistry extends ServiceSupport implement } // try to find a suitable type converter - TypeConverter converter = getOrFindTypeConverter(type, value); + TypeConverter converter = getOrFindTypeConverter(key); if (converter != null) { log.trace("Using converter: {} to convert {}", converter, key); Object rc; @@ -287,7 +287,7 @@ public abstract class BaseTypeConverterRegistry extends ServiceSupport implement Class<?> primitiveType = ObjectHelper.convertPrimitiveTypeToWrapperType(type); if (primitiveType != type) { Class<?> fromType = value.getClass(); - TypeConverter tc = getOrFindTypeConverter(primitiveType, value); + TypeConverter tc = getOrFindTypeConverter(new TypeMapping(primitiveType, fromType)); if (tc != null) { // add the type as a known type converter as we can convert from primitive to object converter addTypeConverter(type, fromType, tc); @@ -436,16 +436,11 @@ public abstract class BaseTypeConverterRegistry extends ServiceSupport implement return typeMappings; } - protected <T> TypeConverter getOrFindTypeConverter(Class<?> toType, Object value) { - Class<?> fromType = null; - if (value != null) { - fromType = value.getClass(); - } - TypeMapping key = new TypeMapping(toType, fromType); + protected <T> TypeConverter getOrFindTypeConverter(TypeMapping key) { TypeConverter converter = typeMappings.get(key); if (converter == null) { // converter not found, try to lookup then - converter = lookup(toType, fromType); + converter = lookup(key.getToType(), key.getFromType()); if (converter != null) { typeMappings.putIfAbsent(key, converter); }