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