You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2012/12/16 17:14:45 UTC

svn commit: r1422610 - in /commons/proper/configuration/trunk/src: main/java/org/apache/commons/configuration/builder/combined/MultiWrapDynaBean.java test/java/org/apache/commons/configuration/builder/combined/TestMultiWrapDynaBean.java

Author: oheger
Date: Sun Dec 16 16:14:45 2012
New Revision: 1422610

URL: http://svn.apache.org/viewvc?rev=1422610&view=rev
Log:
Made sure that there is an order when setting properties of a MultiWrapDynaBean.

Modified:
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/MultiWrapDynaBean.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiWrapDynaBean.java

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/MultiWrapDynaBean.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/MultiWrapDynaBean.java?rev=1422610&r1=1422609&r2=1422610&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/MultiWrapDynaBean.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/combined/MultiWrapDynaBean.java Sun Dec 16 16:14:45 2012
@@ -70,7 +70,11 @@ class MultiWrapDynaBean implements DynaB
             DynaClass beanClass = dynaBean.getDynaClass();
             for (DynaProperty prop : beanClass.getDynaProperties())
             {
-                propsToBeans.put(prop.getName(), dynaBean);
+                // ensure an order of properties
+                if (!propsToBeans.containsKey(prop.getName()))
+                {
+                    propsToBeans.put(prop.getName(), dynaBean);
+                }
             }
             beanClasses.add(beanClass);
         }

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiWrapDynaBean.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiWrapDynaBean.java?rev=1422610&r1=1422609&r2=1422610&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiWrapDynaBean.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/combined/TestMultiWrapDynaBean.java Sun Dec 16 16:14:45 2012
@@ -29,6 +29,7 @@ import org.apache.commons.beanutils.Dyna
 import org.apache.commons.beanutils.LazyDynaBean;
 import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.commons.configuration.builder.BasicBuilderParameters;
+import org.apache.commons.configuration.builder.FileBasedBuilderParametersImpl;
 import org.junit.Test;
 
 /**
@@ -208,6 +209,33 @@ public class TestMultiWrapDynaBean
     }
 
     /**
+     * Tests that the order of properties is relevant when adding beans to a
+     * MultiWrapDynaBean.
+     */
+    @Test
+    public void testOrderOfProperties() throws Exception
+    {
+        Collection<Object> beans = new ArrayList<Object>();
+        params = new BasicBuilderParameters();
+        beans.add(params);
+        beans.add(new FileBasedBuilderParametersImpl());
+        for (int i = 0; i < 32; i++)
+        {
+            beans.add(new BasicBuilderParameters());
+        }
+        MultiWrapDynaBean bean = new MultiWrapDynaBean(beans);
+        PropertyUtils
+                .setProperty(bean, "throwExceptionOnMissing", Boolean.TRUE);
+        PropertyUtils
+                .setProperty(bean, "listDelimiter", Character.valueOf('+'));
+        Map<String, Object> map = params.getParameters();
+        assertEquals("Exception flag not set", Boolean.TRUE,
+                map.get("throwExceptionOnMissing"));
+        assertEquals("List delimiter not set", Character.valueOf('+'),
+                map.get("listDelimiter"));
+    }
+
+    /**
      * A simple test bean class used as wrapped bean.
      */
     public static class WrappedBeanTestImpl