[ http://issues.apache.org/jira/browse/BEANUTILS-61?page=all ]

Henri Yandell updated BEANUTILS-61:
-----------------------------------

      Bugzilla Id:   (was: 35240)
    Fix Version/s: 1.8.0

> [beanutils] PropertyUtilsBean does not work correctly for WrapDynaBean
> ----------------------------------------------------------------------
>
>                 Key: BEANUTILS-61
>                 URL: http://issues.apache.org/jira/browse/BEANUTILS-61
>             Project: Commons BeanUtils
>          Issue Type: Bug
>          Components: DynaBean
>    Affects Versions: Nightly Builds
>         Environment: Operating System: other
> Platform: All
>            Reporter: Brian Ewins
>            Priority: Minor
>             Fix For: 1.8.0
>
>
> Try this: given any pojo class MyBean.java,
> MyBean orig = new MyBean();
> MyBean dest = new MyBean();
> DynaBean db = new WrapDynaBean(dest);
> PropertyUtils.copyProperties(db, orig);
> You'll see an exception like:
> java.lang.IllegalArgumentException: Property 'class' has no write method
>         at 
> org.apache.commons.beanutils.WrapDynaBean.set(WrapDynaBean.java:266)
> This surprised me because 'copyProperties()' does an 'isWritable()' check 
> before
> it sets properties. However, what PropertyUtilsBean.isWritable actually does 
> is
> this:
> if (bean instanceof DynaBean) {
>             // All DynaBean properties are writeable
>             return (((DynaBean) bean).getDynaClass().getDynaProperty(name) != 
> null);
> } ...
> That's plainly wrong for a WrapDynaBean, since pretty much every wrapped 
> object
> has a non-writable 'class' property. 
> A workaround for the immediate problem:
> if (db instanceof WrapDynaBean) {
>   PropertyUtils.copyProperties(((WrapDynaBean) db).getInstance(), src);
> } else {
>   PropertyUtils.copyProperties(dest, src);
> }
> ... the problem affects isReadable and isWritable, and hence copyProperties; 
> to
> fix it for all cases would (I think) require unwrapping any WrapDynaBeans 
> passed
> into those calls.
> I guess having a situation where you'd use PropertyUtils /and/ WrapDynaBeans 
> is
> fairly unusual so this is just a minor bug.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to