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


Reply via email to