$Id: RELEASE-NOTES.txt 447139 2006-09-17 20:36:53Z bayard $

                        Commons Lang Package
                            Version 2.2
                           Release Notes


INTRODUCTION:

This document contains the release notes for the 2.2 version of Apache Jakarta Commons Lang.
Commons Lang is a set of utility functions and reusable components that
should be of use in any Java environment.

INCOMPATIBLE CHANGES WITH VERSION 2.1:

- None

ADDITIONAL INCOMPATIBLE CHANGES WITH VERSION 2.0:

- The Nestable interface defines the method indexOfThrowable(Class).
Previously the implementations checked only for a specific Class.
Now they check for subclasses of that Class as well.
For most situations this will be the expected behaviour (ie. its a bug fix).
If it causes problems, please use the ExceptionUtils.indexOfThrowable(Class) method instead.
Note that the ExceptionUtils method is available in v1.0 and v2.0 of commons-lang and has not been changed.
(An alternative to this is to change the public static matchSubclasses flag on NestableDelegate.
However, we don't recommend that as a long-term solution.)

- The StopWatch class has had much extra validation added.
If your code previously relied on unusual aspects, it may no longer work.

- Starting with version 2.1, Ant version 1.6.x is required to build. Copy 
junit.jar to ANT_HOME/lib. You can get JUnit from http://www.junit.org. See the developer's guide
for more details.

DEPRECATIONS FROM 2.1 to 2.2:

- None

DEPRECATIONS FROM 2.0 to 2.1:

- The enum package has been renamed to enums for JDK1.5 compilance.
All functionality is identical, just the package has changed.
This package will be removed in v3.0.

- NumberUtils.stringToInt - renamed to toInt

- DateUtils - four constants, MILLIS_IN_* have been deprecated as they were defined
as int not long. The replacements are MILLIS_PER_*. 


BUG FIXES IN 2.2:

LANG-2    javadoc example for StringUtils.splitByWholeSeparator incorrect
LANG-3    PADDING array in StringUtils overflows on '\uffff'
LANG-10   [patch] ClassUtils.primitiveToWrapper and Void
LANG-21   escapeXML() -> Not escaping low characters
LANG-25   DurationFormatUtils.formatDurationISO() javadoc is missing T in duration string between date and time part
LANG-37   unit test for org.apache.commons.lang.text.StrBuilder
LANG-42   EqualsBuilder.append(Object[], Object[]) crashes with a NullPointerException if an element of the first array is null
LANG-45   StrBuilderTest#testReplaceStringString fails.
LANG-50   Replace Clover with Cobertura
LANG-59   DateUtils.truncate method is buggy when dealing with DST switching hours
LANG-100  RandomStringUtils.random() family of methods create invalid unicode sequences
LANG-105  ExceptionUtils goes into infinite loop in getThrowables is throwable.getCause() == throwable
LANG-106  StringUtils#getLevenshteinDistance() performance is sub-optimal
LANG-112  Wrong length check in StrTokenizer.StringMatcher
LANG-117  FastDateFormat: wrong format for date "01.01.1000"
LANG-122  EscapeUtil.escapeHtml() should clarify that it does not escape ' chars to &apos;
LANG-123  Unclear javadoc for DateUtils.iterator()
LANG-127  Minor tweak to fix of bug # 26616
LANG-130  Memory "leak" in StringUtils
LANG-140  DurationFormatUtils.formatPeriod() returns the wrong result
LANG-141  Fraction.toProperString() returns -1/1 for -1
LANG-148  Performance modifications on StringUtils.replace
LANG-150  StringEscapeUtils.unescapeHtml skips first entity after standalone ampersand
LANG-152  DurationFormatUtils.formatDurationWords "11 <unit>s" gets converted to "11 <unit>"
LANG-259  ValuedEnum.compareTo(Object other) not typesafe - it easily could be...
LANG-261  Error in an example in the javadoc of the StringUtils.splitPreserveAllTokens() method
LANG-264  ToStringBuilder/HashCodeBuilder javadoc code examples
LANG-271  LocaleUtils test fails under Mustang
LANG-272  Minor build and checkstyle changes
LANG-277  Javadoc errors on StringUtils.splitPreserveAllTokens(String, char)
LANG-278  javadoc for StringUtils.removeEnd is incorrect

IMPROVEMENTS IN 2.2:

LANG-159  Add WordUtils.getInitials(String)
LANG-161  Add methods and tests to StrBuilder
LANG-162  replace() length calculation improvement
LANG-165  parseDate with TimeZone
LANG-166  New interpolation features
LANG-169  Implementation of escape/unescapeHtml methods with Writer
LANG-176  CompareToBuilder excludeFields for reflection method
LANG-186  Request for MutableBoolean implementation
LANG-194  add generic add method to DateUtils
LANG-198  New method for EqualsBuilder
LANG-212  New ExceptionUtils method setCause()
LANG-216  Provides a Class.getPublicMethod which returns public invocable Method
LANG-217  Add Mutable<Type> to<Type>() methods.
LANG-220  Tokenizer Enhancements: reset input string, static CSV/TSV factories
LANG-226  Using ReflectionToStringBuilder and excluding secure fields
LANG-242  Trivial cleanup of javadoc in various files
LANG-246  CompositeFormat
LANG-250  Performance boost for RandomStringUtils
LANG-254  Enhanced Class.forName version
LANG-260  StringEscapeUtils should expose escape*() methods taking Writer argument
LANG-263  Add StringUtils.containsIgnoreCase(...)
LANG-267  Support char array converters on ArrayUtils
LANG-270  minor javadoc improvements for StringUtils.stripXxx() methods
          New ExceptionUtils methods getMessage/getRootCauseMessage

