[
https://issues.apache.org/jira/browse/BEANUTILS-276?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
David Birch updated BEANUTILS-276:
----------------------------------
Description:
for the following types attempting to set a property to null using
BeanUtils.setProperty(java.lang.Object, java.lang.String, java.lang.Object)
will result in an Exception
java.math.BigDecimal
java.math.BigInteger
java.net.URL
java.io.File
java.sql.Date
java.sql.Time
java.sql.Timestamp
all primitive wrappers work fine, as does java.util.Date
sample stacktrace is
Failed Set empty [bigDecimal1]
org.apache.commons.beanutils.ConversionException: No value specified
at
org.apache.commons.beanutils.converters.BigDecimalConverter.convert(BigDecimalConverter.java:103)
at
org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:428)
at
org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1002)
at
org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:313)
at
com.marsh.ste.testing.steps.DataStepUT.testChanges(DataStepUT.java:52)
The converter classes seem to sort of have an option to handle null inputs by
returning a default value - from BigDecimalConverter.convert()
if (value == null) {
if (useDefault) {
return (defaultValue);
} else {
throw new ConversionException("No value specified");
}
}
though i am not totally sure, might be better to fix this in the
BeanUtilsBean.setProperty method, add some other cases - block starting line
1001
if ((value instanceof String) || (value == null)) {
newValue = getConvertUtils().convert((String) value, type);
} else if (value instanceof String[]) {
newValue = getConvertUtils().convert(((String[]) value)[0],
type);
} else if (getConvertUtils().lookup(value.getClass()) != null) {
newValue = getConvertUtils().convert(value.toString(), type);
} else {
newValue = value;
}
cheers
David
was:
for the following types attempting to set a property to null will result in an
Exception
java.math.BigDecimal
java.math.BigInteger
java.net.URL
java.io.File
java.sql.Date
java.sql.Time
java.sql.Timestamp
all primitive wrappers work fine, as does java.util.Date
sample stacktrace is
Failed Set empty [bigDecimal1]
org.apache.commons.beanutils.ConversionException: No value specified
at
org.apache.commons.beanutils.converters.BigDecimalConverter.convert(BigDecimalConverter.java:103)
at
org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:428)
at
org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1002)
at
org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:313)
at
com.marsh.ste.testing.steps.DataStepUT.testChanges(DataStepUT.java:52)
The converter classes seem to sort of have an option to handle null inputs by
returning a default value - from BigDecimalConverter.convert()
if (value == null) {
if (useDefault) {
return (defaultValue);
} else {
throw new ConversionException("No value specified");
}
}
though i am not totally sure, might be better to fix this in the
BeanUtilsBean.setProperty method, add some other cases - block starting line
1001
if ((value instanceof String) || (value == null)) {
newValue = getConvertUtils().convert((String) value, type);
} else if (value instanceof String[]) {
newValue = getConvertUtils().convert(((String[]) value)[0],
type);
} else if (getConvertUtils().lookup(value.getClass()) != null) {
newValue = getConvertUtils().convert(value.toString(), type);
} else {
newValue = value;
}
cheers
David
> Exceptions when setting properties to null (specific types only)
> ----------------------------------------------------------------
>
> Key: BEANUTILS-276
> URL: https://issues.apache.org/jira/browse/BEANUTILS-276
> Project: Commons BeanUtils
> Issue Type: Bug
> Components: ConvertUtils & Converters
> Affects Versions: 1.7.0
> Environment: java 1.4.2, 1.5.0
> Reporter: David Birch
>
> for the following types attempting to set a property to null using
> BeanUtils.setProperty(java.lang.Object, java.lang.String, java.lang.Object)
> will result in an Exception
> java.math.BigDecimal
> java.math.BigInteger
> java.net.URL
> java.io.File
> java.sql.Date
> java.sql.Time
> java.sql.Timestamp
> all primitive wrappers work fine, as does java.util.Date
> sample stacktrace is
> Failed Set empty [bigDecimal1]
> org.apache.commons.beanutils.ConversionException: No value specified
> at
> org.apache.commons.beanutils.converters.BigDecimalConverter.convert(BigDecimalConverter.java:103)
> at
> org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:428)
> at
> org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1002)
> at
> org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:313)
> at
> com.marsh.ste.testing.steps.DataStepUT.testChanges(DataStepUT.java:52)
> The converter classes seem to sort of have an option to handle null inputs by
> returning a default value - from BigDecimalConverter.convert()
> if (value == null) {
> if (useDefault) {
> return (defaultValue);
> } else {
> throw new ConversionException("No value specified");
> }
> }
> though i am not totally sure, might be better to fix this in the
> BeanUtilsBean.setProperty method, add some other cases - block starting line
> 1001
> if ((value instanceof String) || (value == null)) {
> newValue = getConvertUtils().convert((String) value, type);
> } else if (value instanceof String[]) {
> newValue = getConvertUtils().convert(((String[]) value)[0],
> type);
> } else if (getConvertUtils().lookup(value.getClass()) != null) {
> newValue = getConvertUtils().convert(value.toString(), type);
> } else {
> newValue = value;
> }
> cheers
> David
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]