Author: davsclaus
Date: Fri Apr  8 11:25:37 2011
New Revision: 1090204

URL: http://svn.apache.org/viewvc?rev=1090204&view=rev
Log:
CAMEL-3847: Adding new type converter should remove it from misses cache.

Added:
    
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java
      - copied, changed from r1090185, 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java
Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java?rev=1090204&r1=1090203&r2=1090204&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
 Fri Apr  8 11:25:37 2011
@@ -223,9 +223,7 @@ public abstract class BaseTypeConverterR
         }
 
         // Could not find suitable conversion, so remember it
-        synchronized (misses) {
-            misses.put(key, key);
-        }
+        misses.put(key, key);
 
         // Could not find suitable conversion, so return Void to indicate not 
found
         return Void.TYPE;
@@ -243,6 +241,8 @@ public abstract class BaseTypeConverterR
                     log.warn("Overriding type converter from: " + converter + 
" to: " + typeConverter);
                 }
                 typeMappings.put(key, typeConverter);
+                // remove any previous misses, as we added the new type 
converter
+                misses.remove(key);
             }
         }
     }

Copied: 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java
 (from r1090185, 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java)
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java&r1=1090185&r2=1090204&rev=1090204&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryMissesThenAddTest.java
 Fri Apr  8 11:25:37 2011
@@ -16,9 +16,6 @@
  */
 package org.apache.camel.impl;
 
-import java.io.File;
-import java.io.InputStream;
-
 import junit.framework.TestCase;
 import org.apache.camel.Exchange;
 import org.apache.camel.TypeConverter;
@@ -26,29 +23,19 @@ import org.apache.camel.TypeConverter;
 /**
  * @version 
  */
-public class TypeConverterRegistryTest extends TestCase {
-
-    public void testDefaultTypeConverterRegistry() {
-        DefaultCamelContext ctx = new DefaultCamelContext();
-        assertNotNull(ctx.getTypeConverterRegistry());
-
-        // file to inputstream is a default converter in Camel 
-        TypeConverter tc = 
ctx.getTypeConverterRegistry().lookup(InputStream.class, File.class);
-        assertNotNull(tc);
-    }
+public class TypeConverterRegistryMissesThenAddTest extends TestCase {
 
-    public void testAddTypeConverter() {
+    public void testMissThenAddTypeConverter() {
         DefaultCamelContext context = new DefaultCamelContext();
 
-        // START SNIPPET: e1
-        // add our own type converter manually that converts from String -> 
MyOrder using MyOrderTypeConverter
-        context.getTypeConverterRegistry().addTypeConverter(MyOrder.class, 
String.class, new MyOrderTypeConverter());
-        // END SNIPPET: e1
-
-        // START SNIPPET: e3
         MyOrder order = context.getTypeConverter().convertTo(MyOrder.class, 
"123");
-        // END SNIPPET: e3
+        assertNull(order);
+
+        // add missing type converter
+        context.getTypeConverterRegistry().addTypeConverter(MyOrder.class, 
String.class, new MyOrderTypeConverter());
 
+        // this time it should work
+        order = context.getTypeConverter().convertTo(MyOrder.class, "123");
         assertNotNull(order);
         assertEquals(123, order.getId());
     }
@@ -65,7 +52,6 @@ public class TypeConverterRegistryTest e
         }
     }
 
-    // START SNIPPET: e2
     private class MyOrderTypeConverter implements TypeConverter {
 
         @SuppressWarnings("unchecked")
@@ -77,8 +63,8 @@ public class TypeConverterRegistryTest e
         }
 
         public <T> T convertTo(Class<T> type, Exchange exchange, Object value) 
{
-            // this method with the Exchange parameter will be preferd by 
Camel to invoke
-            // this allows you to fetch information from the exchange during 
convertions
+            // this method with the Exchange parameter will be preferred by 
Camel to invoke
+            // this allows you to fetch information from the exchange during 
conversions
             // such as an encoding parameter or the likes
             return convertTo(type, value);
         }
@@ -91,6 +77,5 @@ public class TypeConverterRegistryTest e
             return convertTo(type, value);
         }
     }
-    // END SNIPPET: e2
 
 }

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java?rev=1090204&r1=1090203&r2=1090204&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/impl/TypeConverterRegistryTest.java
 Fri Apr  8 11:25:37 2011
@@ -77,8 +77,8 @@ public class TypeConverterRegistryTest e
         }
 
         public <T> T convertTo(Class<T> type, Exchange exchange, Object value) 
{
-            // this method with the Exchange parameter will be preferd by 
Camel to invoke
-            // this allows you to fetch information from the exchange during 
convertions
+            // this method with the Exchange parameter will be preferred by 
Camel to invoke
+            // this allows you to fetch information from the exchange during 
conversions
             // such as an encoding parameter or the likes
             return convertTo(type, value);
         }


Reply via email to