You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2008/03/24 00:26:12 UTC
svn commit: r640274 - in /commons/proper/beanutils/trunk/src:
java/org/apache/commons/beanutils/BeanUtilsBean.java
test/org/apache/commons/beanutils/BeanUtilsTestCase.java
Author: niallp
Date: Sun Mar 23 16:26:11 2008
New Revision: 640274
URL: http://svn.apache.org/viewvc?rev=640274&view=rev
Log:
Fix BEANUTILS-294 BeanUtilsBean.setProperty() does not support nested map - reported by Stephen Leung
Modified:
commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java
commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java
Modified: commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java
URL: http://svn.apache.org/viewvc/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java?rev=640274&r1=640273&r2=640274&view=diff
==============================================================================
--- commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java (original)
+++ commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java Sun Mar 23 16:26:11 2008
@@ -924,6 +924,8 @@
return; // Skip this property setter
}
type = dynaProperty.getType();
+ } else if (target instanceof Map) {
+ type = Object.class;
} else {
PropertyDescriptor descriptor = null;
try {
@@ -1009,15 +1011,7 @@
// Invoke the setter method
try {
- if (index >= 0) {
- getPropertyUtils().setIndexedProperty(target, propName,
- index, newValue);
- } else if (key != null) {
- getPropertyUtils().setMappedProperty(target, propName,
- key, newValue);
- } else {
- getPropertyUtils().setProperty(target, propName, newValue);
- }
+ getPropertyUtils().setProperty(target, name, newValue);
} catch (NoSuchMethodException e) {
throw new InvocationTargetException
(e, "Cannot set " + propName);
Modified: commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java?rev=640274&r1=640273&r2=640274&view=diff
==============================================================================
--- commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java (original)
+++ commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java Sun Mar 23 16:26:11 2008
@@ -1471,6 +1471,26 @@
}
+ /**
+ * Test setting a value out of a mapped Map
+ */
+ public void testSetMappedMap() {
+ TestBean bean = new TestBean();
+ Map map = new HashMap();
+ map.put("sub-key-1", "sub-value-1");
+ map.put("sub-key-2", "sub-value-2");
+ map.put("sub-key-3", "sub-value-3");
+ bean.getMapProperty().put("mappedMap", map);
+
+ assertEquals("BEFORE", "sub-value-3", ((Map)bean.getMapProperty().get("mappedMap")).get("sub-key-3"));
+ try {
+ BeanUtils.setProperty(bean, "mapProperty(mappedMap)(sub-key-3)", "SUB-KEY-3-UPDATED");
+ } catch (Throwable t) {
+ fail("Threw " + t + "");
+ }
+ assertEquals("AFTER", "SUB-KEY-3-UPDATED", ((Map)bean.getMapProperty().get("mappedMap")).get("sub-key-3"));
+ }
+
/** Tests that separate instances can register separate instances */
public void testSeparateInstances() throws Exception {
BeanUtilsBean utilsOne = new BeanUtilsBean(