You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by "David Birch (JIRA)" <ji...@apache.org> on 2007/05/02 18:25:15 UTC

[jira] Commented: (BEANUTILS-276) Exceptions when setting properties to null (specific types only)

    [ https://issues.apache.org/jira/browse/BEANUTILS-276?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12493135 ] 

David Birch commented on BEANUTILS-276:
---------------------------------------

PS. thanks for the explicit example for Config! this will give us a workaround

> 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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org