<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You 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.
-->

<!-- This file is used by the maven-changes-plugin to generate the release notes. Useful ways of finding items to add to
  this file are: 1. Add items when you fix a bug or add a feature (this makes the release process easy :-). 2. Do a Jira search
  for tickets closed since the previous release. 3. Use the report generated by the maven-changelog-plugin to see all SVN commits.
  Set the project.properties' maven.changelog.range property to the number of days since the last release. The <action> type
  attribute can be add,update,fix,remove. -->
<document xmlns="http://maven.apache.org/changes/1.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Apache Commons BeanUtils Release Notes</title>
  </properties>
  <body>

    <release version="2.0.0" date="2018-MM-DD" description="Update to Java 8.">
      <action issue="BEANUTILS-346" dev="melloware" type="update" due-to="Melloware">
        New converter for Enum.
      </action>
      <action issue="BEANUTILS-402" dev="melloware" type="update" due-to="Melloware">
        Double-Checked Locking anti pattern in WeakFastHashMap.
      </action>
      <action issue="BEANUTILS-504" dev="ggregory" type="update" due-to="Gary Gregory">
        Update from Java 6 to 7.
      </action>
      <action issue="BEANUTILS-515" dev="ggregory" type="update" due-to="Gary Gregory">
        Update from Java 7 to 8.
      </action>
      <action issue="BEANUTILS-503" dev="ggregory" type="update" due-to="Gary Gregory">
        Change packaging from org.apache.commons.beanutils to org.apache.commons.beanutils2.
      </action>
      <action issue="BEANUTILS-505" dev="ggregory" type="update" due-to="Gary Gregory">
        Add missing serialVersionUID to Serializable classes.
      </action>
      <action issue="BEANUTILS-512" dev="ggregory" type="update" due-to="Gary Gregory">
        Add Automatic-Module-Name entry to MANIFEST.MF.
      </action>
      <action issue="BEANUTILS-514" dev="ggregory" type="update" due-to="Gary Gregory">
        Remove deprecated code for 2.0.0.
      </action>
      <action issue="BEANUTILS-509" dev="ggregory" type="update" due-to="sunil, Akshay Gehi">
        WeakHashmap enters into infinite loop in WrapDynaClass.java.
      </action>
      <action issue="BEANUTILS-520" dev="ggregory" type="update" due-to="Melloware">
        BeanUtils2 mitigate CVE-2014-0114.
      </action>
      <action issue="BEANUTILS-522" dev="ggregory" type="update" due-to="Gary Gregory">
        Update Apache Commons Collections from 4.3 to 4.4.
      </action>
      <action issue="BEANUTILS-527" dev="ggregory" type="update" due-to="Melloware, Matt Sicker, Gary Gregory">
        Convert Collections4 to java.util.function. #8.
      </action>
      <action issue="BEANUTILS-527" dev="ggregory" type="remove" due-to="Melloware, Matt Sicker, Gary Gregory">
        Removed Commons Collections dependency. #8.
      </action>
      <action issue="BEANUTILS-528" dev="ggregory" type="update" due-to="Melloware, Matt Sicker, Gary Gregory">
        New converters for UUID, URI, and Path #10.
      </action>
      <action issue="BEANUTILS-530" dev="ggregory" type="add" due-to="Melloware, Matt Sicker, Gary Gregory">
        New converters for Java 8 Time classes #13.
      </action>
      <action issue="BEANUTILS-529" dev="ggregory" type="update" due-to="Gary Gregory">
        Log at the debug level instead of info.
      </action>
    </release>

    <release version="1.9.4" date="2019-08-13" description="The primary reason for this release is a bugfix for
CVE-2014-0114. More specifically, our goal with BEANUTILS-520
is to set the default behaviour of the BeanUtilsBean
to not allow class level access. The goal in doing this now
is to bring 1.9.X into alignment with the same behaviour
of the 2.X version line in regards to security.
If one would like to opt out of the default behaviour, one could follow the
example set out in the test class available in
src/test/java/org/apache/commons/beanutils/bugs/Jira520TestCase.java.">
      <action issue="BEANUTILS-520" dev="chtompki" type="fix" due-to="Melloware">
        BeanUtils mitigation of CVE-2014-0114. (CVE-2019-10086 for commons-beanutils).
      </action>
    </release>

    <release version="1.9.3" date="2016-09-21" description="Bug fix release, now builds with Java 8">
      <action issue="BEANUTILS-433" dev="ggregory" type="update" due-to="Benedikt Ritter, Gary Gregory">
        Update dependency from JUnit 3.8.1 to 4.12.
      </action>
      <action issue="BEANUTILS-465" dev="oheger" type="fix" due-to="Daniel Atallah">
        Indexed List Setters no longer work
      </action>
      <action issue="BEANUTILS-469" dev="ggregory" type="update" due-to="Gary Gregory">
        Update commons-logging from 1.1.1 to 1.2.
      </action>
      <action issue="BEANUTILS-470" dev="oheger" type="fix" due-to="Tommy Tynj&#228;">
        Precision lost when converting BigDecimal
      </action>
      <action issue="BEANUTILS-474" dev="ggregory" type="update" due-to="Michael Grove">
        FluentPropertyBeanIntrospector does not use the same naming algorithm as DefaultBeanIntrospector.
      </action>
      <action issue="BEANUTILS-477" dev="oheger" type="fix">
        Changed log level of warnings from FluentPropertyBeanIntrospector; exceptions are no longer logged with level WARN.
      </action>
      <action issue="BEANUTILS-482" dev="ggregory" type="update" due-to="Gary Gregory">
        Update commons-collections from 3.2.1 to 3.2.2. (CVE-2015-4852)
      </action>
      <action issue="BEANUTILS-490" dev="ggregory" type="update" due-to="Gary Gregory">
        Update Java requirement from Java 5 to 6.
      </action>
      <action issue="BEANUTILS-492" dev="stain" type="update" due-to="Stian Soiland-Reyes">
        IndexedPropertyDescriptor not supported for List in Java 8
      </action>
      <action issue="BEANUTILS-493" dev="stain" type="fix" due-to="Bernhard Seebass">
        Exception when setting indexed properties: "Default conversion to ArrayList failed"
      </action>
      <action issue="BEANUTILS-495" dev="stain" type="update" due-to="Stian Soiland-Reyes">
        DateConverterTestBase fails on M/d/yy in Java 9
      </action>
      <action issue="BEANUTILS-496" dev="stain" type="update" due-to="Stian Soiland-Reyes">
        testGetDescriptorInvalidBoolean fails on Java 9
      </action>
    </release>

    <release version="1.9.2" date="2014-05-29"
      description="Added a new BeanIntrospector for addressing a potential class loader vulnerability">
      <action dev="oheger" type="add" issue="BEANUTILS-463">
        Class loader vulnerability in DefaultResolver ()
      </action>
      <action dev="oheger" type="fix" issue="BEANUTILS-458" due-to="Manuel Dominguez Sarmiento ">
        BaseLocaleConverter.checkConversionResult() fails with
        ConversionException when result is null when it should not
      </action>
    </release>

    <release version="1.9.1" date="2014-01-11" description="Bug fix for 1.9.0">
      <action dev="oheger" type="fix" issue="BEANUTILS-456">
        Write methods for PropertyDescriptors created during custom introspection are lost
      </action>
    </release>

    <release version="1.9.0" date="2013-12-11" description="Upgrade to Java 5 including generics where possible">
      <action dev="oheger" type="add" issue="BEANUTILS-455">
        WrapDynaBeans always use the default PropertyUtilsBean instance
      </action>
      <action dev="oheger" type="update" issue="BEANUTILS-454">
        BeanUtilsBean.copyProperties() throws conversion exception for null Date
      </action>
      <action dev="oheger" type="update" issue="BEANUTILS-452">
        Add generics
      </action>
      <action dev="oheger" type="update" issue="BEANUTILS-449">
        LocaleConverters do not take the target type into account
      </action>
      <action dev="oheger" type="update" issue="BEANUTILS-448">
        LocaleConverters do not check their default value
      </action>
      <action dev="oheger" type="update" issue="BEANUTILS-447">
        LazyDynaList.toArray() is not conform to the contract defined by the
        Collection interface
      </action>
      <action dev="oheger" type="update" issue="BEANUTILS-446">
        Some of the converters ignore the passed in target type
      </action>
      <action dev="oheger" type="update" issue="BEANUTILS-445">
        Converters can return an invalid result object if a default value is set
      </action>
      <action dev="oheger" type="update" issue="BEANUTILS-441" due-to="Samir Kerroumi">
        Replace UnmodifiableSet.decorate with Collections.unModifiableSet
      </action>
      <action dev="britter" type="update" issue="BEANUTILS-436">
        Replace package.html with package-info.java
      </action>
      <action dev="britter" type="update" issue="BEANUTILS-438">
        Add @Deprecated and @Override Annotations
      </action>
      <action dev="britter" type="update" issue="BEANUTILS-437">
        Replace Date and Revision SVN keywords with Id
      </action>
      <action dev="britter" type="update" issue="BEANUTILS-431">
        Remove @author tags and move missing authors to pom.xml
      </action>
      <action dev="britter" type="update" issue="BEANUTILS-432">
        Switch to Java 1.5
      </action>
      <action dev="oheger" type="add" issue="BEANUTILS-428">
        Provide a BeanIntrospector implementation which supports properties in a fluent API
      </action>
      <action dev="oheger" type="add" issue="BEANUTILS-425">
        Support customization of introspection mechanism
      </action>
      <action dev="britter" type="fix" issue="BEANUTILS-411" due-to="Marcus Zander">
        BeanUtilsBean.setProperty throws IllegalArgumentException if getter of nested property returns null
      </action>
      <action dev="britter" type="update" issue="BEANUTILS-429">
        Delete trailing white spaces and white spaces on empty lines from all files
      </action>
      <action dev="britter" type="update" issue="BEANUTILS-427">
        Configure Checkstyle to check for trailing white spaces and white spaces on empty lines
      </action>
      <action dev="britter" type="fix" issue="BEANUTILS-408">
        MethodUtils.invokeMethod() throws NullPointerException when args==null
      </action>
      <action dev="britter" type="fix" issue="BEANUTILS-426">
        ConstructorUtils.invokeConstructor(Class klass, Object arg) throws
        NullPointerException when arg==null
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-380" due-to="Brendan Nolan">
        BeanMap methods should initialize the root cause of exceptions that are thrown
        when running on JDK 1.4+
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-379">
        Remove copied Collection classes.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-378" due-to="Christian Schneider">
        BeanMap does not work in osgi (fixed by BEANUTILS-379)
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-381" due-to="Todd Nine">
        MethodUtils getMatchingAccessibleMethod() does not correctly handle inheritance
        and method overloading.
      </action>
    </release>

    <release version="1.8.3" date="2010-03-28" description="Bug fix for 1.8.2">
      <action dev="niallp" type="fix" issue="BEANUTILS-373" due-to="Andrew Sunde">
        MethodUtils is not thread safe because WeakFastHashMap which uses WeakHashMap is not thread-safe
        (duplicate of BEANUTILS-318 which was not fixed properly in BeanUtils 1.8.0).
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-371" due-to="David Tonhofer">
        Add constructors which have useColumnLabel parameter to ResultSetDynaClass and RowSetDynaClass.
      </action>
    </release>

    <release version="1.8.2" date="2009-11-13" description="Bug fix for 1.8.1">
      <action dev="niallp" type="fix" issue="BEANUTILS-368" due-to="Peter Fassev">
        NullPointerException in BeanUtilsBean .setProperty()
      </action>
    </release>

    <release version="1.8.1" date="2009-10-20" description="Bug fixes for 1.8.0">
      <action dev="niallp" type="fix" issue="BEANUTILS-300" due-to="Henri and Sebb">
        NPE in LazyDynaList
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-327" due-to="Sascha Riemann">
        JDBCDynaClass throws class not found exception under java6
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-336" due-to="Sebb">
        MappedPropertyDescriptor#reLoadClass() possible NPE / odd code; also swallows Throwable
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-339" due-to="Alan Escreet">
        BeanUtilsBean.setProperty throws IllegalArgumentException if value is null
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-345" due-to="Simone Riccucci">
        BeanUtilsBean.setProperty does not handle some kind of nested properties
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-347" due-to="Eickvonder">
        MappedPropertyDescriptor throws an exception after method reference has been garbage collected
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-349" due-to="Eivind Tagseth">
        copyProperties throws NullPointerException if an IllegalArgumentException is thrown due to a null value parameter for a primitive
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-351" due-to="Lucian Chirita">
        FloatLocaleConverter cannot parse 0
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-354" due-to="Anders Wallgren">
        Type in BooleanConverter: "Cna't convert value"
      </action>
      <action dev="niallp" type="update" issue="BEANUTILS-333" due-to="Lukasz Lenart">
        Avoid calling setAccessible() if not needed
      </action>
      <action dev="niallp" type="update" issue="BEANUTILS-344" due-to="Viral">
        Method createDynaProperty of JDBCDynaClass should first look for column label instead of column name in ResultSetMetadata
        object..
      </action>
      <action dev="niallp" type="update" issue="BEANUTILS-350" due-to="rodrigo hernandez">
        change visibility of method "evaluateValue" belongs to the class BeanPropertyValueEqualsPredicate to "protected".
      </action>
    </release>

    <release version="1.8.0" date="2008-09-01" description="Converter improvements, Plugable expression Resolver and bug fixes for 1.7.0">
      <action dev="niallp" type="fix" issue="BEANUTILS-265" due-to="Tom Schindl and Romain Muller">
        Allow access to non public class's public methods from a public sub-classes.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-291" due-to="Clebert Suconic ">
        Circular Reference on WeakHashMap.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-294" due-to="Stephen Leung">
        BeanUtilsBean.setProperty() does not support nested map.
      </action>
      <action dev="bayard" type="fix" issue="BEANUTILS-295" due-to="Stefan Wohlgemuth">
        Unnecessary Garbage Objects in Class PropertyUtilsBean.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-297" due-to="Alex Tkachev">
        ConvertingWrapDynaBean hides cause exceptions.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-298" due-to="Roman Mukhin">
        MethodUtils.getAccessibleMethod(Method method) could not find right public method.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-302" due-to="Martin Bartlett">
        NPE in ArrayConverter when converting a non-quoted string with underscores to a string array.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-306" due-to="Lucian Chirita">
        LocaleConvertUtilsBean.convert throws NPE on null Locale when debug logging is enabled.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-318" due-to="Sylvain Legault">
        Fix WeakHashMap is not thread safe in MethodUtils using new FastWeakHashMap.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-319" due-to="Erik Erskine">
        PropertyUtils.getPropertyType fails for DynaBeans contained within a normal bean.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-326" due-to="Vladimir Orlov">
        Iterating by a Map' key/value pairs in BeanUtilsBean and PropertyUtilsBean.
      </action>
    </release>

    <release version="1.8.0-BETA" date="2007-08-04" description="Trial Beta release">
      <action dev="niallp" type="add" issue="BEANUTILS-259">
        Add plugable property name expression Resolver.
      </action>
      <action dev="niallp" type="update" issue="BEANUTILS-258">
        General Converter implementation improvements: New AbstractConverter which provides
        a basic structure for Converter implementations and new NumberConverter implementation.
      </action>
      <action dev="niallp" type="add" issue="BEANUTILS-242">
        Add new generic ArrayConverter implementation.
      </action>
      <action dev="niallp" type="add" issue="BEANUTILS-255">
        Add new generic DateTimeConverter implementation.
      </action>
      <action dev="vgritsenko" type="update" issue="BEANUTILS-239" due-to="Rafael Afonso">
        Better implementation of SqlDateConverter. Modified SqlDateConverter,
        SqlTimeConverter and SqlTimestampConverter to accept java.util.Date
        and Calendar object instances. Added tests.
      </action>
      <action dev="niallp" type="add" issue="BEANUTILS-286">
        New Facade converter implementation - hide non-Converter public APIs.
      </action>
      <action dev="skitching" type="update" issue="BEANUTILS-229">
        Add "t/f" to BooleanConverter.
      </action>
      <action dev="niallp" type="update" issue="BEANUTILS-43" due-to="Firepica and Thomas Jacob">
        Support Mapped property inside a mapped property.
      </action>
      <action dev="niallp" type="update" issue="BEANUTILS-113" due-to="Firepica and Ludwig Wensauer">
        Support Indexed property inside a mapped property.
      </action>
      <action dev="niallp" type="update" issue="BEANUTILS-247" due-to="Christian Poitras, Thomas Jacob and scott sadlo">
        Support Arrays with multiple dimension.
      </action>
      <action dev="bayard" type="update" issue="BEANUTILS-207" due-to="Erik Meade">
        Include bean class in the message of PropertyUtilsBean exceptions.
      </action>
      <action dev="bayard" type="update" issue="BEANUTILS-224" due-to="Ralf Hauser">
        Provide better error message for "argument type mismatch".
      </action>
      <action dev="bayard" type="update" issue="BEANUTILS-30" due-to="Barry Kaplan">
        Improved messages for unknown properties.
      </action>
      <action dev="bayard" type="update" issue="BEANUTILS-193" due-to="Nestor Boscan">
        MethodUtils.invoke for static methods.
      </action>
      <action dev="niallp" type="update" issue="BEANUTILS-266" due-to="Brian Ewins and Commons HttpClient">
        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).
      </action>
      <action dev="niallp" type="add" due-to="Vic Cekvenich">
        Add lazyDynaList.
      </action>
      <action dev="niallp" type="add" issue="BEANUTILS-185" due-to="Gabriel Belingueres">
        Provide a Map decorator for a DynaBean (enables DynaBean to be used with other teechnologies such as JSTL).
      </action>
      <action dev="niallp" type="update" issue="BEANUTILS-233" due-to="Russell">
        Implement equals() and hashCode() methods for DynaProperty.
      </action>


      <action dev="niallp" type="fix" issue="BEANUTILS-243" due-to="Henri Yandell">
        BeanUtils's tests fail to compile under JDK 1.6
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-49" due-to="Jesper Richter-Reichhelm">
        Lock in BeanUtilsBean.getInstance(
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-157" due-to="Thorbjorn Ravn Andersen">
        Beanutils's describe() method cannot determine reader methods for anonymous class.
      </action>
      <action dev="rdonkin" type="fix" issue="BEANUTILS-158">
        Added warning about describe behaviour to the javadocs.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-249" due-to="Brad">
        BeanUtilsBean's setProperty() does not convert objects using custom converters properly.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-17" due-to="Matthew Sgarlata and Corey Scott">
        Fix javadoc - IllegalArgumentException in BeanUtils.copyProperties
        when property types don't match.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-68" due-to="Dmitry Platonoff">
        Writing to a mapped property requires a setter for a map, but never uses it.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-110" due-to="Etienne Bernard">
        BeanUtilsBean.getArrayProperty() does not use ConvertUtils.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-6" due-to="Sam Ruby">
        MappedPropertyDescriptor - replace copied code.
      </action>
      <action dev="skitching" type="fix">
        MappedPropertyDescriptor: Add comments re: * use of static variable safe in shared
        classloader * memory leak possible on webapp undeploy.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-69" due-to="Chris Audley">
        MappedPropertyDescriptor doesn't recognize boolean property accessor.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-163">
        Add test for MappedPropertyDescriptor with different types on get/set methods.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-140" due-to="Marco La Porta">
        LocaleBeanUtils setProperty does not work on nested property.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-87" due-to="YOKOTA Takehiko">
        Package scope implementation of a public interface for mapped property fails
        (fixed by changes to MappedPropertyDescriptor associated with BEANUTILS-6)
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-33" due-to="Eoin Curran">
        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).
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-273" due-to="Marcelo Liberato">
        Public methods overriden in anonymous or private subclasses are not recognized by PropertyUtils.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-88" due-to="Chuck Daniels">
        PropertyUtilsBean's isReadable() / isWriteable() always return false for mapped properties.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-61" due-to="Brian Ewins">
        PropertyUtilsBean isReadable() and isWriteable() methods do not work correctly for WrapDynaBean.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-18" due-to="Maarten Coene">
        PropertyUtils.isReadable() and PropertyUtils.getProperty() not consistent.
      </action>
      <action dev="bayard" type="fix" issue="BEANUTILS-92" due-to="Will Pugh">
        PropertyUtilsBean.copyProperties does not catch NoSuchMethodException
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-256" due-to="Torsten Feig">
        PropertyUtilsBean.getIndexedProperty()'s javadoc should indicate
        IndexOutOufBoundsException can be thrown rather than just
        ArrayIndexOutOufBoundsException.
      </action>
      <action dev="skitching" type="fix" issue="BEANUTILS-162">
        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...
      </action>
      <action dev="skitching" type="fix">
        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.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-262">
        Correct getPropertyDescriptor() and setNestedProperty() methods to throw
        a NestedNullException rather than just IllegalArgumentException (consistent
        with the getNestedProperty() method).
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-97">
        Problems on indexed property with JDK 1.4.
      </action>
      <action dev="skitching" type="update">
        BooleanArrayConverter: Use new AbstractArrayConverter constructors and
        Convert strings to booleans by invoking a BooleanConverter rather than
        hard-wiring the conversion.
      </action>
      <action dev="skitching" type="update" due-to="Eric Rizzo">
        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.
      </action>
      <action dev="skitching" type="update">
        AbstractArrayConverter: provide ability to pass special NO_DEFAULT object as the
        "defaultValue" constructor parameter.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-78" due-to="Stefan Lotscher">
        DecimalLocaleConverter and subClasses never throw a ConversionException.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-44" due-to="Paul Jenkins">
        FloatLocaleConverter cannot parse negative values.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-263" due-to="Alex Albu">
        Improve ClassConverter robustness.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-271" due-to="Nico Hoogervorst">
        DateLocaleConverter does not always throw an Exception for invalid dates.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-288">
        Don't try parsing values that are already Dates/Numbers in Date/Number locale Converters.
      </action>
      <action dev="skitching" type="fix">
        WrapDynaClass: Added comment re potential memory leak, and safety when using
        shared classloader
      </action>
      <action dev="niallp" type="fix">
        Make WrapDynaBean Serializable.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-36" due-to="Jack">
        WrapDynaBeanTestCase failing with jikes/kaffe because of static List in TestBean.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-23" due-to="Aslak Hellesoy">
        Misleading error message in ConvertingWrapDynaBean.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-24" due-to="Roi Ares">
        LazyDynaBean: don't try and instantiate properties of type Object.class.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-133" due-to="Masoud Omidvar">
        LazyDynabean Javadoc corrections.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-250">
        LazyDynaClass can create a DynaProperty with a "null" type.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-289">
        JDBCDynaClass "lowerCase" option causes problems in RowSetDynaClass and ResultSetIterator.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-142" due-to="Li Zhang">
        RowSetDynaClass fails to copy ResultSet to DynaBean with Oracle 10g JDBC driver.
      </action>
      <action dev="bayard" type="fix" issue="BEANUTILS-241" due-to="Chris Hyzer">
        Fix BeanComparator throws wrong exception and hides cause.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-112" due-to="Simon Kitching">
        Deprecate the public static defaultTransformers HashMap and make it unmodifiable.
      </action>

      <action dev="niallp" type="update" issue="BEANUTILS-290">
        Merge Bean-Collections back into core BeanUtils and remove Bean-Collections sub-project.
      </action>
      <action dev="bayard" type="fix" issue="BEANUTILS-287">
        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)
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-217" due-to="Carlos Sanchez">
        Improvements to maven build.
      </action>
      <action dev="niallp" type="fix" issue="BEANUTILS-54" due-to="Pascal Grange">
        Add Implementation-Vendor-Id entry to jar's manifest.
      </action>
      <action dev="bayard" type="fix" issue="BEANUTILS-121" due-to="Chris Tilden">
        Resolve compiler warnings: Unused imports, un-read local variables,
        field hiding, empty block, improperly used statics, uncessary semi
        colons, unnecessary casts.
      </action>
      <action dev="skitching" type="fix">
        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.
      </action>
      <action dev="scolebourne" type="fix" due-to="Dimiter Dimitrov" issue="COLLECTIONS-22">
        BeanMap: Fix internal variable to not include non-existant write methods.
        - ported from Commons Collections.
      </action>
      <action dev="rdonkin" type="update" due-to="Steve Cohen">
        Change MethodUtils to make getMatchingAccessibleMethod() method selection more
        rational.
      </action>
    </release>

    <release version="1.7.0" date="2004-08-02">
      <action type="update">
        See href="https://commons.apache.org/beanutils/commons-beanutils-1.7.0/RELEASE-NOTES.txt
      </action>
    </release>

    <release version="1.6.1" date="2003-02-18">
      <action type="update">
        See https://commons.apache.org/beanutils/commons-beanutils-1.6.1/RELEASE-NOTES.txt
      </action>
    </release>

    <release version="1.6" date="2003-01-21">
      <action type="update">
        See https://commons.apache.org/beanutils/commons-beanutils-1.6/RELEASE-NOTES.txt
      </action>
    </release>

    <release version="1.5" date="2002-10-23">
      <action type="update">
        See https://commons.apache.org/beanutils/commons-beanutils-1.5/RELEASE-NOTES.txt
      </action>
    </release>

    <release version="1.4.1" date="2002-08-28">
      <action type="fix">
        See https://commons.apache.org/beanutils/commons-beanutils-1.4.1/RELEASE-NOTES.txt
      </action>
    </release>

    <release version="1.4" date="2002-08-13">
      <action type="update">
        See https://commons.apache.org/beanutils/commons-beanutils-1.4/RELEASE-NOTES.txt
      </action>
    </release>

    <release version="1.3" date="2002-04-29">
      <action type="update">
        See https://commons.apache.org/beanutils/commons-beanutils-1.3/RELEASE-NOTES.txt
      </action>
    </release>

    <release version="1.2" date="2001-12-24">
      <action type="update">
        See https://commons.apache.org/beanutils/commons-beanutils-1.2/RELEASE-NOTES.txt
      </action>
    </release>

    <release version="1.1" date="2001-09-22">
      <action type="update">Version 1.1</action>
    </release>

    <release version="1.0" date="2001-07-14" description="Initial Release">
      <action type="add">Initial Release</action>
    </release>

  </body>
</document>
