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

Reply via email to