<?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 from Java 6 to 7, update from Apache Commons Collection 3 to 4.">
      <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-500" dev="dbrosius" type="update" due-to="Dave Brosius, Gary Gregory">
        Upgrade from Apache Commons Collections 3 to 4.
      </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-517" dev="ggregory" type="update" due-to="Gary Gregory">
        Update Apache Commons Collections from 4.2 to 4.3.
      </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-528" dev="ggregory" type="update" due-to="Melloware, Matt Sicker, Gary Gregory">
        New converters for UUID, URI, and Path #10.
      </action>
      <action issue="BEANUTILS-515" dev="ggregory" type="update" due-to="Melloware, Matt Sicker, Gary Gregory">
        New converters for Java 8 Time classes LocalDate, LocaleDateTime, ZonedDateTime, OffsetDateTime #13.
      </action>
      <action issue="BEANUTILS-529" dev="ggregory" type="update" due-to="Gary Gregory">
        Log at the debug level or below, not info or above.
      </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>
