Apache Commons logo Commons Lang

Lang 2.5 Release Notes

These are the release notes and advice for upgrading Commons-Lang from version 2.4 to version 2.5.

See 'What's new in 2.5?' for more information.

INTRODUCTION:

This document contains the release notes for the 2.5 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.

Lang 2.5 no longer attempts to target the Java 1.2 environment and now targets Java 1.3.

IMPROVEMENTS IN 2.5
===================

    * [LANG-583] - ArrayUtils - add isNotEmpty() methods
    * [LANG-534] - ArrayUtils - add nullToEmpty() methods
    * [LANG-454] - CharRange - provide an iterator that lets you walk the chars in the range
    * [LANG-514] - CharRange - add more readable static builder methods
    * [        ] - ClassUtils - new isAssignable() methods with autoboxing
    * [LANG-535] - ClassUtils - add support to getShortClassName and getPackageName for arrays
    * [LANG-434] - DateUtils - add ceiling() method
    * [LANG-486] - DateUtils - add parseDateStrictly() method
    * [LANG-466] - EqualsBuilder - add reset() method
    * [LANG-461] - NumberUtils - add toByte() and toShort() methods
    * [LANG-522] - Mutable numbers - add string constructors
    * [        ] - MutableBoolean - add toBoolean(), isTrue() and isFalse() methods
    * [LANG-422] - StrBuilder - add appendSeparator() methods with an alternative default separator if the StrBuilder is currently empty
    * [LANG-555] - SystemUtils - add IS_OS_WINDOWS_7 constant
    * [LANG-554] - SystemUtils - add IS_JAVA_1_7 constant for JDK 1.7
    * [LANG-405] - StringUtils - add abbreviateMiddle() method
    * [LANG-569] - StringUtils - add indexOfIgnoreCase() and lastIndexOfIgnoreCase() methods
    * [LANG-471] - StringUtils - add isAllUpperCase() and isAllLowerCase() methods
    * [LANG-469] - StringUtils - add lastOrdinalIndexOf() method to complement the existing ordinalIndexOf() method
    * [LANG-348] - StringUtils - add repeat() method
    * [LANG-445] - StringUtils - add startsWithAny() method
    * [LANG-430] - StringUtils - add upperCase(String, Locale) and lowerCase(String, Locale) methods
    * [LANG-416] - New Reflection package containing ConstructorUtils, FieldUtils, MemberUtils and MethodUtils

BUG FIXES IN 2.5
================

    * [LANG-494] - CharSet - Synchronizing the COMMON Map so that getInstance doesn't miss a put from a subclass in another thread
    * [LANG-500] - ClassUtils - improving performance of getAllInterfaces
    * [LANG-587] - ClassUtils - toClass() throws NullPointerException on null array element
    * [LANG-530] - DateUtils - Fix parseDate() cannot parse ISO8601 dates produced by FastDateFormat
    * [LANG-440] - DateUtils - round() doesn't work correct for Calendar.AM_PM
    * [LANG-443] - DateUtils - improve tests
    * [LANG-204] - Entities - multithreaded initialization
    * [LANG-506] - Entities - missing final modifiers; thread-safety issues
    * [LANG-76]  - EnumUtils - getEnum() doesn't work well in 1.5+
    * [LANG-584] - ExceptionUtils - use immutable lock target
    * [LANG-477] - ExtendedMessageFormat - OutOfMemory with a pattern containing single quotes
    * [LANG-538] - FastDateFormat - call getTime() on a calendar to ensure timezone is in the right state
    * [LANG-547] - FastDateFormat - Remove unused field
    * [LANG-511] - LocaleUtils - initialization of available locales can be deferred
    * [LANG-457] - NumberUtils - createNumber() thows a StringIndexOutOfBoundsException for "l"
    * [LANG-521] - NumberUtils - isNumber(String) and createNumber(String) both modified to support '2.'
    * [LANG-432] - StringUtils - improve handling of case-insensitive Strings
    * [LANG-552] - StringUtils - replaceEach() no longer NPEs when null appears in the last String[]
    * [LANG-460] - StringUtils - correct JavaDocs for startsWith() and startsWithIgnoreCase()
    * [LANG-421] - StringEscapeUtils - escapeJava() escapes '/' characters
    * [LANG-450] - StringEscapeUtils - change escapeJavaStyleString() to throw UnhandledException instead swallowing IOException
    * [LANG-419] - WordUtils - fix StringIndexOutOfBoundsException when lower is greater than the String length
    * [LANG-523] - StrBuilder - Performance improvement by doubling the size of the String in ensureCapacity
    * [LANG-575] - Compare, Equals and HashCode builders - use ArrayUtils to avoid creating a temporary List
    * [LANG-467] - EqualsBuilder - removing the special handling of BigDecimal (LANG-393) to use compareTo 
    * [LANG-574] - HashCodeBuilder - Performance improvement: check for isArray to short-circuit the 9 instanceof checks
    * [LANG-520] - HashCodeBuilder - Changing the hashCode() method to return toHashCode()
    * [LANG-459] - HashCodeBuilder - reflectionHashCode() can generate incorrect hashcodes
    * [LANG-586] - HashCodeBuilder and ToStringStyle - use of ThreadLocal causes memory leaks in container environments
    * [LANG-487] - ToStringBuilder - make default style thread-safe
    * [LANG-472] - RandomUtils - nextLong() always produces even numbers
    * [LANG-592] - RandomUtils - RandomUtils tests are failing frequently