Author: niallp Date: Sun Jul 1 04:04:26 2007 New Revision: 552279 URL: http://svn.apache.org/viewvc?view=rev&rev=552279 Log: BEANUTILS-285 and BEANUTILS-258 - revert incompatible changes to prevent possible compatibility problems
Modified: jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/ConvertUtilsBean.java jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaBeanUtilsTestCase.java Modified: jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java?view=diff&rev=552279&r1=552278&r2=552279 ============================================================================== --- jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java (original) +++ jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/BeanUtilsBean.java Sun Jul 1 04:04:26 2007 @@ -398,7 +398,11 @@ // Convert the specified value to the required type and store it if (index >= 0) { // Destination must be indexed - value = getConvertUtils().convert(value, type.getComponentType()); + Converter converter = getConvertUtils().lookup(type.getComponentType()); + if (converter != null) { + log.trace(" USING CONVERTER " + converter); + value = converter.convert(type.getComponentType(), value); + } try { getPropertyUtils().setIndexedProperty(target, propName, index, value); @@ -418,7 +422,11 @@ (e, "Cannot set " + propName); } } else { // Destination must be simple - value = getConvertUtils().convert(value, type); + Converter converter = getConvertUtils().lookup(type); + if (converter != null) { + log.trace(" USING CONVERTER " + converter); + value = converter.convert(type, value); + } try { getPropertyUtils().setSimpleProperty(target, propName, value); } catch (NoSuchMethodException e) { @@ -957,25 +965,17 @@ // Convert the specified value to the required type Object newValue = null; - Class sourceType = value == null ? null : value.getClass(); - Class targetType = (type.isArray() && (index >= 0) ? type.getComponentType() : type); - Converter converter = getConvertUtils().lookup(sourceType, targetType); - if (converter != null) { - newValue = converter.convert(targetType, value); - newValue = (targetType == String.class && newValue != null ? newValue.toString() : newValue); - } else if (type.isArray() && (index < 0)) { // Scalar value into array + if (type.isArray() && (index < 0)) { // Scalar value into array if (value == null) { String values[] = new String[1]; values[0] = (String) value; - newValue = getConvertUtils().convert(values, type); + newValue = getConvertUtils().convert((String[]) values, type); } else if (value instanceof String) { - String values[] = new String[1]; - values[0] = (String) value; - newValue = getConvertUtils().convert(values, type); + newValue = getConvertUtils().convert(value, type); } else if (value instanceof String[]) { newValue = getConvertUtils().convert((String[]) value, type); } else { - newValue = value; + newValue = getConvertUtils().convert(value, type); } } else if (type.isArray()) { // Indexed value into array if (value instanceof String || value == null) { @@ -985,7 +985,7 @@ newValue = getConvertUtils().convert(((String[]) value)[0], type.getComponentType()); } else { - newValue = value; + newValue = getConvertUtils().convert(value, type.getComponentType()); } } else { // Value into scalar if ((value instanceof String) || (value == null)) { Modified: jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/ConvertUtilsBean.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/ConvertUtilsBean.java?view=diff&rev=552279&r1=552278&r2=552279 ============================================================================== --- jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/ConvertUtilsBean.java (original) +++ jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/ConvertUtilsBean.java Sun Jul 1 04:04:26 2007 @@ -431,10 +431,12 @@ if (value == null) { return ((String) null); } else { - return ((String)convert(value, String.class)); + Converter converter = lookup(String.class); + return ((String) converter.convert(String.class, value)); } } else { - return ((String)convert(value, String.class)); + Converter converter = lookup(String.class); + return ((String) converter.convert(String.class, value)); } } @@ -485,10 +487,6 @@ Class type = clazz; if (clazz.isArray()) { - Converter converter = lookup(clazz); - if (converter != null) { - return converter.convert(clazz, values); - } type = clazz.getComponentType(); } if (log.isDebugEnabled()) { Modified: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java?view=diff&rev=552279&r1=552278&r2=552279 ============================================================================== --- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java (original) +++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/BeanUtilsTestCase.java Sun Jul 1 04:04:26 2007 @@ -795,7 +795,7 @@ assertTrue("stringArray of correct type", newValue instanceof String[]); assertEquals("stringArray length", - 0, ((String[]) newValue).length); + 1, ((String[]) newValue).length); PropertyUtils.setProperty(bean, "stringArray", oldValue); // Indexed value into array Modified: jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaBeanUtilsTestCase.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaBeanUtilsTestCase.java?view=diff&rev=552279&r1=552278&r2=552279 ============================================================================== --- jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaBeanUtilsTestCase.java (original) +++ jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/DynaBeanUtilsTestCase.java Sun Jul 1 04:04:26 2007 @@ -907,7 +907,7 @@ assertTrue("stringArray of correct type", newValue instanceof String[]); assertEquals("stringArray length", - 0, ((String[]) newValue).length); + 1, ((String[]) newValue).length); PropertyUtils.setProperty(bean, "stringArray", oldValue); // Indexed value into array --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]