From cf7486556173620fccd26758aee9a99313c54843 Mon Sep 17 00:00:00 2001 From: Niall Pemberton Date: Thu, 25 Feb 2010 01:29:36 +0000 Subject: [PATCH] Update site for 2.5 release git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@916082 13f79535-47bb-0310-9956-ffa450edef68 --- RELEASE-NOTES.txt | 173 ++++++++++++------------------ pom.xml | 2 +- src/site/changes/changes.xml | 59 ++++++++++ src/site/site.xml | 4 +- src/site/xdoc/building.xml | 15 ++- src/site/xdoc/download_lang.xml | 24 ++--- src/site/xdoc/index.xml | 14 ++- src/site/xdoc/release-history.xml | 1 + src/site/xdoc/upgradeto2_5.xml | 105 ++++++++++++++++++ 9 files changed, 258 insertions(+), 139 deletions(-) create mode 100644 src/site/xdoc/upgradeto2_5.xml diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 5a5159f1e..603225c35 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,124 +1,83 @@ $Id$ Commons Lang Package - Version 2.4 + Version 2.5 Release Notes INTRODUCTION: -This document contains the release notes for the 2.4 version of Apache Commons Lang. +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.4 no longer attempts to target the Java 1.1 environment and now targets Java 1.2. While previous versions -were built for 1.1, some parts were using methods that were only available in 1.2, and the Enum class had -become dependent on Java 1.3. -INCOMPATIBLE CHANGES WITH VERSION 2.3: +COMPATIBILITY WITH 2.4 +====================== +Lang 2.5 is binary compatible release with Lang 2.4, containing bug fixes and small enhancements. -- None - -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. it is 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. - -- public static java.util.Date add(java.util.Date, int, int) - it is not intended for this - method to be public. Please let us know if you use this. - -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 compliance. -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_*. +Lang 2.5 requires a minimum of JDK 1.3. -BUG FIXES IN 2.4: +IMPROVEMENTS IN 2.5 +=================== - * [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 incorrectly - * [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 + * [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-438] - 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 -IMPROVEMENTS IN 2.4: +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 - * [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() diff --git a/pom.xml b/pom.xml index 914a6ca20..98107b78f 100644 --- a/pom.xml +++ b/pom.xml @@ -433,7 +433,7 @@ 1.5 1.5 lang - 2.4 + 2.5 LANG 12310481 !net.jcip.annotations,* diff --git a/src/site/changes/changes.xml b/src/site/changes/changes.xml index c5b985688..3938d6426 100644 --- a/src/site/changes/changes.xml +++ b/src/site/changes/changes.xml @@ -27,6 +27,65 @@ ArrayUtils.add(T[] array[, offset], T element) can create unexpected ClassCastException + + ArrayUtils - add isNotEmpty() methods + ArrayUtils - add nullToEmpty() methods + CharRange - provide an iterator that lets you walk the chars in the range + CharRange - add more readable static builder methods + ClassUtils - new isAssignable() methods with autoboxing + ClassUtils - add support to getShortClassName and getPackageName for arrays + DateUtils - add ceiling() method + DateUtils - add parseDateStrictly() method + EqualsBuilder - add reset() method + NumberUtils - add toByte() and toShort() methods + Mutable numbers - add string constructors + MutableBoolean - add toBoolean(), isTrue() and isFalse() methods + StrBuilder - add appendSeparator() methods with an alternative default separator if the StrBuilder is currently empty + SystemUtils - add IS_OS_WINDOWS_7 constant + SystemUtils - add IS_JAVA_1_7 constant for JDK 1.7 + StringUtils - add abbreviateMiddle() method + StringUtils - add indexOfIgnoreCase() and lastIndexOfIgnoreCase() methods + StringUtils - add isAllUpperCase() and isAllLowerCase() methods + StringUtils - add lastOrdinalIndexOf() method to complement the existing ordinalIndexOf() method + StringUtils - add repeat() method + StringUtils - add startsWithAny() method + StringUtils - add upperCase(String, Locale) and lowerCase(String, Locale) methods + New Reflection package containing ConstructorUtils, FieldUtils, MemberUtils and MethodUtils + ArrayUtils - addAll() does not handle mixed types very well + CharSet - Synchronizing the COMMON Map so that getInstance doesn't miss a put from a subclass in another thread + ClassUtils - improving performance of getAllInterfaces + ClassUtils - toClass() throws NullPointerException on null array element + DateUtils - Fix parseDate() cannot parse ISO8601 dates produced by FastDateFormat + DateUtils - round() doesn't work correct for Calendar.AM_PM + DateUtils - improve tests + Entities - multithreaded initialization + Entities - missing final modifiers; thread-safety issues + EnumUtils - getEnum() doesn't work well in 1.5+ + ExceptionUtils - use immutable lock target + ExtendedMessageFormat - OutOfMemory with a pattern containing single quotes + FastDateFormat - call getTime() on a calendar to ensure timezone is in the right state + FastDateFormat - Remove unused field + LocaleUtils - Initialization of available locales in LocaleUtils can be deferred + NumberUtils - createNumber() thows a StringIndexOutOfBoundsException when only an "l" is passed in + NumberUtils - isNumber(String) and createNumber(String) both modified to support '2.' + StringUtils - improve handling of case-insensitive Strings + StringUtils - replaceEach() no longer NPEs when null appears in the last String[] + StringUtils - correct JavaDocs for startsWith() and startsWithIgnoreCase() + StringEscapeUtils - escapeJava() escapes '/' characters + StringEscapeUtils - change escapeJavaStyleString() to throw UnhandledException instead swallowing IOException and returning null + WordUtils - fix StringIndexOutOfBoundsException when lower is greater than the String length + StrBuilder - Performance improvement by doubling the size of the String in ensureCapacity + Compare, Equals and HashCode builders - use ArrayUtils to avoid creating a temporary List + EqualsBuilder - removing the special handling of BigDecimal (LANG-393) to use compareTo instead of equals because it creates an inequality with HashCodeBuilder + HashCodeBuilder - Performance improvement: check for isArray to short-circuit the 9 instanceof checks. + HashCodeBuilder - Changing the hashCode() method to return toHashCode() + HashCodeBuilder - reflectionHashCode() can generate incorrect hashcodes + HashCodeBuilder and ToStringStyle - use of ThreadLocal causes memory leaks in container environments + ToStringBuilder - make default style thread-safe + RandomUtils - nextLong() always produces even numbers + RandomUtils - RandomUtils tests are failing frequently + + ClassUtils.getShortClassName(String) inefficient Shouldn't Commons Lang's StringUtils have a "common" string method? diff --git a/src/site/site.xml b/src/site/site.xml index 0198bbcaf..6a827f460 100644 --- a/src/site/site.xml +++ b/src/site/site.xml @@ -25,10 +25,10 @@ - + - + diff --git a/src/site/xdoc/building.xml b/src/site/xdoc/building.xml index 81be13773..56e785636 100644 --- a/src/site/xdoc/building.xml +++ b/src/site/xdoc/building.xml @@ -31,6 +31,7 @@ limitations under the License. You may also be interested in the upgrade notes:

    +
  • Upgrade from 2.4 to 2.5
  • Upgrade from 2.3 to 2.4
  • Upgrade from 2.2 to 2.3
  • Upgrade from 2.1 to 2.2
  • @@ -41,16 +42,12 @@ limitations under the License.

    - To build a jar file, change into the root directory of Lang and run "maven jar". + To build a jar file, change into the root directory of Lang and run "mvn package". The result will be in the "target" subdirectory.

    - To build the Javadocs, run "maven javadoc". - The result will be in "target/docs/apidocs". -

    -

    - To build the full website, run "maven site". - The result will be in "target/docs". + To build the full website, run "mvn site". + The result will be in "target/site". You must be online to successfully complete this target.

    @@ -62,11 +59,11 @@ limitations under the License.

    To build a jar file, change into the root directory of Lang and run "ant jar". - The result will be in the "dist" subdirectory. + The result will be in the "target" subdirectory.

    To build the Javadocs, run "ant javadoc". - The result will be in "dist/docs/api". + The result will be in "target/docs/api".

    diff --git a/src/site/xdoc/download_lang.xml b/src/site/xdoc/download_lang.xml index 2323af6e1..7275c45f6 100644 --- a/src/site/xdoc/download_lang.xml +++ b/src/site/xdoc/download_lang.xml @@ -102,17 +102,17 @@ limitations under the License.

    -The latest version 2.4, is JDK 1.2 compatible - -Download now! -(upgrade notes).

    - -

    Read 'What's new in 2.4?' for more information.

    +The latest version 2.5, is JDK 1.3 compatible - +Download now! +(upgrade notes).

    For information on previous releases, see the Release History and to download previous releases, see the Apache Archive. diff --git a/src/site/xdoc/release-history.xml b/src/site/xdoc/release-history.xml index c034c4ca5..08d96324e 100644 --- a/src/site/xdoc/release-history.xml +++ b/src/site/xdoc/release-history.xml @@ -28,6 +28,7 @@ limitations under the License. + diff --git a/src/site/xdoc/upgradeto2_5.xml b/src/site/xdoc/upgradeto2_5.xml new file mode 100644 index 000000000..40e575e4d --- /dev/null +++ b/src/site/xdoc/upgradeto2_5.xml @@ -0,0 +1,105 @@ + + + + + Upgrade from 2.4 to 2.5 + Commons Documentation Team + + + +
    +

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

    + +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-438] - 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 + + +

    +
    + + +
    VersionRelease dateJavadocRelease notes
    2.523/Feb/10api-2.5release notes for 2.5
    2.418/Mar/08api-2.4release notes for 2.4
    2.313/Feb/07api-2.3release notes for 2.3
    2.204/Oct/06api-2.2release notes for 2.2