DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=26904>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=26904 (g|s)etSimpleProperty fails when passing a Map Summary: (g|s)etSimpleProperty fails when passing a Map Product: Commons Version: Nightly Builds Platform: All OS/Version: Other Status: NEW Severity: Normal Priority: Other Component: Bean Utilities AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] I have already posted it in [EMAIL PROTECTED], but maybe this is a better place. I don't know... In PropertyUtilsBean, calling getNestedProperty(bean, "simpleProperty") with bean instanceof Map works, but getSimpleProperty(bean, "simpleProperty") throws a NoSuchMethodException, which doesn't seem logical. I think than Map instances should be handled in g|setSimpleProperty instean of in g|setNestedProperty. This is a patch which passes the tests: Index: org/apache/commons/beanutils/PropertyUtilsBean.java =================================================================== RCS file: /home/cvspublic/jakarta- commons/beanutils/src/java/org/apache/commons/beanutils/PropertyUtilsBean.java,v retrieving revision 1.13 diff -u -r1.13 PropertyUtilsBean.java --- org/apache/commons/beanutils/PropertyUtilsBean.java 13 Oct 2003 14:12:08 - 0000 1.13 +++ org/apache/commons/beanutils/PropertyUtilsBean.java 11 Feb 2004 17:26:21 - 0000 @@ -699,9 +699,7 @@ String next = name.substring(0, indexOfNESTED_DELIM); indexOfINDEXED_DELIM = next.indexOf(PropertyUtils.INDEXED_DELIM); indexOfMAPPED_DELIM = next.indexOf(PropertyUtils.MAPPED_DELIM); - if (bean instanceof Map) { - bean = ((Map) bean).get(next); - } else if (indexOfMAPPED_DELIM >= 0) { + if (indexOfMAPPED_DELIM >= 0) { bean = getMappedProperty(bean, next); } else if (indexOfINDEXED_DELIM >= 0) { bean = getIndexedProperty(bean, next); @@ -1162,7 +1160,10 @@ PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); if (descriptor == null) { - throw new NoSuchMethodException("Unknown property '" + + if (bean instanceof Map) + return ((Map) bean).get(name); + else + throw new NoSuchMethodException("Unknown property '" + name + "'"); } Method readMethod = getReadMethod(descriptor); @@ -1652,9 +1653,7 @@ String next = name.substring(0, delim); indexOfINDEXED_DELIM = next.indexOf(PropertyUtils.INDEXED_DELIM); indexOfMAPPED_DELIM = next.indexOf(PropertyUtils.MAPPED_DELIM); - if (bean instanceof Map) { - bean = ((Map) bean).get(next); - } else if (indexOfMAPPED_DELIM >= 0) { + if (indexOfMAPPED_DELIM >= 0) { bean = getMappedProperty(bean, next); } else if (indexOfINDEXED_DELIM >= 0) { bean = getIndexedProperty(bean, next); @@ -1672,18 +1671,7 @@ indexOfINDEXED_DELIM = name.indexOf(PropertyUtils.INDEXED_DELIM); indexOfMAPPED_DELIM = name.indexOf(PropertyUtils.MAPPED_DELIM); - if (bean instanceof Map) { - // check to see if the class has a standard property - PropertyDescriptor descriptor = - getPropertyDescriptor(bean, name); - if (descriptor == null) { - // no - then put the value into the map - ((Map) bean).put(name, value); - } else { - // yes - use that instead - setSimpleProperty(bean, name, value); - } - } else if (indexOfMAPPED_DELIM >= 0) { + if (indexOfMAPPED_DELIM >= 0) { setMappedProperty(bean, name, value); } else if (indexOfINDEXED_DELIM >= 0) { setIndexedProperty(bean, name, value); @@ -1781,7 +1769,13 @@ PropertyDescriptor descriptor = getPropertyDescriptor(bean, name); if (descriptor == null) { - throw new NoSuchMethodException("Unknown property '" + + // Handle Map instances + if (bean instanceof Map){ + ((Map) bean).put(name, value); + return; + } + else + throw new NoSuchMethodException("Unknown property '" + name + "'"); } Method writeMethod = getWriteMethod(descriptor); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
