Author: oheger
Date: Sun Dec 22 20:36:50 2013
New Revision: 1553025

URL: http://svn.apache.org/r1553025
Log:
BeanHelper now provides a method for creating a WrapDynaBean.

For this purpose the managed BeanUtilsBean instance is needed.

Modified:
    
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/beanutils/BeanHelper.java
    
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/beanutils/TestBeanHelper.java

Modified: 
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/beanutils/BeanHelper.java
URL: 
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/beanutils/BeanHelper.java?rev=1553025&r1=1553024&r2=1553025&view=diff
==============================================================================
--- 
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/beanutils/BeanHelper.java
 (original)
+++ 
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/beanutils/BeanHelper.java
 Sun Dec 22 20:36:50 2013
@@ -29,8 +29,11 @@ import java.util.TreeSet;
 
 import org.apache.commons.beanutils.BeanUtilsBean;
 import org.apache.commons.beanutils.ConvertUtilsBean;
+import org.apache.commons.beanutils.DynaBean;
 import org.apache.commons.beanutils.FluentPropertyBeanIntrospector;
 import org.apache.commons.beanutils.PropertyUtilsBean;
+import org.apache.commons.beanutils.WrapDynaBean;
+import org.apache.commons.beanutils.WrapDynaClass;
 import org.apache.commons.configuration.ConfigurationRuntimeException;
 import org.apache.commons.lang3.ClassUtils;
 
@@ -273,6 +276,26 @@ public final class BeanHelper
     }
 
     /**
+     * Creates a {@code DynaBean} instance which wraps the passed in bean.
+     *
+     * @param bean the bean to be wrapped (must not be <b>null</b>)
+     * @return a {@code DynaBean} wrapping the passed in bean
+     * @throws IllegalArgumentException if the bean is <b>null</b>
+     * @since 2.0
+     */
+    public static DynaBean createWrapDynaBean(Object bean)
+    {
+        if (bean == null)
+        {
+            throw new IllegalArgumentException("Bean must not be null!");
+        }
+        WrapDynaClass dynaClass =
+                WrapDynaClass.createDynaClass(bean.getClass(),
+                        beanUtilsBean.getPropertyUtils());
+        return new WrapDynaBean(bean, dynaClass);
+    }
+
+    /**
      * Return the Class of the property if it can be determined.
      * @param bean The bean containing the property.
      * @param propName The name of the property.

Modified: 
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/beanutils/TestBeanHelper.java
URL: 
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/beanutils/TestBeanHelper.java?rev=1553025&r1=1553024&r2=1553025&view=diff
==============================================================================
--- 
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/beanutils/TestBeanHelper.java
 (original)
+++ 
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/beanutils/TestBeanHelper.java
 Sun Dec 22 20:36:50 2013
@@ -27,7 +27,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.beanutils.DynaBean;
 import org.apache.commons.configuration.ConfigurationRuntimeException;
+import org.apache.commons.configuration.PropertiesConfiguration;
 import org.easymock.EasyMock;
 import org.junit.Before;
 import org.junit.Test;
@@ -366,6 +368,28 @@ public class TestBeanHelper
     }
 
     /**
+     * Tests whether a wrapper DynaBean for a Java bean can be created.
+     */
+    @Test
+    public void testCreateWrapDynaBean()
+    {
+        PropertiesConfiguration config = new PropertiesConfiguration();
+        DynaBean bean = BeanHelper.createWrapDynaBean(config);
+        String value = "TestFooter";
+        bean.set("footer", value);
+        assertEquals("Property not set", value, config.getFooter());
+    }
+
+    /**
+     * Tries to create a wrapper DynaBean for a null bean.
+     */
+    @Test(expected = IllegalArgumentException.class)
+    public void testCreateWrapDynaBeanNull()
+    {
+        BeanHelper.createWrapDynaBean(null);
+    }
+
+    /**
      * Returns an initialized bean declaration.
      *
      * @return the bean declaration


Reply via email to