$Id: RELEASE-NOTES.txt,v 1.11.2.3 2004/08/01 20:15:19 rdonkin Exp $

   Copyright 2001-2004 The Apache Software Foundation

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


                          Commons BeanUtils Package
                             Version 1.7.0
                               Release Notes

INTRODUCTION:
============

Beanutils 1.7.0 is a service release aimed at providing compatibility
with both the commons collections 2.x series of releases 
and the commons collections 3.x series of releases

CHANGES:
========

Upgraded License To Apache License 2.0
--------------------------------------
Beanutils is now released under the Apache License 2.0. 
See http://www.apache.org/licenses/LICENSE-2.0.

Beanification
-------------
Creation of objects to back the static utility classes. These object are 
per-context-classloader pseudo-singletons. Each web or enterprise application 
is therefore isolated from changes made to the state of others suing the
static facades. Greater flexibility of implementation is encourage since users
can subclass and then set their own implementations. Calls to the static facades 
will then be passed to that implementation.

Removal Of Commons Collections Dependency
-----------------------------------------
The commons collections dependency is in the process of being removed
from core beanutils. This will reduce the number of dependencies for
the core beanutils and also will allow beanutils to used with both
collection 2.x and collection 3.x releases.

Documentation Improvements
--------------------------
Many thanks to all those kind souls who've contributed documentation :)

 
ENHANCEMENTS:
=============

BeanAccessLanguageException & NestNullException
-----------------------------------------------
Added new subclasses of RuntimeException so that bean access language
exceptions can be trapped by users.

BeanComparator
--------------
Added no-argument constructor for use in bean-centric environments.

ConvertUtilsBean
----------------
Added a File converter and registered the File and URL converters by default


BUG REPORTS ADDRESSED:
=====================
   #14848 Converted localized versions of beanutils and convert utils to use 
          delegated singletons. Now instances with the functionality in these 
          classes can be created.  
          Added public constructors for the utility objects (BeanUtilsBean, 
          PropertyUtilsBean and ConvertUtilsBean). Add public accessor properties
          for the ConvertUtilsBean and PropertyUtilsBean instances used by a 
          BeanUtilsBean. This allows BeanUtilsBean objects to be created with 
          independent registered converters and independent caches.  Also added
          test cases. 
   #17663 Made BeanUtils.getArrayProperty conversions use ConvertUtils 
          (rather than just toString)
   #18918 This bug prevented converters from being correctly deregistered
   #19850 Now cloneBean will deal successfully with DynaBeans.

