[#840] Numeric conversions in getValueAsXXX() should trim String values first

This commit is contained in:
Lukas Eder 2011-09-22 20:44:40 +00:00
parent 8f99fca184
commit 65291bb1c5
2 changed files with 19 additions and 8 deletions

View File

@ -1485,6 +1485,17 @@ public abstract class jOOQAbstractTest<
assertEquals(Boolean.TRUE, SQLDataType.BOOLEAN.convert("1"));
assertEquals("1", SQLDataType.VARCHAR.convert("1"));
assertEquals(Byte.valueOf("1"), SQLDataType.TINYINT.convert(" 1"));
assertEquals(Short.valueOf("1"), SQLDataType.SMALLINT.convert(" 1"));
assertEquals(Integer.valueOf("1"), SQLDataType.INTEGER.convert(" 1"));
assertEquals(Long.valueOf("1"), SQLDataType.BIGINT.convert(" 1"));
assertEquals(Float.valueOf("1"), SQLDataType.REAL.convert(" 1"));
assertEquals(Double.valueOf("1"), SQLDataType.DOUBLE.convert(" 1"));
assertEquals(new BigInteger("1"), SQLDataType.DECIMAL_INTEGER.convert(" 1"));
assertEquals(new BigDecimal("1"), SQLDataType.NUMERIC.convert(" 1"));
assertEquals(Boolean.TRUE, SQLDataType.BOOLEAN.convert(" 1"));
assertEquals(" 1", SQLDataType.VARCHAR.convert(" 1"));
assertEquals(Byte.valueOf("1"), SQLDataType.TINYINT.convert((byte) 1));
assertEquals(Short.valueOf("1"), SQLDataType.SMALLINT.convert((byte) 1));
assertEquals(Integer.valueOf("1"), SQLDataType.INTEGER.convert((byte) 1));

View File

@ -186,28 +186,28 @@ final class TypeUtils {
// Various number types are converted between each other via String
else if (toClass == Byte.class) {
return (T) Byte.valueOf(new BigDecimal(from.toString()).byteValue());
return (T) Byte.valueOf(new BigDecimal(from.toString().trim()).byteValue());
}
else if (toClass == Short.class) {
return (T) Short.valueOf(new BigDecimal(from.toString()).shortValue());
return (T) Short.valueOf(new BigDecimal(from.toString().trim()).shortValue());
}
else if (toClass == Integer.class) {
return (T) Integer.valueOf(new BigDecimal(from.toString()).intValue());
return (T) Integer.valueOf(new BigDecimal(from.toString().trim()).intValue());
}
else if (toClass == Long.class) {
return (T) Long.valueOf(new BigDecimal(from.toString()).longValue());
return (T) Long.valueOf(new BigDecimal(from.toString().trim()).longValue());
}
else if (toClass == Float.class) {
return (T) Float.valueOf(from.toString());
return (T) Float.valueOf(from.toString().trim());
}
else if (toClass == Double.class) {
return (T) Double.valueOf(from.toString());
return (T) Double.valueOf(from.toString().trim());
}
else if (toClass == BigDecimal.class) {
return (T) new BigDecimal(from.toString());
return (T) new BigDecimal(from.toString().trim());
}
else if (toClass == BigInteger.class) {
return (T) new BigDecimal(from.toString()).toBigInteger();
return (T) new BigDecimal(from.toString().trim()).toBigInteger();
}
else if (toClass == Boolean.class) {
String s = from.toString().toLowerCase().trim();