Author: davsclaus Date: Wed Feb 29 05:26:40 2012 New Revision: 1294976 URL: http://svn.apache.org/viewvc?rev=1294976&view=rev Log: CAMEL-4959: Type convertion with NaN numbers requires a bit special handling.
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java camel/trunk/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java 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=1294976&r1=1294975&r2=1294976&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 Wed Feb 29 05:26:40 2012 @@ -1384,9 +1384,10 @@ public final class ObjectHelper { * @return <tt>true</tt> if its a {@link Float#NaN} or {@link Double#NaN}. */ public static boolean isNaN(Object value) { - if (value == null) { + if (value == null || !(value instanceof Number)) { return false; } + // value must be a number return value.equals(Float.NaN) || value.equals(Double.NaN); } Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java?rev=1294976&r1=1294975&r2=1294976&view=diff ============================================================================== --- camel/trunk/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java (original) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/util/ObjectHelperTest.java Wed Feb 29 05:26:40 2012 @@ -346,5 +346,19 @@ public class ObjectHelperTest extends Te String code3 = ObjectHelper.getIdentityHashCode(dummyB); assertNotSame(code, code3); } + + public void testIsNaN() throws Exception { + assertTrue(ObjectHelper.isNaN(Float.NaN)); + assertTrue(ObjectHelper.isNaN(Double.NaN)); + + assertFalse(ObjectHelper.isNaN(null)); + assertFalse(ObjectHelper.isNaN("")); + assertFalse(ObjectHelper.isNaN("1.0")); + assertFalse(ObjectHelper.isNaN(1)); + assertFalse(ObjectHelper.isNaN(1.5f)); + assertFalse(ObjectHelper.isNaN(1.5d)); + assertFalse(ObjectHelper.isNaN(false)); + assertFalse(ObjectHelper.isNaN(true)); + } }