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