craigmcc    2002/12/21 11:33:20

  Modified:    beanutils/src/java/org/apache/commons/beanutils
                        BeanUtils.java
               beanutils/src/test/org/apache/commons/beanutils
                        BeanUtilsTestCase.java DynaBeanUtilsTestCase.java
  Log:
  Enhance the behavior of BeanUtils.setProperty() such that, if the destination
  property is a String and there is a registered Converter for the value's
  class, the value's toString() method will be called, followed by conversion
  to the appropriate destination type.  Among other things, this makes it
  possible to pass in a primitive wrapper type (such as Integer) and have it
  converted to a String.
  
  PR: Bugzilla #15170
  Submitted by: Runako Godfrey <rg at onepercentsoftware.com>
  
  Revision  Changes    Path
  1.32      +6 -4      
jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/BeanUtils.java
  
  Index: BeanUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/BeanUtils.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- BeanUtils.java    16 Dec 2002 01:31:29 -0000      1.31
  +++ BeanUtils.java    21 Dec 2002 19:33:19 -0000      1.32
  @@ -905,6 +905,8 @@
               } else if (value instanceof String[]) {
                   newValue = ConvertUtils.convert(((String[]) value)[0],
                                                   type);
  +            } else if (ConvertUtils.lookup(value.getClass()) != null) {
  +                newValue = ConvertUtils.convert(value.toString(), type);
               } else {
                   newValue = value;
               }
  
  
  
  1.16      +14 -6     
jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java
  
  Index: BeanUtilsTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- BeanUtilsTestCase.java    9 Dec 2002 22:17:12 -0000       1.15
  +++ BeanUtilsTestCase.java    21 Dec 2002 19:33:20 -0000      1.16
  @@ -782,10 +782,18 @@
       }
   
   
  -    /** See http://issues.apache.org/bugzilla/show_bug.cgi?id=15170 */
  -    public void testSetPropertyOnPrimitavieWrappers() throws Exception {
  +    /**
  +     * Test converting to and from primitive wrapper types.
  +     */
  +    public void testSetPropertyOnPrimitiveWrappers() throws Exception {
  +
           BeanUtils.setProperty(bean,"intProperty", new Integer(1));
           assertEquals(1,bean.getIntProperty());
  +        BeanUtils.setProperty(bean,"stringProperty", new Integer(1));
  +        assertEquals(1, Integer.parseInt(bean.getStringProperty()));
  +
       }
  +
  +
   }
   
  
  
  
  1.13      +17 -4     
jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/DynaBeanUtilsTestCase.java
  
  Index: DynaBeanUtilsTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/DynaBeanUtilsTestCase.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- DynaBeanUtilsTestCase.java        21 Jul 2002 00:20:45 -0000      1.12
  +++ DynaBeanUtilsTestCase.java        21 Dec 2002 19:33:20 -0000      1.13
  @@ -832,6 +832,19 @@
       }
   
   
  +    /**
  +     * Test converting to and from primitive wrapper types.
  +     */
  +    public void testSetPropertyOnPrimitiveWrappers() throws Exception {
  +
  +        BeanUtils.setProperty(bean,"intProperty", new Integer(1));
  +        assertEquals(1,((Integer) bean.get("intProperty")).intValue());
  +        BeanUtils.setProperty(bean,"stringProperty", new Integer(1));
  +        assertEquals(1, Integer.parseInt((String) bean.get("stringProperty")));
  +
  +    }
  +
  +
       // ------------------------------------------------------ Protected Methods
   
   
  
  
  

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

Reply via email to