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
This commit is contained in:
Niall Pemberton 2010-02-25 01:29:36 +00:00
parent 43fca0d749
commit cf74865561
9 changed files with 258 additions and 139 deletions

View File

@ -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()

View File

@ -433,7 +433,7 @@
<maven.compile.source>1.5</maven.compile.source>
<maven.compile.target>1.5</maven.compile.target>
<commons.componentid>lang</commons.componentid>
<commons.release.version>2.4</commons.release.version>
<commons.release.version>2.5</commons.release.version>
<commons.jira.id>LANG</commons.jira.id>
<commons.jira.pid>12310481</commons.jira.pid>
<commons.osgi.import>!net.jcip.annotations,*</commons.osgi.import>

View File

@ -27,6 +27,65 @@
<action type="fix" issue="LANG-571">ArrayUtils.add(T[] array[, offset], T element) can create unexpected ClassCastException</action>
</release>
<release version="2.5" date="2010-02-25" description="">
<action type="add" issue="LANG-583">ArrayUtils - add isNotEmpty() methods</action>
<action type="add" issue="LANG-534">ArrayUtils - add nullToEmpty() methods</action>
<action type="add" issue="LANG-454">CharRange - provide an iterator that lets you walk the chars in the range</action>
<action type="add" issue="LANG-514">CharRange - add more readable static builder methods</action>
<action type="add">ClassUtils - new isAssignable() methods with autoboxing</action>
<action type="add" issue="LANG-535">ClassUtils - add support to getShortClassName and getPackageName for arrays</action>
<action type="add" issue="LANG-434">DateUtils - add ceiling() method</action>
<action type="add" issue="LANG-486">DateUtils - add parseDateStrictly() method</action>
<action type="add" issue="LANG-466">EqualsBuilder - add reset() method</action>
<action type="add" issue="LANG-461">NumberUtils - add toByte() and toShort() methods</action>
<action type="add" issue="LANG-522">Mutable numbers - add string constructors</action>
<action type="add">MutableBoolean - add toBoolean(), isTrue() and isFalse() methods</action>
<action type="add" issue="LANG-422">StrBuilder - add appendSeparator() methods with an alternative default separator if the StrBuilder is currently empty</action>
<action type="add" issue="LANG-555">SystemUtils - add IS_OS_WINDOWS_7 constant</action>
<action type="add" issue="LANG-554">SystemUtils - add IS_JAVA_1_7 constant for JDK 1.7</action>
<action type="add" issue="LANG-405">StringUtils - add abbreviateMiddle() method</action>
<action type="add" issue="LANG-569">StringUtils - add indexOfIgnoreCase() and lastIndexOfIgnoreCase() methods</action>
<action type="add" issue="LANG-471">StringUtils - add isAllUpperCase() and isAllLowerCase() methods</action>
<action type="add" issue="LANG-469">StringUtils - add lastOrdinalIndexOf() method to complement the existing ordinalIndexOf() method</action>
<action type="add" issue="LANG-438">StringUtils - add repeat() method</action>
<action type="add" issue="LANG-445">StringUtils - add startsWithAny() method</action>
<action type="add" issue="LANG-430">StringUtils - add upperCase(String, Locale) and lowerCase(String, Locale) methods</action>
<action type="add" issue="LANG-416">New Reflection package containing ConstructorUtils, FieldUtils, MemberUtils and MethodUtils</action>
<action type="fix" issue="LANG-567">ArrayUtils - addAll() does not handle mixed types very well</action>
<action type="fix" issue="LANG-494">CharSet - Synchronizing the COMMON Map so that getInstance doesn't miss a put from a subclass in another thread</action>
<action type="fix" issue="LANG-500">ClassUtils - improving performance of getAllInterfaces</action>
<action type="fix" issue="LANG-587">ClassUtils - toClass() throws NullPointerException on null array element</action>
<action type="fix" issue="LANG-530">DateUtils - Fix parseDate() cannot parse ISO8601 dates produced by FastDateFormat</action>
<action type="fix" issue="LANG-440">DateUtils - round() doesn't work correct for Calendar.AM_PM</action>
<action type="fix" issue="LANG-443">DateUtils - improve tests</action>
<action type="fix" issue="LANG-204">Entities - multithreaded initialization</action>
<action type="fix" issue="LANG-506">Entities - missing final modifiers; thread-safety issues</action>
<action type="fix" issue="LANG-76">EnumUtils - getEnum() doesn't work well in 1.5+</action>
<action type="fix" issue="LANG-584">ExceptionUtils - use immutable lock target</action>
<action type="fix" issue="LANG-477">ExtendedMessageFormat - OutOfMemory with a pattern containing single quotes</action>
<action type="fix" issue="LANG-538">FastDateFormat - call getTime() on a calendar to ensure timezone is in the right state</action>
<action type="fix" issue="LANG-547">FastDateFormat - Remove unused field</action>
<action type="fix" issue="LANG-511">LocaleUtils - Initialization of available locales in LocaleUtils can be deferred</action>
<action type="fix" issue="LANG-457">NumberUtils - createNumber() thows a StringIndexOutOfBoundsException when only an "l" is passed in</action>
<action type="fix" issue="LANG-521">NumberUtils - isNumber(String) and createNumber(String) both modified to support '2.'</action>
<action type="fix" issue="LANG-432">StringUtils - improve handling of case-insensitive Strings</action>
<action type="fix" issue="LANG-552">StringUtils - replaceEach() no longer NPEs when null appears in the last String[]</action>
<action type="fix" issue="LANG-460">StringUtils - correct JavaDocs for startsWith() and startsWithIgnoreCase()</action>
<action type="fix" issue="LANG-421">StringEscapeUtils - escapeJava() escapes '/' characters</action>
<action type="fix" issue="LANG-450">StringEscapeUtils - change escapeJavaStyleString() to throw UnhandledException instead swallowing IOException and returning null</action>
<action type="fix" issue="LANG-419">WordUtils - fix StringIndexOutOfBoundsException when lower is greater than the String length</action>
<action type="fix" issue="LANG-523">StrBuilder - Performance improvement by doubling the size of the String in ensureCapacity</action>
<action type="fix" issue="LANG-575">Compare, Equals and HashCode builders - use ArrayUtils to avoid creating a temporary List</action>
<action type="fix" issue="LANG-467">EqualsBuilder - removing the special handling of BigDecimal (LANG-393) to use compareTo instead of equals because it creates an inequality with HashCodeBuilder</action>
<action type="fix" issue="LANG-574">HashCodeBuilder - Performance improvement: check for isArray to short-circuit the 9 instanceof checks.</action>
<action type="fix" issue="LANG-520">HashCodeBuilder - Changing the hashCode() method to return toHashCode()</action>
<action type="fix" issue="LANG-459">HashCodeBuilder - reflectionHashCode() can generate incorrect hashcodes</action>
<action type="fix" issue="LANG-586">HashCodeBuilder and ToStringStyle - use of ThreadLocal causes memory leaks in container environments</action>
<action type="fix" issue="LANG-487">ToStringBuilder - make default style thread-safe</action>
<action type="fix" issue="LANG-472">RandomUtils - nextLong() always produces even numbers</action>
<action type="fix" issue="LANG-592">RandomUtils - RandomUtils tests are failing frequently</action>
</release>
<release version="2.4" date="2008-03-18" description="">
<action type="add" issue="LANG-322">ClassUtils.getShortClassName(String) inefficient</action>
<action type="add" issue="LANG-269">Shouldn't Commons Lang's StringUtils have a "common" string method?</action>

View File

@ -25,10 +25,10 @@
<body>
<menu name="Lang">
<item name="Overview" href="/index.html"/>
<item name="Download" href="http://commons.apache.org/downloads/download_lang.cgi"/>
<item name="Download" href="/download_lang.cgi"/>
<item name="Users guide" href="/userguide.html"/>
<item name="Release History" href="/release-history.html"/>
<item name="Javadoc (2.4 release)" href="api-release/index.html"/>
<item name="Javadoc (2.5 release)" href="api-release/index.html"/>
</menu>
<menu name="Development">

View File

@ -31,6 +31,7 @@ limitations under the License.
You may also be interested in the upgrade notes:
</p>
<ul>
<li>Upgrade <a href="upgradeto2_5.html">from 2.4 to 2.5</a></li>
<li>Upgrade <a href="upgradeto2_4.html">from 2.3 to 2.4</a></li>
<li>Upgrade <a href="upgradeto2_3.html">from 2.2 to 2.3</a></li>
<li>Upgrade <a href="upgradeto2_2.html">from 2.1 to 2.2</a></li>
@ -41,16 +42,12 @@ limitations under the License.
<!-- ================================================== -->
<section name="Maven Goals">
<p>
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.
</p>
<p>
To build the Javadocs, run "maven javadoc".
The result will be in "target/docs/apidocs".
</p>
<p>
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.
</p>
<p>
@ -62,11 +59,11 @@ limitations under the License.
<section name="Ant Goals">
<p>
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.
</p>
<p>
To build the Javadocs, run "ant javadoc".
The result will be in "dist/docs/api".
The result will be in "target/docs/api".
</p>
</section>
<!-- ================================================== -->

View File

@ -102,17 +102,17 @@ limitations under the License.
<ul class="downloads">
<li class="group"><div class="links"><span class="label">Binary</span></div>
<ul>
<li class="download"><a href="[preferred]/commons/lang/binaries/commons-lang-2.4-bin.tar.gz">2.4.tar.gz</a>
<li class="download"><a href="[preferred]/commons/lang/binaries/commons-lang-2.5-bin.tar.gz">2.5.tar.gz</a>
<ul class="attributes">
<li><span class="md5">[<a href="http://www.apache.org/dist/commons/lang/binaries/commons-lang-2.4-bin.tar.gz.md5">md5</a>]</span>
<span class="pgp">[<a href="http://www.apache.org/dist/commons/lang/binaries/commons-lang-2.4-bin.tar.gz.asc">pgp</a>]</span>
<li><span class="md5">[<a href="http://www.apache.org/dist/commons/lang/binaries/commons-lang-2.5-bin.tar.gz.md5">md5</a>]</span>
<span class="pgp">[<a href="http://www.apache.org/dist/commons/lang/binaries/commons-lang-2.5-bin.tar.gz.asc">pgp</a>]</span>
</li>
</ul>
</li>
<li class="download"><a href="[preferred]/commons/lang/binaries/commons-lang-2.4-bin.zip">2.4.zip</a>
<li class="download"><a href="[preferred]/commons/lang/binaries/commons-lang-2.5-bin.zip">2.5.zip</a>
<ul class="attributes">
<li><span class="md5">[<a href="http://www.apache.org/dist/commons/lang/binaries/commons-lang-2.4-bin.zip.md5">md5</a>]</span>
<span class="pgp">[<a href="http://www.apache.org/dist/commons/lang/binaries/commons-lang-2.4-bin.zip.asc">pgp</a>]</span>
<li><span class="md5">[<a href="http://www.apache.org/dist/commons/lang/binaries/commons-lang-2.5-bin.zip.md5">md5</a>]</span>
<span class="pgp">[<a href="http://www.apache.org/dist/commons/lang/binaries/commons-lang-2.5-bin.zip.asc">pgp</a>]</span>
</li>
</ul>
</li>
@ -120,17 +120,17 @@ limitations under the License.
</li>
<li class="group"><div class="links"><span class="label">Source</span></div>
<ul>
<li class="download"><a href="[preferred]/commons/lang/source/commons-lang-2.4-src.tar.gz">2.4.tar.gz</a>
<li class="download"><a href="[preferred]/commons/lang/source/commons-lang-2.5-src.tar.gz">2.5.tar.gz</a>
<ul class="attributes">
<li><span class="md5">[<a href="http://www.apache.org/dist/commons/lang/source/commons-lang-2.4-src.tar.gz.md5">md5</a>]</span>
<span class="pgp">[<a href="http://www.apache.org/dist/commons/lang/source/commons-lang-2.4-src.tar.gz.asc">pgp</a>]</span>
<li><span class="md5">[<a href="http://www.apache.org/dist/commons/lang/source/commons-lang-2.5-src.tar.gz.md5">md5</a>]</span>
<span class="pgp">[<a href="http://www.apache.org/dist/commons/lang/source/commons-lang-2.5-src.tar.gz.asc">pgp</a>]</span>
</li>
</ul>
</li>
<li class="download"><a href="[preferred]/commons/lang/source/commons-lang-2.4-src.zip">2.4.zip</a>
<li class="download"><a href="[preferred]/commons/lang/source/commons-lang-2.5-src.zip">2.5.zip</a>
<ul class="attributes">
<li><span class="md5">[<a href="http://www.apache.org/dist/commons/lang/source/commons-lang-2.4-src.zip.md5">md5</a>]</span>
<span class="pgp">[<a href="http://www.apache.org/dist/commons/lang/source/commons-lang-2.4-src.zip.asc">pgp</a>]</span>
<li><span class="md5">[<a href="http://www.apache.org/dist/commons/lang/source/commons-lang-2.5-src.zip.md5">md5</a>]</span>
<span class="pgp">[<a href="http://www.apache.org/dist/commons/lang/source/commons-lang-2.5-src.zip.asc">pgp</a>]</span>
</li>
</ul>
</li>

View File

@ -48,23 +48,21 @@ together with various <a href="project-reports.html">project reports</a>.
The JavaDoc API documents are available online:
</p>
<ul>
<li>The <a href="api-release/index.html">current release 2.4</a></li>
<li>The <a href="api-2.3/index.html">previous version 2.3</a></li>
<li>The <a href="api-release/index.html">current release 2.5</a></li>
<li>The <a href="api-2.4/index.html">previous version 2.4</a></li>
<li>Older releases - see the <a href="release-history.html">Release History</a> page</li>
</ul>
<p>
The <a href="cvs-usage.html">subversion repository</a> can be
The <a href="source-repository.html">subversion repository</a> can be
<a href="http://svn.apache.org/viewvc/commons/proper/lang/trunk/">browsed</a>.
</p>
</section>
<!-- ================================================== -->
<section name="Releases">
<p>
The latest version 2.4, is JDK 1.2 compatible -
<a href="http://commons.apache.org/downloads/download_lang.cgi">Download now!</a>
(<a href="upgradeto2_4.html">upgrade notes</a>). </p>
<p>Read '<a href="article2_4.html">What's new in 2.4?</a>' for more information. </p>
The latest version 2.5, is JDK 1.3 compatible -
<a href="http://commons.apache.org/lang/download_lang.cgi">Download now!</a>
(<a href="upgradeto2_5.html">upgrade notes</a>). </p>
<p>
For information on previous releases, see the <a href="release-history.html">Release History</a> and to download previous releases, see the <a href="http://archive.apache.org/dist/commons/lang/">Apache Archive</a>.

View File

@ -28,6 +28,7 @@ limitations under the License.
<table>
<tr><th>Version</th><th>Release date</th><th>Javadoc</th><th>Release notes</th></tr>
<tr><td>2.5</td><td>23/Feb/10</td><td><a href="api-2.5/">api-2.5</a></td><td><a href="upgradeto2_5.html">release notes for 2.5</a></td></tr>
<tr><td>2.4</td><td>18/Mar/08</td><td><a href="api-2.4/">api-2.4</a></td><td><a href="upgradeto2_4.html">release notes for 2.4</a></td></tr>
<tr><td>2.3</td><td>13/Feb/07</td><td><a href="api-2.3/">api-2.3</a></td><td><a href="upgradeto2_3.html">release notes for 2.3</a></td></tr>
<tr><td>2.2</td><td>04/Oct/06</td><td><a href="api-2.2/">api-2.2</a></td><td><a href="upgradeto2_2.html">release notes for 2.2</a></td></tr>

View File

@ -0,0 +1,105 @@
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
<properties>
<title>Upgrade from 2.4 to 2.5</title>
<author email="dev@commons.apache.org">Commons Documentation Team</author>
</properties>
<body>
<section name="Upgrade to 2.5">
<p>
These are the release notes and advice for upgrading Commons-Lang from
version 2.4 to version 2.5. <br/><br/>
<source>
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
</source>
</p>
</section>
</body>
</document>