You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sk...@apache.org on 2005/05/29 06:10:05 UTC

svn commit: r178925 - /jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/PropertyUtilsTestCase.java

Author: skitching
Date: Sat May 28 21:10:04 2005
New Revision: 178925

URL: http://svn.apache.org/viewcvs?rev=178925&view=rev
Log:
Test case to show bug for setNestedProperty with pattern "a(b)" when a is a Map.

Modified:
    jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/PropertyUtilsTestCase.java

Modified: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/PropertyUtilsTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/PropertyUtilsTestCase.java?rev=178925&r1=178924&r2=178925&view=diff
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/PropertyUtilsTestCase.java (original)
+++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/PropertyUtilsTestCase.java Sat May 28 21:10:04 2005
@@ -3646,6 +3646,49 @@
         assertEquals("Cannot set mapped no-getter property", "MAP:Epsilon", bean.getSecret());
     }
     
+    /**
+     * There was a bug in setNestedProperty/getNestedProperty when the
+     * target bean is a map. This test case ensures that the problem is
+     * fixed.
+     */
+    public void testBeanImplementingMap() throws Exception {
+        HashMap map = new HashMap();
+        HashMap submap = new HashMap();
+        BetaBean betaBean1 = new BetaBean("test1");
+        BetaBean betaBean2 = new BetaBean("test2");
+        
+        // map.put("submap", submap)
+        PropertyUtils.setNestedProperty(map, "submap", submap);
+        
+        // map.get("submap").put("beta1", betaBean1)
+        PropertyUtils.setNestedProperty(map, "submap.beta1", betaBean1);
+        assertEquals("Unexpected keys in map", "submap", keysToString(map));
+        assertEquals("Unexpected keys in submap", "beta1", keysToString(submap));
+
+        // map.get("submap").put("beta2", betaBean2)
+        PropertyUtils.setNestedProperty(map, "submap(beta2)", betaBean2);
+        assertEquals("Unexpected keys in map", "submap", keysToString(map));
+        assertEquals("Unexpected keys in submap", "beta1, beta2", keysToString(submap));
+    }
+
+    /**
+     * Returns a single string containing all the keys in the map,
+     * sorted in alphabetical order and separated by ", ".
+     * <p>
+     * If there are no keys, an empty string is returned.
+     */
+    private String keysToString(Map map) {
+        Object[] mapKeys = map.keySet().toArray();
+        java.util.Arrays.sort(mapKeys);
+        StringBuffer buf = new StringBuffer();
+        for(int i=0; i<mapKeys.length; ++i) {
+            if (i != 0)
+                buf.append(", ");
+            buf.append(mapKeys[i]);
+        }
+        return buf.toString();
+    }
+
     /** 
      * This tests to see that classes that implement Map can have 
      * their standard properties set.



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org