136 lines
6.5 KiB
Plaintext
136 lines
6.5 KiB
Plaintext
|
$Id$
|
||
|
|
||
|
Commons Lang Package
|
||
|
Version 2.1
|
||
|
Release Notes
|
||
|
|
||
|
|
||
|
INTRODUCTION:
|
||
|
|
||
|
This document contains the release notes for the 2.1 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:
|
||
|
|
||
|
- 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:
|
||
|
|
||
|
- 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_*.
|
||
|
|
||
|
|
||
|
NEW FEATURES:
|
||
|
|
||
|
New:
|
||
|
- Mutable package - contains basic classes that hold an Object or primitive
|
||
|
and provide both get and set methods.
|
||
|
- DurationFormatUtils - provides various methods for formatting durations
|
||
|
- CharEncoding - definitions of constants for character encoding work
|
||
|
- CharUtils - utilities for working with characters
|
||
|
|
||
|
Updated:
|
||
|
- ArrayUtils - many more methods, especially List-like methods
|
||
|
- BooleanUtils - isTrue and isFalse methods that handle null
|
||
|
- ClassUtils - primitive to wrapper class conversion methods
|
||
|
- ClassUtils - class name comparator
|
||
|
- IllegalClassException - extra constructor for common instanceof case
|
||
|
- NotImplementedException - supports nested exceptions
|
||
|
- ObjectUtils - hashcode method handling null
|
||
|
- StringUtils - isAsciiPrintable to check the contents of a string
|
||
|
-- ordinalIndexOf to find the nth index of a string
|
||
|
-- various remove methods to remove parts of a string
|
||
|
-- various split methods to provide more control over splitting a string
|
||
|
-- defaultIfEmpty to default a string if null or empty
|
||
|
- SystemUtils - methods to get system properties as File objects
|
||
|
-- extra constants representing system properties
|
||
|
- Validate - new methods to check whether all elements in a collection are of a specific type
|
||
|
- WordUtils - new methods to capitalize based on a set of specified delimiters
|
||
|
|
||
|
- EqualsBuilder - now provides setter to internal state
|
||
|
- ToStringStyle - new style, short prefix style
|
||
|
- ReflectionToStringBuilder - more flags to control the output with regards to statics
|
||
|
|
||
|
- ExceptionUtils - added indexOfType methods that check subclasses, thus leaving the existing
|
||
|
indexOfThrowable method untouched (see incompatible changes section)
|
||
|
|
||
|
- NumberUtils - various string to number parsing methods added
|
||
|
|
||
|
- DateUtils - methods added to compare dates in various ways
|
||
|
-- method to parse a date string using multiple patterns
|
||
|
- FastDateFormat - extra formatting methods that take in a millisecond long value
|
||
|
-- additional static factory methods
|
||
|
- StopWatch - new methods for split behaviour
|
||
|
|
||
|
|
||
|
BUG FIXES:
|
||
|
|
||
|
19331 General case: infinite loop: ToStringBuilder.reflectionToString
|
||
|
23174 EqualsBuilder.append(Object[], Object[]) throws NPE
|
||
|
23356 Make DurationFormatUtils public!
|
||
|
23557 WordUtils.capitalizeFully(String str) should take a delimiters
|
||
|
23683 New method for converting a primitive Class to its corresponding wrapper
|
||
|
23430 Minor javadoc fixes for StringUtils.contains(String, String)
|
||
|
23590 make optional parameters in FastDateFormat really optional
|
||
|
24056 Documentation error in StringUtils.replace
|
||
|
25227 StringEscapeUtils.unescapeHtml() doesn't handle hex entities
|
||
|
25454 new StringUtils.replaceChars behaves differently from old Ch
|
||
|
25560 DateUtils.truncate() is off by one hour when using a date in DST switch 'zone'
|
||
|
25627 DateUtils constants should be long
|
||
|
25683 Add method that validates Collection elements are a correct
|
||
|
25849 Add SystemUtils methods for directory properties.
|
||
|
26616 ClassCastException in Enum.equals(Object)
|
||
|
26699 Tokenizer Enhancements: reset input string, static CSV
|
||
|
26734 NullPointerException in EqualsBuilder.append(Object[], Object[])
|
||
|
26877 Add SystemUtils.AWT_TOOLKIT and others.
|
||
|
26922 public static boolean DateUtils.equals(Date dt1, Date dt2)
|
||
|
27592 WordUtils capitalize improvement
|
||
|
27876 ReflectionToStringBuilder.toString(null) throws exception by design
|
||
|
27877 Make ClassUtils methods null-safe and not throw an IAE.
|
||
|
28468 StringUtils.defaultString: Documentation error
|
||
|
28554 Add hashCode-support to class ObjectUtils
|
||
|
29082 Enhancement of ExceptionUtils.CAUSE_METHOD_NAMES
|
||
|
29149 StringEscapeUtils.unescapeHtml() doesn't handle an empty entity
|
||
|
29294 lang.math.Fraction class deficiencies
|
||
|
29673 ExceptionUtils: new getCause() methodname (for tomcat)
|
||
|
29794 Add convenience format(long) methods to FastDateForma
|
||
|
30328 HashCodeBuilder does not use the same values as Boolean (fixed as documentation)
|
||
|
30334 New class proposal: CharacterEncoding
|
||
|
30674 parseDate class from HttpClient's DateParser class
|
||
|
30815 ArrayUtils.isEquals() throws ClassCastException when array1
|
||
|
30929 Nestable.indexOfThrowable(Class) uses Class.equals() to match
|
||
|
31395 DateUtils.truncate oddity at the far end of the Date spectrum
|
||
|
31478 Compile error with JDK 5 "enum" is a keyword
|
||
|
31572 o.a.c.lang.enum.ValuedEnum: 'enum'is a keyword in JDK1.5.0
|
||
|
31933 ToStringStyle setArrayEnd handled null incorrectly
|
||
|
32133 SystemUtils fails init on HP-UX
|
||
|
32198 Error in JavaDoc for StringUtils.chomp(String, String)
|
||
|
32625 Can't subclass EqualsBuilder because isEquals is private
|
||
|
33067 EqualsBuilder.append(Object[], Object[]) crashes with a NullPointerException if an element of the first array is null
|
||
|
33069 EqualsBuilder.append(Object[], Object[]) incorrectly checks that rhs[i] is instance of lhs[i]'s class
|
||
|
33574 unbalanced ReflectionToStringBuilder
|
||
|
33737 ExceptionUtils.addCauseMethodName(String) does not check for duplicates.
|