Release Notes NullPointerException in BeanUtilsBean .setProperty() NPE in LazyDynaList JDBCDynaClass throws class not found exception under java6 MappedPropertyDescriptor#reLoadClass() possible NPE / odd code; also swallows Throwable BeanUtilsBean.setProperty throws IllegalArgumentException if value is null BeanUtilsBean.setProperty does not handle some kind of nested properties MappedPropertyDescriptor throws an exception after method reference has been garbage collected copyProperties throws NullPointerException if an IllegalArgumentException is thrown due to a null value parameter for a primitive FloatLocaleConverter cannot parse 0 Type in BooleanConverter: "Cna't convert value" Avoid calling setAccessible() if not needed Method createDynaProperty of JDBCDynaClass should first look for column label instead of column name in ResultSetMetadata object.. change visibility of method "evaluateValue" belongs to the class BeanPropertyValueEqualsPredicate to "protected". Allow access to non public class's public methods from a public sub-classes. Circular Reference on WeakHashMap. BeanUtilsBean.setProperty() does not support nested map. Unnecessary Garbage Objects in Class PropertyUtilsBean. ConvertingWrapDynaBean hides cause exceptions. MethodUtils.getAccessibleMethod(Method method) could not find right public method. NPE in ArrayConverter when converting a non-quoted string with underscores to a string array. LocaleConvertUtilsBean.convert throws NPE on null Locale when debug logging is enabled. Fix WeakHashMap is not thread safe in MethodUtils using new FastWeakHashMap. PropertyUtils.getPropertyType fails for DynaBeans contained within a normal bean. Iterating by a Map' key/value pairs in BeanUtilsBean and PropertyUtilsBean. Add plugable property name expression Resolver. General Converter implementation improvements: New AbstractConverter which provides a basic structure for Converter implementations and new NumberConverter implementation. Add new generic ArrayConverter implementation. Add new generic DateTimeConverter implementation. Better implementation of SqlDateConverter. Modified SqlDateConverter, SqlTimeConverter and SqlTimestampConverter to accept java.util.Date and Calendar object instances. Added tests. New Facade converter implementation - hide non-Converter public APIs. Add "t/f" to BooleanConverter. Support Mapped property inside a mapped property. Support Indexed property inside a mapped property. Support Arrays with multiple dimension. Include bean class in the message of PropertyUtilsBean exceptions. Provide better error message for "argument type mismatch". Improved messages for unknown properties. MethodUtils.invoke for static methods. Log or throw exception in PropertyUtilsBean. Added mechanism to initialize the "cause" on an Exception using reflection for JDK 1.4+ (copied from Commons HttpClient). Add lazyDynaList. Provide a Map decorator for a DynaBean (enables DynaBean to be used with other teechnologies such as JSTL). Implement equals() and hashCode() methods for DynaProperty. BeanUtils's tests fail to compile under JDK 1.6 Lock in BeanUtilsBean.getInstance( Beanutils's describe() method cannot determine reader methods for anonymous class. Added warning about describe behaviour to the javadocs. BeanUtilsBean's setProperty() does not convert objects using custom converters properly. Fix javadoc - IllegalArgumentException in BeanUtils.copyProperties when property types don't match. Writing to a mapped property requires a setter for a map, but never uses it. BeanUtilsBean.getArrayProperty() does not use ConvertUtils. MappedPropertyDescriptor - replace copied code. MappedPropertyDescriptor: Add comments re: * use of static variable safe in shared classloader * memory leak possible on webapp undeploy. MappedPropertyDescriptor doesn't recognize boolean property accessor. Add test for MappedPropertyDescriptor with different types on get/set methods. LocaleBeanUtils setProperty does not work on nested property. Package scope implementation of a public interface for mapped property fails (fixed by changes to MappedPropertyDescriptor associated with BEANUTILS-6) PropertyUtils incosistency - can't use "dot" in mapped properties for setProperty or getPropertyDescriptor (fixed by the changes for BEANUTILS-259 Plugable Property Name Expression Resolver). Public methods overriden in anonymous or private subclasses are not recognized by PropertyUtils. PropertyUtilsBean's isReadable() / isWriteable() always return false for mapped properties. PropertyUtilsBean isReadable() and isWriteable() methods do not work correctly for WrapDynaBean. PropertyUtils.isReadable() and PropertyUtils.getProperty() not consistent. PropertyUtilsBean.copyProperties does not catch NoSuchMethodException PropertyUtilsBean.getIndexedProperty()'s javadoc should indicate IndexOutOufBoundsException can be thrown rather than just ArrayIndexOutOufBoundsException. Create new methods getPropertyOfMapBean and setPropertyOfMapBean that the existing setNestedProperty and getNestedProperty methods now call when they discover the bean they are accessing implements Map. This makes it much easier for users to subclass and customise this behaviour of PropertyUtilsBean, eg in order to restore pre-1.5 behaviour. This patch also causes an exception to be thrown when the propertyName passed to getPropertyOfMapBean or setPropertyOfMapBean has MAPPED_DELIM or INDEXED_DELIM chars in it. This never worked as expected before (the whole string was treated literally as the propertyName), so throwing an exception here should not break any existing code. It should be of help to future developers who make this mistake though... Ignore simple properties on java.util.Map objects - Map methods are always used on a Map object. Reverts BEANUTILS-144. See BEANUTILS-162 for discussion. Correct getPropertyDescriptor() and setNestedProperty() methods to throw a NestedNullException rather than just IllegalArgumentException (consistent with the getNestedProperty() method). Problems on indexed property with JDK 1.4. BooleanArrayConverter: Use new AbstractArrayConverter constructors and Convert strings to booleans by invoking a BooleanConverter rather than hard-wiring the conversion. BooleanConverter: Add facility for user to override the default set of true and false string definitions and provide ability to pass special NO_DEFAULT object as the "defaultValue" constructor parameter. AbstractArrayConverter: provide ability to pass special NO_DEFAULT object as the "defaultValue" constructor parameter. DecimalLocaleConverter and subClasses never throw a ConversionException. FloatLocaleConverter cannot parse negative values. Improve ClassConverter robustness. DateLocaleConverter does not always throw an Exception for invalid dates. Don't try parsing values that are already Dates/Numbers in Date/Number locale Converters. WrapDynaClass: Added comment re potential memory leak, and safety when using shared classloader Make WrapDynaBean Serializable. WrapDynaBeanTestCase failing with jikes/kaffe because of static List in TestBean. Misleading error message in ConvertingWrapDynaBean. LazyDynaBean: don't try and instantiate properties of type Object.class. LazyDynabean JavaDoc corrections. LazyDynaClass can create a DynaProperty with a "null" type. JDBCDynaClass "lowerCase" option causes problems in RowSetDynaClass and ResultSetIterator. RowSetDynaClass fails to copy ResultSet to DynaBean with Oracle 10g JDBC driver. Fix BeanComparator throws wrong exception and hides cause. Deprecate the public static defaultTransformers HashMap and make it unmodifiable. Merge Bean-Collections back into core BeanUtils and remove Bean-Collections sub-project. Fixi the build to include all the tests and change the build.properties.sample so it's easier to use for the default maven user (ie: it looks by default in the .maven repository) Improvements to maven build. Add Implementation-Vendor-Id entry to jar's manifest. Resolve compiler warnings: Unused imports, un-read local variables, field hiding, empty block, improperly used statics, uncessary semi colons, unnecessary casts. Replace use of static Log objects with instance or local variables. It isn't safe to use static Log objects in code that might be deployed via a shared classloader as they will bind to the Log object from the context classloader in use when the first use happens. BeanMap: Fix internal variable to not include non-existant write methods. - ported from Commons Collections. Change MethodUtils to make getMatchingAccessibleMethod() method selection more rational. See href="http://commons.apache.org/beanutils/commons-beanutils-1.7.0/RELEASE-NOTES.txt See http://commons.apache.org/beanutils/commons-beanutils-1.6.1/RELEASE-NOTES.txt See http://commons.apache.org/beanutils/commons-beanutils-1.6/RELEASE-NOTES.txt See http://commons.apache.org/beanutils/commons-beanutils-1.5/RELEASE-NOTES.txt See http://commons.apache.org/beanutils/commons-beanutils-1.4.1/RELEASE-NOTES.txt See http://commons.apache.org/beanutils/commons-beanutils-1.4/RELEASE-NOTES.txt See http://commons.apache.org/beanutils/commons-beanutils-1.3/RELEASE-NOTES.txt See http://commons.apache.org/beanutils/commons-beanutils-1.2/RELEASE-NOTES.txt Version 1.1 Initial Release