craigmcc    2002/11/23 15:47:07

  Modified:    beanutils/src/java/org/apache/commons/beanutils
                        PropertyUtils.java
  Log:
  Correctly copy properties from a standard JavaBean to a DynaBean.
  
  PR: Bugzilla #14667
  Submitted by: Brian Topping <topping at digidemic.com>
  
  Revision  Changes    Path
  1.33      +16 -14    
jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/PropertyUtils.java
  
  Index: PropertyUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/PropertyUtils.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- PropertyUtils.java        22 Oct 2002 06:48:32 -0000      1.32
  +++ PropertyUtils.java        23 Nov 2002 23:47:07 -0000      1.33
  @@ -277,9 +277,13 @@
               while (names.hasNext()) {
                   String name = (String) names.next();
                   Object value = ((Map) orig).get(name);
  -                setSimpleProperty(dest, name, value);
  +                try {
  +                    setSimpleProperty(dest, name, value);
  +                } catch (NoSuchMethodException e) {
  +                    ; // Skip non-matching property
  +                }
               }
  -        } else {
  +        } else /* orig is a standard JavaBean */ {
               PropertyDescriptor origDescriptors[] =
                   getPropertyDescriptors(orig);
               for (int i = 0; i < origDescriptors.length; i++) {
  @@ -294,13 +298,11 @@
                       continue; // This is a write-only property
                   }
                   String name = origDescriptors[i].getName();
  -                if (getPropertyDescriptor(dest, name) != null) {
  -                    Object value = getSimpleProperty(orig, name);
  -                    try {
  -                        setSimpleProperty(dest, name, value);
  -                    } catch (NoSuchMethodException e) {
  -                        ;   // Skip non-matching property
  -                    }
  +                Object value = getSimpleProperty(orig, name);
  +                try {
  +                    setSimpleProperty(dest, name, value);
  +                } catch (NoSuchMethodException e) {
  +                    ; // Skip non-matching property
                   }
               }
           }
  @@ -969,7 +971,7 @@
        * same name resolution rules used by <code>getPropertyDescriptor()</code>,
        * so if the last element of a name reference is indexed, the property
        * editor for the underlying property's class is returned.</p>
  -     * 
  +     *
        * <p>Note that <code>null</code> will be returned if there is no property,
        * or if there is no registered property editor class.  Because this
        * return value is ambiguous, you should determine the existence of the
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to