You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/02/23 13:47:43 UTC
svn commit: r1292773 - in /camel/branches/camel-2.8.x: ./
camel-core/src/main/java/org/apache/camel/converter/
camel-core/src/test/java/org/apache/camel/converter/
Author: davsclaus
Date: Thu Feb 23 12:47:43 2012
New Revision: 1292773
URL: http://svn.apache.org/viewvc?rev=1292773&view=rev
Log:
CAMEL-4959: Fixed type converter issue with NaN being converter to integers.
Added:
camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterNaNTest.java
- copied unchanged from r1292769, camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterNaNTest.java
Modified:
camel/branches/camel-2.8.x/ (props changed)
camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
Propchange: camel/branches/camel-2.8.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Feb 23 12:47:43 2012
@@ -1,2 +1,2 @@
-/camel/branches/camel-2.9.x:1227549,1228229,1229567,1234054,1236672,1238942,1240157,1241006,1241489,1243052,1243058,1244875,1244877,1291871,1292116,1292389,1292726
-/camel/trunk:1226860,1227540,1228223,1229565,1234043,1236667,1238937,1240025,1240950,1240967,1241482,1243046,1243057,1244870,1244872,1291848,1292114,1292384,1292725
+/camel/branches/camel-2.9.x:1227549,1228229,1229567,1234054,1236672,1238942,1240157,1241006,1241489,1243052,1243058,1244875,1244877,1291871,1292116,1292389,1292726,1292769
+/camel/trunk:1226860,1227540,1228223,1229565,1234043,1236667,1238937,1240025,1240950,1240967,1241482,1243046,1243057,1244870,1244872,1291848,1292114,1292384,1292725,1292767
Propchange: camel/branches/camel-2.8.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java?rev=1292773&r1=1292772&r2=1292773&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java (original)
+++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java Thu Feb 23 12:47:43 2012
@@ -80,6 +80,10 @@ public final class ObjectConverter {
if (value instanceof Byte) {
return (Byte) value;
} else if (value instanceof Number) {
+ if (value.equals(Float.NaN) || value.equals(Double.NaN)) {
+ // return zero for a NaN value
+ return Byte.valueOf("0");
+ }
Number number = (Number) value;
return number.byteValue();
} else if (value instanceof String) {
@@ -136,7 +140,8 @@ public final class ObjectConverter {
return (Short) value;
} else if (value instanceof Number) {
if (value.equals(Float.NaN) || value.equals(Double.NaN)) {
- return null;
+ // return zero for a NaN value
+ return Short.valueOf("0");
}
Number number = (Number) value;
return number.shortValue();
@@ -156,7 +161,8 @@ public final class ObjectConverter {
return (Integer) value;
} else if (value instanceof Number) {
if (value.equals(Float.NaN) || value.equals(Double.NaN)) {
- return null;
+ // return zero for a NaN value
+ return Integer.valueOf(0);
}
Number number = (Number) value;
return number.intValue();
@@ -176,7 +182,8 @@ public final class ObjectConverter {
return (Long) value;
} else if (value instanceof Number) {
if (value.equals(Float.NaN) || value.equals(Double.NaN)) {
- return null;
+ // return zero for a NaN value
+ return Long.valueOf(0);
}
Number number = (Number) value;
return number.longValue();
@@ -195,8 +202,8 @@ public final class ObjectConverter {
if (value instanceof Float) {
return (Float) value;
} else if (value instanceof Number) {
- if (value.equals(Double.NaN)) {
- return null;
+ if (value.equals(Double.NaN) || value.equals(Float.NaN)) {
+ return Float.NaN;
}
Number number = (Number) value;
return number.floatValue();
@@ -215,8 +222,8 @@ public final class ObjectConverter {
if (value instanceof Double) {
return (Double) value;
} else if (value instanceof Number) {
- if (value.equals(Float.NaN)) {
- return null;
+ if (value.equals(Double.NaN) || value.equals(Float.NaN)) {
+ return Double.NaN;
}
Number number = (Number) value;
return number.doubleValue();
Modified: camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java?rev=1292773&r1=1292772&r2=1292773&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java (original)
+++ camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/converter/ObjectConverterTest.java Thu Feb 23 12:47:43 2012
@@ -60,8 +60,9 @@ public class ObjectConverterTest extends
assertEquals(Short.valueOf("4"), ObjectConverter.toShort(Integer.valueOf("4")));
assertEquals(Short.valueOf("4"), ObjectConverter.toShort("4"));
assertEquals(null, ObjectConverter.toShort(new Date()));
- assertEquals(null, ObjectConverter.toShort(Double.NaN));
- assertEquals(null, ObjectConverter.toShort(Float.NaN));
+ assertEquals(Short.valueOf("0"), ObjectConverter.toShort(Double.NaN));
+ assertEquals(Short.valueOf("0"), ObjectConverter.toShort(Float.NaN));
+ assertEquals(Short.valueOf("4"), ObjectConverter.toShort(Short.valueOf("4")));
}
public void testToInteger() {
@@ -69,8 +70,9 @@ public class ObjectConverterTest extends
assertEquals(Integer.valueOf("4"), ObjectConverter.toInteger(Long.valueOf("4")));
assertEquals(Integer.valueOf("4"), ObjectConverter.toInteger("4"));
assertEquals(null, ObjectConverter.toInteger(new Date()));
- assertEquals(null, ObjectConverter.toInteger(Double.NaN));
- assertEquals(null, ObjectConverter.toInteger(Float.NaN));
+ assertEquals(Integer.valueOf("0"), ObjectConverter.toInteger(Double.NaN));
+ assertEquals(Integer.valueOf("0"), ObjectConverter.toInteger(Float.NaN));
+ assertEquals(Integer.valueOf("4"), ObjectConverter.toInteger(Integer.valueOf("4")));
}
public void testToLong() {
@@ -78,8 +80,9 @@ public class ObjectConverterTest extends
assertEquals(Long.valueOf("4"), ObjectConverter.toLong(Integer.valueOf("4")));
assertEquals(Long.valueOf("4"), ObjectConverter.toLong("4"));
assertEquals(null, ObjectConverter.toLong(new Date()));
- assertEquals(null, ObjectConverter.toLong(Double.NaN));
- assertEquals(null, ObjectConverter.toLong(Float.NaN));
+ assertEquals(Long.valueOf("0"), ObjectConverter.toLong(Double.NaN));
+ assertEquals(Long.valueOf("0"), ObjectConverter.toLong(Float.NaN));
+ assertEquals(Long.valueOf("4"), ObjectConverter.toLong(Long.valueOf("4")));
}
public void testToFloat() {
@@ -87,8 +90,9 @@ public class ObjectConverterTest extends
assertEquals(Float.valueOf("4"), ObjectConverter.toFloat(Integer.valueOf("4")));
assertEquals(Float.valueOf("4"), ObjectConverter.toFloat("4"));
assertEquals(null, ObjectConverter.toFloat(new Date()));
- assertEquals(null, ObjectConverter.toFloat(Double.NaN));
+ assertEquals(Float.NaN, ObjectConverter.toFloat(Double.NaN));
assertEquals(Float.NaN, ObjectConverter.toFloat(Float.NaN));
+ assertEquals(Float.valueOf("4"), ObjectConverter.toFloat(Float.valueOf("4")));
}
public void testToDouble() {
@@ -97,7 +101,8 @@ public class ObjectConverterTest extends
assertEquals(Double.valueOf("4"), ObjectConverter.toDouble("4"));
assertEquals(null, ObjectConverter.toDouble(new Date()));
assertEquals(Double.NaN, ObjectConverter.toDouble(Double.NaN));
- assertEquals(null, ObjectConverter.toDouble(Float.NaN));
+ assertEquals(Double.NaN, ObjectConverter.toDouble(Float.NaN));
+ assertEquals(Double.valueOf("4"), ObjectConverter.toDouble(Double.valueOf("4")));
}
public void testToString() {
@@ -107,4 +112,11 @@ public class ObjectConverterTest extends
assertEquals("", ObjectConverter.toString(new StringBuilder("")));
}
+ public void testNaN() throws Exception {
+ assertEquals(Double.NaN, ObjectConverter.toDouble(Double.NaN));
+ assertEquals(Double.NaN, ObjectConverter.toDouble(Float.NaN));
+ assertEquals(Float.NaN, ObjectConverter.toFloat(Double.NaN));
+ assertEquals(Float.NaN, ObjectConverter.toFloat(Float.NaN));
+ }
+
}