| $Id$ |
| |
| Commons Lang Package |
| Version 2.4 |
| Release Notes |
| |
| |
| INTRODUCTION: |
| |
| This document contains the release notes for the 2.4 version of Apache 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.3: |
| |
| |
| INCOMPATIBLE CHANGES WITH VERSION 2.2: |
| |
| - Calling stop on a suspended StopWatch will no longer change the underlying time. |
| It's very unlikely anyone was relying on that bug as a feature. |
| |
| 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.3 to 2.4: |
| |
| - ObjectUtils.appendIdentityToString(StringBuffer, Object) - has very odd semantics, use |
| ObjectUtils.identityToString(StringBuffer, Object) instead. |
| |
| DEPRECATIONS FROM 2.2 to 2.3: |
| |
| - None |
| |
| 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.4: |
| |
| * [LANG-76 ] - EnumUtils.getEnum() doesn't work well in 1.5 |
| * [LANG-328] - LocaleUtils.toLocale() rejects strings with only language+variant |
| * [LANG-334] - Enum is not thread-safe |
| * [LANG-346] - Dates.round() behaves incorrectly for minutes and seconds |
| * [LANG-349] - Deadlock using ReflectionToStringBuilder |
| * [LANG-353] - Javadoc Example for EqualsBuilder is questionable |
| * [LANG-360] - Why does appendIdentityToString return null? |
| * [LANG-361] - BooleanUtils toBooleanObject javadoc does not match implementation |
| * [LANG-363] - StringEscapeUtils..escapeJavaScript() method did not escape '/' into '\/', it will make IE render page uncorrectly |
| * [LANG-364] - Documentation bug for ignoreEmptyTokens accessors in StrTokenizer |
| * [LANG-365] - BooleanUtils.toBoolean() - invalid drop-thru in case statement causes StringIndexOutOfBoundsException |
| * [LANG-367] - FastDateFormat thread safety |
| * [LANG-368] - FastDateFormat getDateInstance() and getDateTimeInstance() assume Locale.getDefault() won't change |
| * [LANG-369] - ExceptionUtils not thread-safe |
| * [LANG-372] - ToStringBuilder: MULTI_LINE_STYLE does not print anything from appendToString methods. |
| * [LANG-380] - infinite loop in Fraction.reduce when numerator == 0 |
| * [LANG-381] - NumberUtils.min(floatArray) returns wrong value if floatArray[0] happens to be Float.NaN |
| * [LANG-385] - http://commons.apache.org/lang/developerguide.html "Building" section is incorrect and incomplete |
| * [LANG-393] - EqualsBuilder don't compare BigDecimals correctly |
| * [LANG-399] - Javadoc bugs - cannot find object |
| * [LANG-410] - Ambiguous / confusing names in StringUtils replace* methods |
| * [LANG-412] - StrBuilder appendFixedWidth does not handle nulls |
| * [LANG-414] - DateUtils.round() often fails |
| |
| IMPROVEMENTS IN 2.4: |
| |
| * [LANG-180] - adding a StringUtils.replace method that takes an array or List of replacement strings |
| * [LANG-192] - Split camel case strings |
| * [LANG-257] - Add new splitByWholeSeparatorPreserveAllTokens() methods to StringUtils |
| * [LANG-269] - Shouldn't Commons Lang's StringUtils have a "common" string method? |
| * [LANG-298] - ClassUtils.getShortClassName and ClassUtils.getPackageName and class of array |
| * [LANG-321] - Add toArray() method to IntRange and LongRange classes |
| * [LANG-322] - ClassUtils.getShortClassName(String) inefficient |
| * [LANG-326] - StringUtils: startsWith / endsWith / startsWithIgnoreCase / endsWithIgnoreCase / removeStartIgnoreCase / removeEndIgnoreCase methods |
| * [LANG-329] - Pointless synchronized in ThreadLocal.initialValue should be removed |
| * [LANG-333] - ArrayUtils.toClass |
| * [LANG-337] - Utility class constructor javadocs should acknowledge that they may sometimes be used, e.g. with Velocity. |
| * [LANG-338] - truncateNicely method which avoids truncating in the middle of a word |
| * [LANG-345] - Optimize HashCodeBuilder.append(Object) |
| * [LANG-351] - Extension to ClassUtils: Obtain the primitive class from a wrapper |
| * [LANG-356] - Add getStartTime to StopWatch |
| * [LANG-362] - Add ExtendedMessageFormat to org.apache.commons.lang.text |
| * [LANG-371] - ToStringStyle javadoc should show examples of styles |
| * [LANG-374] - Add escaping for CSV columns to StringEscapeUtils |
| * [LANG-375] - add SystemUtils.IS_OS_WINDOWS_VISTA field |
| * [LANG-379] - Calculating A date fragment in any time-unit |
| * [LANG-383] - Adding functionality to DateUtils to allow direct setting of various fields. |
| * [LANG-402] - OSGi-ify Lang |
| * [LANG-404] - Add Calendar flavour format methods to DateFormatUtils |
| * [LANG-407] - StringUtils.length(String) returns null-safe length |
| * [LANG-413] - Memory usage improvement for StringUtils#getLevenshteinDistance() |