Author: davsclaus
Date: Tue Jul 14 15:20:31 2009
New Revision: 793935

URL: http://svn.apache.org/viewvc?rev=793935&view=rev
Log:
Fallback converters that can convert a given entry is now used as regular type 
converter in the future to avoid performance degration of walking through all 
fallback converters ending up in the last one. A great win on some really heavy 
messaging tests.

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/converter/ObjectHelperTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java?rev=793935&r1=793934&r2=793935&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/converter/DefaultTypeConverter.java
 Tue Jul 14 15:20:31 2009
@@ -165,6 +165,12 @@
         for (TypeConverter fallback : fallbackConverters) {
             Object rc = fallback.convertTo(type, exchange, value);
             if (rc != null) {
+                // add it as a known type converter since we found a fallback 
that could do it
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("Adding fallback type converter as a known type 
converter to convert from: "
+                        + type.getCanonicalName() + " to: " + 
value.getClass().getCanonicalName());
+                }
+                addTypeConverter(type, value.getClass(), fallback);
                 return rc;
             }
         }

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java?rev=793935&r1=793934&r2=793935&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java 
(original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java 
Tue Jul 14 15:20:31 2009
@@ -479,7 +479,8 @@
                     int idx = -1;
 
                     public boolean hasNext() {
-                        return ++idx == 0;
+                        // empty string should not be regarded as having next
+                        return ++idx == 0 && ObjectHelper.isNotEmpty(s);
                     }
 
                     public String next() {

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/converter/ObjectHelperTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/ObjectHelperTest.java?rev=793935&r1=793934&r2=793935&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/converter/ObjectHelperTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/converter/ObjectHelperTest.java
 Tue Jul 14 15:20:31 2009
@@ -59,4 +59,29 @@
         assertTrue(ObjectHelper.isNotEmpty(new Object()));
     }
 
+    public void testIteratorWithComma() {
+        Iterator it = ObjectHelper.createIterator("Claus,Jonathan");
+        assertEquals("Claus", it.next());
+        assertEquals("Jonathan", it.next());
+        assertEquals(false, it.hasNext());
+    }
+
+    public void testIteratorWithOtherDelimiter() {
+        Iterator it = ObjectHelper.createIterator("Claus#Jonathan", "#");
+        assertEquals("Claus", it.next());
+        assertEquals("Jonathan", it.next());
+        assertEquals(false, it.hasNext());
+    }
+
+    public void testIteratorEmpty() {
+        Iterator it = ObjectHelper.createIterator("");
+        assertEquals(false, it.hasNext());
+
+        it = ObjectHelper.createIterator("    ");
+        assertEquals(false, it.hasNext());
+
+        it = ObjectHelper.createIterator(null);
+        assertEquals(false, it.hasNext());
+    }
+
 }


Reply via email to