[ 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]