[ 
https://issues.apache.org/jira/browse/BEANUTILS-297?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Niall Pemberton resolved BEANUTILS-297.
---------------------------------------

    Resolution: Fixed

Fixed - http://svn.apache.org/viewvc?view=rev&revision=640259

> ConvertingWrapDynaBean hides cause exceptions
> ---------------------------------------------
>
>                 Key: BEANUTILS-297
>                 URL: https://issues.apache.org/jira/browse/BEANUTILS-297
>             Project: Commons BeanUtils
>          Issue Type: Improvement
>          Components: DynaBean
>    Affects Versions: 1.8.0-BETA
>            Reporter: Alex Tkachev
>             Fix For: 1.8.0
>
>
> ConvertingWrapDynaBean.set(String,Object) method hides cause exception.
> This issue relates to BEANUTILS-23 that partially fixed this problem, by 
> adding only the message of the cause exception to IllegalArgumentException 
> that is being thrown:
> try {
>             BeanUtils.copyProperty(instance, name, value);
>         } catch (InvocationTargetException ite) {
>             Throwable cause = ite.getTargetException();
>             throw new IllegalArgumentException
>                     ("Error setting property '" + name +
>                               "' nested exception - " + cause);
>         } catch (Throwable t) {
>             throw new IllegalArgumentException
>                     ("Error setting property '" + name +
>                               "', exception - " + t);
>         }
> I think that the cause exception (ie Throwable t) should be passed to newly 
> generated IllegalArgumentException (as second parameter). I don't really see 
> no good in hiding it, it only causes problems in identifying the cause why 
> the setter has failed. Good example why this is important is using Jelly. If 
> for some reason the setter fails (for instance, some illegal value was passed 
> and nested exception was thrown by the setter), you have no way of knowing 
> the cause of it. The only way to find out the real cause is through 
> debugging, setting some complex conditional breakpoints.
> My proposed code is:
> try {
>             BeanUtils.copyProperty(instance, name, value);
>         } catch (InvocationTargetException ite) {
>             Throwable cause = ite.getTargetException();
>             throw new IllegalArgumentException
>                     ("Error setting property '" + name +
>                               "' nested exception - " + cause, t);
>         } catch (Throwable t) {
>             throw new IllegalArgumentException
>                     ("Error setting property '" + name +
>                               "', exception - " + t, t);
>         }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to