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