blob: 31495fd1c6d538c3d1d7088d60bc4e7071302144 [file] [log] [blame]
$Id: RELEASE-NOTES.txt,v 1.5 2002/04/29 16:36:32 craigmcc Exp $
Commons BeanUtils Package
Version 1.3
Release Notes
INTRODUCTION:
============
This document contains the release notes for this version of the Commons
BeanUtils package, and highlights changes since the previous version.
NEW FEATURES:
============
DynaBeans:
---------
DynaBeans are a very simple API that allows applications to construct "bean
like" classes dynamically at runtime, and then get and set property values
by name, rather than requiring compiled-in accesses to specific getter and
setter methods. The key interfaces are:
* org.apache.commons.beanutils.DynaBean - Property access methods for a
DynaBean. Simple, indexed, and mapped properties are supported.
* org.apache.commons.beanutils.DynaClass - The DynaBeans equivalent of
java.lang.Class, which maintains a list of the properties (names and types)
that are valid for DynaBeans that "implement" that DynaClass.
* org.apache.commons.beanutils.DynaProperty - The DynaBeans equivalent of
java.beans.PropertyDescriptor, which describes the name and Java type of
a specific property of a DynaBean.
The DynaBean and DynaClass APIs are interfaces, which can be implemented in a
large variety of ways. To get you started, two implementations are included
in the commons-beanutils package:
* BasicDynaBean / BasicDynaClass - Supports creation of a BasicDynaClass
that has a specific set of properties (passed into the constructor), plus a
factory to create DynaBean instances that support this set of properties.
* WrapDynaBean / WrapDynaClass - Each WrapDynaBean instance wraps a standard
JavaBean so that its properties can be accessed via the DynaBean interface
methods, consistent with the way any other DynaBean is accessed.
Logging:
-------
All components of the commons-beanutils package now use the commons-logging
package for logging, which means that the BeanUtils classes will transparently
adapt to whatever logging implementation your application is using. Set the
logging detail level to DEBUG or TRACE to receive debugging output. The
following log names are utilized (named after the calling class):
org.apache.commons.beanutils.BeanUtils
org.apache.commons.beanutils.ConvertUtils
org.apache.commons.beanutils.MethodUtils
org.apache.commons.beanutils.PropertyUtils
BeanUtils Enhancements:
----------------------
The populate() method now has full support for setting simple, indexed,
mapped, and nested properties. This support works transparently on both
standard JavaBeans and DynaBean implementations.
ConvertUtils Enhancements:
-------------------------
You can now register custom implementations of the new Converter
interface, so that your application can define its own String->Object
conversion methodology. A standard set of converters is supplied (in the
org.apache.commons.beanutils.converters package) and registered for all of
the following data types:
* java.lang.Boolean (and boolean primitives)
* java.lang.Byte (and byte primitives)
* java.lang.Character (and char primitives)
* java.lang.Double (and double primitives)
* java.lang.Float (and float primitives)
* java.lang.Integer (and int primitives)
* java.lang.Long (and long primitives)
* java.lang.Short (and short primitives)
* java.lang.String - identity conversion
* java.math.BigDecimal
* java.math.BigInteger
* java.sql.Date
* java.sql.Time
* java.sql.Timestamp
MethodUtils Enhancements:
------------------------
An additional mechanism for matching the actual method to be called searches
for parameter lists that are compatible with, rather than exactly matching,
the types specified in the call. This more closely matches the method matching
semantics that the Java compiler supports when determining which method should
be called.
PropertyUtils Enhancements:
--------------------------
Elements of properties whose underlying data type is a java.util.List may now
be retrieved and set via the getIndexedProperty() and setIndexedProperty()
methods, even though this usage was not defined in the JavaBeans Specification.
All of the property getter and setter methods transparently support operations
on DynaBeans, as well as standard JavaBeans. However, the methods to retrieve
PropertyDescriptors (and related information) about DynaBeans have not been
implemented.
BUG REPORTS ADDRESSED:
=====================
4895 Populate method doesn't work for an indexed setter for arrays
5407 NullPointerException in BeanUtils.java when submission of form
with <select> results in "...&bla=&..."
5639 java.util.List to be permitted for indexed properties
6125 Populate method has mistaken the judgement which uses indexed
property
6465 Wrong method BeanUtils.populate(), so that in Struts indexed
multiselects not work
7309 Mapped properties should work against a collection object as well as
method definition only
7333 Missing dependency on FastHashMap is masked
7521 BeanUtils.populate() does not handle nested properties of DynaBeans
7740 MethodUtils method compare bug
7784 ConvertUtils changes long standing default conversions from null
to zero
7929 PropertyUtils.getProperty fails on a class named Component
8364 java.util.List support for getIndexedProperty()
8627 Add "1/0" to BooleanConverter