1Licensed to the Apache Software Foundation (ASF) under one or more 2contributor license agreements. See the NOTICE file distributed with 3this work for additional information regarding copyright ownership. 4The ASF licenses this file to You under the Apache License, Version 2.0 5(the "License"); you may not use this file except in compliance with 6the License. You may obtain a copy of the License at 7 8http://www.apache.org/licenses/LICENSE-2.0 9 10Unless required by applicable law or agreed to in writing, software 11distributed under the License is distributed on an "AS IS" BASIS, 12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13See the License for the specific language governing permissions and 14limitations under the License. 15 16============================================================================= 17 18 Commons Lang Package 19 Version 2.5 20 Release Notes 21 22 23INTRODUCTION: 24 25This document contains the release notes for the 2.5 version of Apache Commons Lang. 26Commons Lang is a set of utility functions and reusable components that should be of use in any Java environment. 27 28 29COMPATIBILITY WITH 2.4 30====================== 31Lang 2.5 is binary compatible release with Lang 2.4, containing bug fixes and small enhancements. 32 33Lang 2.5 requires a minimum of JDK 1.3. 34 35 36IMPROVEMENTS IN 2.5 37=================== 38 39 * [LANG-583] - ArrayUtils - add isNotEmpty() methods 40 * [LANG-534] - ArrayUtils - add nullToEmpty() methods 41 * [LANG-454] - CharRange - provide an iterator that lets you walk the chars in the range 42 * [LANG-514] - CharRange - add more readable static builder methods 43 * [ ] - ClassUtils - new isAssignable() methods with autoboxing 44 * [LANG-535] - ClassUtils - add support to getShortClassName and getPackageName for arrays 45 * [LANG-434] - DateUtils - add ceiling() method 46 * [LANG-486] - DateUtils - add parseDateStrictly() method 47 * [LANG-466] - EqualsBuilder - add reset() method 48 * [LANG-461] - NumberUtils - add toByte() and toShort() methods 49 * [LANG-522] - Mutable numbers - add string constructors 50 * [ ] - MutableBoolean - add toBoolean(), isTrue() and isFalse() methods 51 * [LANG-422] - StrBuilder - add appendSeparator() methods with an alternative default separator if the StrBuilder is currently empty 52 * [LANG-555] - SystemUtils - add IS_OS_WINDOWS_7 constant 53 * [LANG-554] - SystemUtils - add IS_JAVA_1_7 constant for JDK 1.7 54 * [LANG-405] - StringUtils - add abbreviateMiddle() method 55 * [LANG-569] - StringUtils - add indexOfIgnoreCase() and lastIndexOfIgnoreCase() methods 56 * [LANG-471] - StringUtils - add isAllUpperCase() and isAllLowerCase() methods 57 * [LANG-469] - StringUtils - add lastOrdinalIndexOf() method to complement the existing ordinalIndexOf() method 58 * [LANG-438] - StringUtils - add repeat() method 59 * [LANG-445] - StringUtils - add startsWithAny() method 60 * [LANG-430] - StringUtils - add upperCase(String, Locale) and lowerCase(String, Locale) methods 61 * [LANG-416] - New Reflection package containing ConstructorUtils, FieldUtils, MemberUtils and MethodUtils 62 63BUG FIXES IN 2.5 64================ 65 66 * [LANG-494] - CharSet - Synchronizing the COMMON Map so that getInstance doesn't miss a put from a subclass in another thread 67 * [LANG-500] - ClassUtils - improving performance of getAllInterfaces 68 * [LANG-587] - ClassUtils - toClass() throws NullPointerException on null array element 69 * [LANG-530] - DateUtils - Fix parseDate() cannot parse ISO8601 dates produced by FastDateFormat 70 * [LANG-440] - DateUtils - round() doesn't work correct for Calendar.AM_PM 71 * [LANG-443] - DateUtils - improve tests 72 * [LANG-204] - Entities - multithreaded initialization 73 * [LANG-506] - Entities - missing final modifiers; thread-safety issues 74 * [LANG-76] - EnumUtils - getEnum() doesn't work well in 1.5+ 75 * [LANG-584] - ExceptionUtils - use immutable lock target 76 * [LANG-477] - ExtendedMessageFormat - OutOfMemory with a pattern containing single quotes 77 * [LANG-538] - FastDateFormat - call getTime() on a calendar to ensure timezone is in the right state 78 * [LANG-547] - FastDateFormat - Remove unused field 79 * [LANG-511] - LocaleUtils - initialization of available locales can be deferred 80 * [LANG-457] - NumberUtils - createNumber() throws a StringIndexOutOfBoundsException for "l" 81 * [LANG-521] - NumberUtils - isNumber(String) and createNumber(String) both modified to support '2.' 82 * [LANG-432] - StringUtils - improve handling of case-insensitive Strings 83 * [LANG-552] - StringUtils - replaceEach() no longer NPEs when null appears in the last String[] 84 * [LANG-460] - StringUtils - correct Javadocs for startsWith() and startsWithIgnoreCase() 85 * [LANG-421] - StringEscapeUtils - escapeJava() escapes '/' characters 86 * [LANG-450] - StringEscapeUtils - change escapeJavaStyleString() to throw UnhandledException instead swallowing IOException 87 * [LANG-419] - WordUtils - fix StringIndexOutOfBoundsException when lower is greater than the String length 88 * [LANG-523] - StrBuilder - Performance improvement by doubling the size of the String in ensureCapacity 89 * [LANG-575] - Compare, Equals and HashCode builders - use ArrayUtils to avoid creating a temporary List 90 * [LANG-467] - EqualsBuilder - removing the special handling of BigDecimal (LANG-393) to use compareTo 91 * [LANG-574] - HashCodeBuilder - Performance improvement: check for isArray to short-circuit the 9 instanceof checks 92 * [LANG-520] - HashCodeBuilder - Changing the hashCode() method to return toHashCode() 93 * [LANG-459] - HashCodeBuilder - reflectionHashCode() can generate incorrect hashcodes 94 * [LANG-586] - HashCodeBuilder and ToStringStyle - use of ThreadLocal causes memory leaks in container environments 95 * [LANG-487] - ToStringBuilder - make default style thread-safe 96 * [LANG-472] - RandomUtils - nextLong() always produces even numbers 97 * [LANG-592] - RandomUtils - RandomUtils tests are failing frequently 98 99