You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rd...@apache.org on 2004/01/08 23:59:07 UTC
cvs commit: jakarta-commons/beanutils/src/test/org/apache/commons/beanutils AlphaBean.java WrapDynaBeanTestCase.java
rdonkin 2004/01/08 14:59:07
Modified: beanutils/src/java/org/apache/commons/beanutils
WrapDynaClass.java
beanutils/src/test/org/apache/commons/beanutils
AlphaBean.java WrapDynaBeanTestCase.java
Log:
Added newInstance implementation (and test case). This allow better integration with DynaBean frameworks. Submitted by Niall Pemberton.
Revision Changes Path
1.7 +31 -12 jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/WrapDynaClass.java
Index: WrapDynaClass.java
===================================================================
RCS file: /home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/WrapDynaClass.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- WrapDynaClass.java 9 Oct 2003 20:43:15 -0000 1.6
+++ WrapDynaClass.java 8 Jan 2004 22:59:07 -0000 1.7
@@ -7,7 +7,7 @@
*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2001-2003 The Apache Software Foundation. All rights
+ * Copyright (c) 2001-2004 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -72,6 +72,17 @@
* <p>Implementation of <code>DynaClass</code> for DynaBeans that wrap
* standard JavaBean instances.</p>
*
+ * <p>
+ * It is suggested that this class should not usually need to be used directly
+ * to create new <code>WrapDynaBean</code> instances.
+ * It's usually better to call the <code>WrapDynaBean</code> constructor directly.
+ * For example:</p>
+ * <code><pre>
+ * Object javaBean = ...;
+ * DynaBean wrapper = new WrapDynaBean(javaBean);
+ * </pre></code>
+ * <p>
+ *
* @author Craig McClanahan
* @version $Revision$ $Date$
*/
@@ -198,14 +209,22 @@
/**
- * <p>Instantiate and return a new DynaBean instance, associated
- * with this DynaClass. <strong>NOTE</strong> - This operation is not
- * supported, and throws an exception. You should create new
- * <code>WrapDynaBean</code> instances by calling its constructor:</p>
- * <pre>
+ * <p>Instantiates a new standard JavaBean instance associated with
+ * this DynaClass and return it wrapped in a new WrapDynaBean
+ * instance. <strong>NOTE</strong> the JavaBean should have a
+ * no argument constructor.</p>
+ *
+ * <strong>NOTE</strong> - Most common use cases should not need to use
+ * this method. It is usually better to create new
+ * <code>WrapDynaBean</code> instances by calling its constructor.
+ * For example:</p>
+ * <code><pre>
* Object javaBean = ...;
* DynaBean wrapper = new WrapDynaBean(javaBean);
- * </pre>
+ * </pre></code>
+ * <p>
+ * (This method is needed for some kinds of <code>DynaBean</code> framework.)
+ * </p>
*
* @exception IllegalAccessException if the Class or the appropriate
* constructor is not accessible
@@ -216,7 +235,7 @@
public DynaBean newInstance()
throws IllegalAccessException, InstantiationException {
- throw new UnsupportedOperationException("newInstance() not supported");
+ return new WrapDynaBean(beanClass.newInstance());
}
1.6 +6 -4 jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/AlphaBean.java
Index: AlphaBean.java
===================================================================
RCS file: /home/cvs/jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/AlphaBean.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- AlphaBean.java 9 Oct 2003 20:40:07 -0000 1.5
+++ AlphaBean.java 8 Jan 2004 22:59:07 -0000 1.6
@@ -7,7 +7,7 @@
*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2001-2003 The Apache Software Foundation. All rights
+ * Copyright (c) 2001-2004 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -64,6 +64,8 @@
public class AlphaBean extends AbstractParent implements Child {
private String name;
+
+ public AlphaBean() {}
public AlphaBean(String name) {
setName(name);
1.8 +13 -4 jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/WrapDynaBeanTestCase.java
Index: WrapDynaBeanTestCase.java
===================================================================
RCS file: /home/cvs/jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/WrapDynaBeanTestCase.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- WrapDynaBeanTestCase.java 8 Jan 2004 22:38:11 -0000 1.7
+++ WrapDynaBeanTestCase.java 8 Jan 2004 22:59:07 -0000 1.8
@@ -215,4 +215,13 @@
assertTrue("Same Object", wrappedAlphaBean == alphaBean);
}
+ /** Tests the newInstance implementation for WrapDynaClass */
+ public void testNewInstance() throws Exception {
+ WrapDynaClass dynaClass = WrapDynaClass.createDynaClass(AlphaBean.class);
+ Object createdInstance = dynaClass.newInstance();
+ assertTrue("Object type is WrapDynaBean", createdInstance instanceof WrapDynaBean);
+ WrapDynaBean dynaBean = (WrapDynaBean) createdInstance;
+ assertTrue("Object type is AlphaBean", dynaBean.getInstance() instanceof AlphaBean);
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org