diff --git a/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java index af44f8881..fa2301740 100644 --- a/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java +++ b/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java @@ -295,9 +295,6 @@ protected String convertToString(final Object value) throws Throwable { * @return The default value for the specified type. */ protected Object getDefault(final Class type) { - if (type.equals(String.class)) { - return null; - } return defaultValue; } diff --git a/src/test/java/org/apache/commons/beanutils2/BeanUtilsTestCase.java b/src/test/java/org/apache/commons/beanutils2/BeanUtilsTestCase.java index 69347fc26..d530bc409 100644 --- a/src/test/java/org/apache/commons/beanutils2/BeanUtilsTestCase.java +++ b/src/test/java/org/apache/commons/beanutils2/BeanUtilsTestCase.java @@ -27,6 +27,7 @@ import org.apache.commons.beanutils2.converters.ArrayConverter; import org.apache.commons.beanutils2.converters.DateConverter; +import org.apache.commons.beanutils2.converters.StringConverter; import junit.framework.Test; import junit.framework.TestCase; @@ -146,6 +147,12 @@ protected void setUpShared() { testCalendar.set(Calendar.MILLISECOND, 0); testUtilDate = testCalendar.getTime(); testStringDate = "28.12.1992"; + + /* + * Replacing default StringConverter (having default value) with StringConverter without default value + * to allow testing of nullProperty. + */ + ConvertUtils.register(new StringConverter(), String.class); } /** diff --git a/src/test/java/org/apache/commons/beanutils2/DynaBeanUtilsTestCase.java b/src/test/java/org/apache/commons/beanutils2/DynaBeanUtilsTestCase.java index 80fc9edc2..823b9a665 100644 --- a/src/test/java/org/apache/commons/beanutils2/DynaBeanUtilsTestCase.java +++ b/src/test/java/org/apache/commons/beanutils2/DynaBeanUtilsTestCase.java @@ -24,6 +24,8 @@ import java.util.List; import java.util.Map; +import org.apache.commons.beanutils2.converters.StringConverter; + import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; @@ -96,6 +98,11 @@ public DynaBeanUtilsTestCase(final String name) { public void setUp() throws Exception { ConvertUtils.deregister(); + /* + * Replacing default StringConverter (having default value) with StringConverter without default value + * to allow testing of nullProperty. + */ + ConvertUtils.register(new StringConverter(), String.class); // Instantiate a new DynaBean instance final DynaClass dynaClass = createDynaClass(); @@ -812,6 +819,7 @@ public void testPopulateNested() { */ public void testPopulateScalar() { + try { bean.set("nullProperty", "non-null value"); diff --git a/src/test/java/org/apache/commons/beanutils2/converters/StringConverterTestCase.java b/src/test/java/org/apache/commons/beanutils2/converters/StringConverterTestCase.java index 91beae706..a1c220bc3 100644 --- a/src/test/java/org/apache/commons/beanutils2/converters/StringConverterTestCase.java +++ b/src/test/java/org/apache/commons/beanutils2/converters/StringConverterTestCase.java @@ -25,6 +25,9 @@ * */ public class StringConverterTestCase extends TestCase { + + private static final String DEFAULT_VALUE = "default"; + /** The converter to be tested. */ private StringConverter converter; @@ -61,4 +64,12 @@ public void testConvertToUnsupportedType() { public void testDefaultType() { assertEquals("Wrong default type", String.class, converter.getDefaultType()); } + + /** + * Tests whether the correct default value is returned. + */ + public void testDefaultValue() { + converter.setDefaultValue(DEFAULT_VALUE); + assertEquals("Wrong default value", DEFAULT_VALUE, converter.convert(String.class, null)); + } }