rdonkin 2002/11/21 14:21:01 Modified: beanutils/src/java/org/apache/commons/beanutils MappedPropertyDescriptor.java beanutils/src/test/org/apache/commons/beanutils BetaBean.java PropertyUtilsTestCase.java Log: Fixed bug #10167. Now PropertyUtils should be able to find mapped properties with setters but no getters. Revision Changes Path 1.12 +11 -6 jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/MappedPropertyDescriptor.java Index: MappedPropertyDescriptor.java =================================================================== RCS file: /home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/MappedPropertyDescriptor.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- MappedPropertyDescriptor.java 24 Mar 2002 09:59:30 -0000 1.11 +++ MappedPropertyDescriptor.java 21 Nov 2002 22:21:01 -0000 1.12 @@ -143,8 +143,8 @@ setName(propertyName); String base = capitalize(propertyName); - - // Look for mapped get and set methods + + // Look for mapped read method and matching write method try { mappedReadMethod = findMethod(beanClass, "get" + base, 1, stringClassArray); @@ -152,6 +152,11 @@ mappedWriteMethod = findMethod(beanClass, "set" + base, 2, params); } catch (IntrospectionException e) { ; + } + + // If there's no read method, then look for just a write method + if (mappedReadMethod == null) { + mappedWriteMethod = findMethod(beanClass, "set" + base, 2); } if ((mappedReadMethod == null) && (mappedWriteMethod == null)) { 1.2 +14 -0 jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/BetaBean.java Index: BetaBean.java =================================================================== RCS file: /home/cvs/jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/BetaBean.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- BetaBean.java 6 Mar 2002 20:21:24 -0000 1.1 +++ BetaBean.java 21 Nov 2002 22:21:01 -0000 1.2 @@ -59,6 +59,20 @@ public class BetaBean extends AbstractChild { + private String secret = "utah"; + + public String getSecret() { + return secret; + } + + public void setNoGetterProperty(String secret) { + this.secret = secret; + } + + public void setNoGetterMappedProperty(String secret, String key) { + this.secret = "MAP:" + secret; + } + public BetaBean(String name) { setName(name); } 1.28 +27 -4 jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/PropertyUtilsTestCase.java Index: PropertyUtilsTestCase.java =================================================================== RCS file: /home/cvs/jakarta-commons/beanutils/src/test/org/apache/commons/beanutils/PropertyUtilsTestCase.java,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- PropertyUtilsTestCase.java 29 Oct 2002 20:27:53 -0000 1.27 +++ PropertyUtilsTestCase.java 21 Nov 2002 22:21:01 -0000 1.28 @@ -3623,4 +3623,27 @@ "abcd", bean.getName()); } + + public void testSetNoGetter() throws Exception + { + BetaBean bean = new BetaBean("Cedric"); + + // test standard no getter + bean.setNoGetterProperty("Sigma"); + assertEquals("BetaBean test failed", "Sigma", bean.getSecret()); + + assertNotNull("Descriptor is null", PropertyUtils.getPropertyDescriptor(bean, "noGetterProperty")); + + BeanUtils.setProperty(bean, "noGetterProperty", "Omega"); + assertEquals("Cannot set no-getter property", "Omega", bean.getSecret()); + + // test mapped no getter descriptor + MappedPropertyDescriptor descriptor + = new MappedPropertyDescriptor("noGetterMappedProperty", BetaBean.class); + + assertNotNull("Map Descriptor is null", PropertyUtils.getPropertyDescriptor(bean, "noGetterMappedProperty")); + + PropertyUtils.setMappedProperty(bean, "noGetterMappedProperty", "Epsilon", "Epsilon"); + assertEquals("Cannot set mapped no-getter property", "MAP:Epsilon", bean.getSecret()); + } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>