commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oliver Heger (JIRA)" <>
Subject [jira] [Commented] (CONFIGURATION-566) BeanHelper.createBean() can't support Map<> bean property loading from file
Date Sun, 27 Apr 2014 17:53:15 GMT


Oliver Heger commented on CONFIGURATION-566:

When the {{isWriteable()}} check is removed the test case {{testInitBeanWithInvalidProperty}}
fails. This test tries to set a value for a non-existing property. Obviously, {{setProperty()}}
does not throw an exception in this case, but ignores the property it cannot resolve - this
is in-line with the documentation of this method.

However, for Commons Configuration it is desired that an invalid or non-existing property
causes an exception to be thrown. So the proposed fix cannot be applied.

I fear, it is not possible to implement a satisfying work-around in Configuration. This is
really an issue for BeanUtils.

> BeanHelper.createBean() can't support Map<> bean property loading from file
> ---------------------------------------------------------------------------
>                 Key: CONFIGURATION-566
>                 URL:
>             Project: Commons Configuration
>          Issue Type: Bug
>          Components: Type conversion
>    Affects Versions: 1.10
>            Reporter: Shen liang
> The issue is BeanUtils.setProperty() can support the java Map bean to set the (key, value)
entry. But the BeahHelper.initProperty() add 1 more PropertyUtils.isWriteable() check. While
this PropertyUtils.isWriteable() doesn't support java Map bean. 
> The check "PropertyUtils.isWriteable()" is quite redundant and unnecessary.
> Is it better to remove the check "PropertyUtils.isWriteable()" since the BeanUtils.setProperty()
has various ways to set the properties?
> {noformat}
> BeanHelper.createBean() 
>  -> DefaultBeanFactory.createBean()
>       -> DefaultBeanFactory.initBeanInstance()
>            -> BeanHelper.initBean()
>                 ->BeahHelper.initProperty()
>                    {
>                         if (!PropertyUtils.isWriteable(bean, propName))
>                         ...
>                         BeanUtils.setProperty(bean, propName, value);
>                    }
> {noformat}

This message was sent by Atlassian JIRA

View raw message