[ https://issues.apache.org/jira/browse/BEANUTILS-61?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Niall Pemberton updated BEANUTILS-61: ------------------------------------- Assignee: Niall Pemberton Summary: PropertyUtilsBean isReadable() and isWriteable() methods do not work correctly for WrapDynaBean (was: [beanutils] PropertyUtilsBean does not work correctly for WrapDynaBean) > PropertyUtilsBean isReadable() and isWriteable() methods do not work > correctly for WrapDynaBean > ----------------------------------------------------------------------------------------------- > > Key: BEANUTILS-61 > URL: https://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 > Assignee: Niall Pemberton > 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. - 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]