[
https://issues.apache.org/jira/browse/BEANUTILS-345?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Niall Pemberton resolved BEANUTILS-345.
---------------------------------------
Resolution: Fixed
Fix Version/s: 1.8.1
Assignee: Niall Pemberton
I agree with your suggestion - thanks for the patch, I have fixed this:
http://svn.apache.org/viewvc?view=rev&revision=822308
> BeanUtilsBean.setProperty does not handle some kind of nested properties
> ------------------------------------------------------------------------
>
> Key: BEANUTILS-345
> URL: https://issues.apache.org/jira/browse/BEANUTILS-345
> Project: Commons BeanUtils
> Issue Type: Bug
> Components: Bean / Property Utils
> Affects Versions: 1.8.0
> Environment: Windows XP, java 1.6
> Reporter: Simone Riccucci
> Assignee: Niall Pemberton
> Fix For: 1.8.1
>
>
> If we have a Bean containing a two dimension array, the method setProperty of
> class BeanUtilsBean does not work correctly.
> Example
> {code:title=MyBean.java|borderStyle=solid}
> public class MyBean {
> String [][]matr =new String[][]{{"1","2"},{"3","4"}};
>
> public String[][] getMatr() {
> return matr;
> }
> public void setMatr(String[][] matr) {
> this.matr = matr;
> }
> }
> {code}
> When calling {code:borderStyle=solid}
> BeanUtilsBean.getInstance().setProperty(myBean, "matr[0][0]","Sample"){code}
> the method does not set the first element of first array.
> I have patched this behaviour adding the line between comment //BEGIN PATCH
> and //END PATCH to BeanUtilsBean.java
> {code:title=BeanUtilsBean.java|borderStyle=solid}
> 920: // Calculate the property type
> 921: if (target instanceof DynaBean) {
> 922: DynaClass dynaClass = ((DynaBean) target).getDynaClass();
> 923: DynaProperty dynaProperty =
> dynaClass.getDynaProperty(propName);
> 924: if (dynaProperty == null) {
> 925: return; // Skip this property setter
> 926: }
> 927: type = dynaProperty.getType();
> 928: } else if (target instanceof Map) {
> 929: type = Object.class;
> 930: // BEGIN PATCH
> 931: } else if (target.getClass().isArray() && index>=0) {
> 932: type = Array.get(target, index).getClass();
> 933: // END PATCH
> 934: } else {
> ......
> ......
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.