You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ni...@apache.org on 2005/11/11 15:09:51 UTC

svn commit: r332559 - in /jakarta/commons/proper/beanutils/trunk/src: java/org/apache/commons/beanutils/BeanUtilsBean.java test/org/apache/commons/beanutils/MappedPropertyTestBean.java test/org/apache/commons/beanutils/MappedPropertyTestCase.java

Author: niallp
Date: Fri Nov 11 06:09:42 2005
New Revision: 332559

URL: http://svn.apache.org/viewcvs?rev=332559&view=rev
Log:
Fix Bug 27965 - Writing to a mapped property requires a setter for a map, but never uses it, reported by Dmitry Platonoff

Modified:
    jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java
    jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/MappedPropertyTestBean.java
    jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/MappedPropertyTestCase.java

Modified: jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java?rev=332559&r1=332558&r2=332559&view=diff
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java (original)
+++ jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java Fri Nov 11 06:09:42 2005
@@ -984,6 +984,14 @@
                 }
                 type = ((IndexedPropertyDescriptor) descriptor).
                     getIndexedPropertyType();
+            } else if (key != null) {
+                if (descriptor.getReadMethod() == null) {
+                    if (log.isDebugEnabled()) {
+                        log.debug("Skipping read-only property");
+                    }
+                    return; // Read-only, skip this property setter
+                }
+                type = (value == null) ? Object.class : value.getClass();
             } else {
                 if (descriptor.getWriteMethod() == null) {
                     if (log.isDebugEnabled()) {

Modified: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/MappedPropertyTestBean.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/MappedPropertyTestBean.java?rev=332559&r1=332558&r2=332559&view=diff
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/MappedPropertyTestBean.java (original)
+++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/MappedPropertyTestBean.java Fri Nov 11 06:09:42 2005
@@ -30,6 +30,8 @@
 public class MappedPropertyTestBean {
 
     private Map map = new HashMap();
+    private Map myMap = new HashMap();
+
 
     // -------------------------------------------------------------- Properties
 
@@ -75,6 +77,9 @@
 
     public String getInvalidGetter(String key, String other) {
         return (String) map.get(key);
+    }
+    public Map getMyMap() {
+        return myMap;
     }
 
     public void setInvalidGetter(String key, String value) {	

Modified: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/MappedPropertyTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/MappedPropertyTestCase.java?rev=332559&r1=332558&r2=332559&view=diff
==============================================================================
--- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/MappedPropertyTestCase.java (original)
+++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/MappedPropertyTestCase.java Fri Nov 11 06:09:42 2005
@@ -204,6 +204,23 @@
         }
     }
 
+    /**
+     * Test Mpa getter
+     */
+    public void testMapGetter() {
+        MappedPropertyTestBean bean = new MappedPropertyTestBean();
+        Class clazz = MappedPropertyTestBean.class;
+        String property = "myMap";
+        try {
+            String testValue = "test value";
+            String testKey   = "testKey";
+            BeanUtils.setProperty(bean, "myMap("+testKey+")", "test value");
+            assertEquals("Map getter", testValue, bean.getMyMap().get(testKey));
+        } catch (Exception ex) {
+            fail("Test set mapped property failed: " + ex);
+        }
+    }
+
 
     /**
      * Test property with any two args



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