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