diff --git a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java index 38c1edfad..731b8f503 100644 --- a/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java +++ b/core/src/main/java/com/opensymphony/xwork2/conversion/impl/DefaultTypeConverter.java @@ -48,7 +48,7 @@ public abstract class DefaultTypeConverter implements TypeConverter { private static final String NULL_STRING = "null"; - private static final Map, Object> primitiveDefaults; + private static final Map, Object> baseTypeDefaults; private Container container; @@ -62,9 +62,9 @@ public abstract class DefaultTypeConverter implements TypeConverter { map.put(Long.TYPE, Long.valueOf(0L)); map.put(Float.TYPE, new Float(0.0f)); map.put(Double.TYPE, new Double(0.0)); - map.put(BigInteger.class, new BigInteger("0")); - map.put(BigDecimal.class, BigDecimal.valueOf(0.0)); - primitiveDefaults = Collections.unmodifiableMap(map); + map.put(BigInteger.class, BigInteger.ZERO); + map.put(BigDecimal.class, BigDecimal.ZERO); + baseTypeDefaults = Collections.unmodifiableMap(map); } @Inject @@ -153,8 +153,8 @@ public abstract class DefaultTypeConverter implements TypeConverter { if (Enum.class.isAssignableFrom(toType)) result = enumValue(toType, value); } - } else if (toType.isPrimitive()) { - result = primitiveDefaults.get(toType); + } else { + result = baseTypeDefaults.get(toType); } return result; } diff --git a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkBasicConverterTest.java b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkBasicConverterTest.java index be51879e2..f8c3e7e41 100644 --- a/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkBasicConverterTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/conversion/impl/XWorkBasicConverterTest.java @@ -250,7 +250,9 @@ public class XWorkBasicConverterTest extends XWorkTestCase { public void testBigDecimal() { Object convertedObject = basicConverter.convertValue(null, BigDecimal.class); - assertNull(convertedObject); + assertEquals(BigDecimal.ZERO, convertedObject); + assertTrue(convertedObject instanceof BigDecimal); + assertEquals(0, BigDecimal.ZERO.compareTo((BigDecimal) convertedObject)); convertedObject = basicConverter.convertValue(new BigDecimal(0), BigDecimal.class); assertEquals(BigDecimal.ZERO, convertedObject);