Commons Lang Changes Push down WordUtils to "text" sub-package. Extend exception handling in ConcurrentUtils to runtime exceptions. Some StringUtils methods should take an int character instead of char to use String API features. EqualsBuilder causes StackOverflowException. DefaultExceptionContext overwrites values in recursive situations. ContextedRuntimeException no longer an 'unchecked' exception. Add Builder Interface / Update Builders to Implement It. Javadoc is incorrect for public static int lastIndexOf(String str, String searchStr). ClassUtils.getClass(): Allow Dots as Inner Class Separators. DateUtils equal & compare functions up to most significant field. Remove JDK 1.2/1.3 bug handling in StringUtils.indexOf(String, String, int). Create a basic Pair<L, R> class. exception.DefaultExceptionContext.getFormattedExceptionMessage catches Throwable. Provide an implementation of the ThreadFactory interface. Add new Validate methods. ArrayUtils.add(T[] array, T element) can create unexpected ClassCastException. Do the test cases really still require main() and suite() methods?. @SuppressWarnings("unchecked") is used too generally. Improve StrLookup API documentation. Change Java package name. Change Maven groupId. New TimedSemaphore class. Added validState validation method. Added isAssignableFrom and isInstanceOf validation methods. Add TypeUtils class to provide utility code for working with generic types. Replace Range classes with generic version. Use Iterable on API instead of Collection. Add methods to Validate to check whether the index is valid for the array/list/string. Add ability to create a Future for a constant. Replace StringBuffer with StringBuilder. Make NumericEntityEscaper immutable. issue="LANG-539">Compile commons.lang for CDC 1.1/Foundation 1.1. Add ArrayUtils.toArray to create generic arrays. Validate: support for validating blank strings. Add a concurrent package. Mutable classes should implement an appropriately typed Mutable interface. Better EnumUtils. StringEscapeUtils.unescapeJava should support \u+ notation. Rewrite StringEscapeUtils. bring ArrayUtils.isEmpty to the generics world. Add support for background initialization. Add support for the handling of ExecutionExceptions. Add StringEscapeUtils.escapeText() methods. Addition of ContextedException and ContextedRuntimeException. A generic implementation of the Lazy initialization pattern. Remove code that does not hold enough value to remain. Remove code handled now by the JDK. Possible race-conditions in hashCode of the range classes. StringEscapeUtils.escapeHtml incorrectly converts unicode characters above U+00FFFF into 2 characters. Document where in SVN trunk is. StopWatch does not resist to system time changes. Fixes for thread safety. Refactor Validate.java to eliminate code redundancy. Lower Ascii Characters don't get encoded by Entities.java. StringUtils.emptyToNull. StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20). Remove @deprecateds. Add ClassUtils.isAssignable() variants with autoboxing. Improve Javadoc for StringUtils class. Javadoc incorrect for StringUtils.endsWithIgnoreCase. Investigate for vararg usages. JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder). LeftOf/RightOfNumber in Range convenience methods necessary. ExceptionUtils not thread-safe. ObjectUtils.coalesce. StrBuilder should implement CharSequence and Appendable. StringEscapeUtils.escapeHtml() escapes multibyte characters like Chinese, Japanes, etc. Finally start using generics. StrBuilder does not implement clone(). EnumUtils for JDK 5.0. Wish : method unaccent. MutableBigDecimal and MutableBigInteger. StringEscaper.escapeXml() escapes characters > 0x7f. Depend on JDK 1.5+. 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? FastDateFormat getDateInstance() and getDateTimeInstance() assume Locale.getDefault() won't change OSGi-ify Lang StrBuilder appendFixedWidth does not handle nulls infinite loop in Fraction.reduce when numerator == 0 FastDateFormat thread safety ClassUtils.getShortClassName and ClassUtils.getPackageName and class of array LocaleUtils.toLocale() rejects strings with only language+variant Enum is not thread-safe BooleanUtils.toBoolean() - invalid drop-thru in case statement causes StringIndexOutOfBoundsException ArrayUtils.toClass Why does appendIdentityToString return null? NumberUtils.min(floatArray) returns wrong value if floatArray[0] happens to be Float.NaN Dates.round() behaves incorrectly for minutes and seconds StringUtils.length(String) returns null-safe length adding a StringUtils.replace method that takes an array or List of replacement strings Adding functionality to DateUtils to allow direct setting of various fields. Add escaping for CSV columns to StringEscapeUtils StringUtils: startsWith / endsWith / startsWithIgnoreCase / endsWithIgnoreCase / removeStartIgnoreCase / removeEndIgnoreCase methods Extension to ClassUtils: Obtain the primitive class from a wrapper Javadoc bugs - cannot find object Optimize HashCodeBuilder.append(Object) http://commons.apache.org/lang/developerguide.html "Building" section is incorrect and incomplete Ambiguous / confusing names in StringUtils replace* methods Add new splitByWholeSeparatorPreserveAllTokens() methods to StringUtils Add getStartTime to StopWatch Perhaps add containsAny() methods? Javadoc Example for EqualsBuilder is questionable EqualsBuilder don't compare BigDecimals correctly Split camel case strings Add Calendar flavour format methods to DateFormatUtils Calculating A date fragment in any time-unit Memory usage improvement for StringUtils#getLevenshteinDistance() Add ExtendedMessageFormat to org.apache.commons.lang.text StringEscapeUtils.escapeJavaScript() method did not escape '/' into '\/', it will make IE render page uncorrectly Add toArray() method to IntRange and LongRange classes add SystemUtils.IS_OS_WINDOWS_VISTA field Pointless synchronized in ThreadLocal.initialValue should be removed ToStringStyle javadoc should show examples of styles Documentation bug for ignoreEmptyTokens accessors in StrTokenizer BooleanUtils toBooleanObject javadoc does not match implementation truncateNicely method which avoids truncating in the middle of a word Use of enum prevents a classloader from being garbage collected resuling in out of memory exceptions. NumberUtils.max(byte[]) and NumberUtils.min(byte[]) are missing Null-safe comparison methods for finding most recent / least recent dates. StopWatch: suspend() acts as split(), if followed by stop() StrBuilder.replaceAll and StrBuilder.deleteAll can throw ArrayIndexOutOfBoundsException. Bug in method appendFixedWidthPadRight of class StrBuilder causes an ArrayIndexOutOfBoundsException ToStringBuilder throws StackOverflowError when an Object cycle exists Create more tests to test out the +=31 replacement code in DurationFormatUtils. StrBuilder contains usages of thisBuf.length when they should use size Enum JavaDoc: 1) outline 5.0 native Enum migration 2) warn not to use the switch() , 3) point out approaches for persistence and gui Wrong behavior of Entities.unescape NumberUtils.createNumber throws NumberFormatException for one digit long NullPointerException in isAvailableLocale(Locale) FastDateFormat.mRules is not transient or serializable StringUtils.join should allow you to pass a range for it (so it only joins a part of the array) Refactor Entities methods Tests fail to pass when building with Maven 2 DurationFormatUtils returns wrong result unescapeXml("&12345678;") should be "&12345678;" Optimize StringEscapeUtils.unescapeXml(String) BooleanUtils isNotTrue/isNotFalse Extra StrBuilder methods Add a pair of StringUtils.substringsBetween;String[] methods HashCodeBuilder throws java.lang.StackOverflowError when an object contains a cycle. Wish for StringUtils.join(Collection, *) StrBuilderTest#testReplaceStringString fails. EqualsBuilder.append(Object[], Object[]) crashes with a NullPointerException if an element of the first array is null Serialization - not backwards compatible Replace Clover with Cobertura ValuedEnum.compareTo(Object other) not typesafe - it easily could be... LocaleUtils test fails under Mustang javadoc example for StringUtils.splitByWholeSeparator incorrect PADDING array in StringUtils overflows on '\uffff' ClassUtils.primitiveToWrapper and Void unit test for org.apache.commons.lang.text.StrBuilder DateUtils.truncate method is buggy when dealing with DST switching hours RandomStringUtils.random() family of methods create invalid unicode sequences StringUtils#getLevenshteinDistance() performance is sub-optimal Wrong length check in StrTokenizer.StringMatcher ExceptionUtils goes into infinite loop in getThrowables is throwable.getCause() == throwable FastDateFormat: wrong format for date "01.01.1000" Unclear javadoc for DateUtils.iterator() Memory "leak" in StringUtils StringEscapeUtils should expose escape*() methods taking Writer argument Fraction.toProperString() returns -1/1 for -1 DurationFormatUtils.formatDurationWords "11 <unit>s" gets converted to "11 <unit>" Performance modifications on StringUtils.replace StringEscapeUtils.unescapeHtml skips first entity after standalone ampersand DurationFormatUtils.formatPeriod() returns the wrong result Request for MutableBoolean implementation New method for EqualsBuilder New ExceptionUtils method setCause() Add Mutable<Type> to<Type>() methods. Provides a Class.getPublicMethod which returns public invocable Method Using ReflectionToStringBuilder and excluding secure fields add generic add method to DateUtils Tokenizer Enhancements: reset input string, static CSV/TSV factories Trivial cleanup of javadoc in various files CompositeFormat Performance boost for RandomStringUtils Enhanced Class.forName version Add StringUtils.containsIgnoreCase(...) Support char array converters on ArrayUtils DurationFormatUtils.formatDurationISO() javadoc is missing T in duration string between date and time part Minor build and checkstyle changes Javadoc errors on StringUtils.splitPreserveAllTokens(String, char) EscapeUtil.escapeHtml() should clarify that it does not escape ' chars to &apos; Add methods and tests to StrBuilder replace() length calculation improvement New interpolation features Implementation of escape/unescapeHtml methods with Writer CompareToBuilder excludeFields for reflection method Add WordUtils.getInitials(String) Error in an example in the javadoc of the StringUtils.splitPreserveAllTokens() method ToStringBuilder/HashCodeBuilder javadoc code examples Cannot build tests from latest SVN minor javadoc improvements for StringUtils.stripXxx() methods javadoc for StringUtils.removeEnd is incorrect Minor tweak to fix of bug # 26616 make optional parameters in FastDateFormat really optional Nestable.indexOfThrowable(Class) uses Class.equals() to match buffer under/overrun on Strings.strip, stripStart & stripEnd ToStringStyle.setArrayEnd(String) doesn't replace null with empty string. New class proposal: CharacterEncoding SystemUtils fails init on HP-UX javadoc - 'four basic XML entities' should be 5 (apos is missing) o.a.c.lang.enum.ValuedEnum: 'enum'is a keyword in JDK1.5.0 StringEscapeUtils.unescapeHtml() doesn't handle an empty entity EqualsBuilder.append(Object[], Object[]) incorrectly checks that rhs[i] is instance of lhs[i]'s class Method enums.Enum.equals(Object o) doesn't work correctly. ExceptionUtils.addCauseMethodName(String) does not check for duplicates. Make StopWatch validate state transitions enum package is not compatible with 1.5 jdk WordUtils capitalizeFully() throws a null pointer exception ValuedEnum parseDate class from HttpClient's DateParser class ArrayUtils.isEquals() throws ClassCastException when array1 and array2 are different dimension ClassCastException in Enum.equals(Object) FastDateFormat year bug unbalanced ReflectionToStringBuilder FastDateFormat.getDateInstance(int, Locale) always uses the pattern from the first invocation ReflectionToStringBuilder.toString(null) throws exception by design Make ClassUtils methods null-safe and not throw an IAE. StringUtils.split ignores empty items EqualsBuilder.append(Object[], Object[]) throws NPE ArrayUtils.addAll doesn't always return new array Enum.equals does not handle different class loaders. Add SystemUtils.AWT_TOOLKIT and others. Throwable cause for NotImplementedException ClassUtils.primitivesToWrappers method public static boolean DateUtils.equals(Date dt1, Date dt2) ? Documentation error in StringUtils.replace DateUtils constants should be long DateUtils.truncate() is off by one hour when using a date in DST switch 'zone' StringEscapeUtils.unescapeHtml() doesn't handle hex entities new StringUtils.replaceChars behaves differently from old CharSetUtils.translate last substring returned by StringUtils.split( String, String, int ) is too long Can't subclass EqualsBuilder because isEquals is private new StringUtils.split methods that split on the whole separator string New method for converting a primitive Class to its corresponding wrapper Class Add convenience format(long) methods to FastDateFormat Enum's outer class may not be loaded for EnumUtils WordUtils.capitalizeFully(String str) should take a delimiter Make javadoc crosslinking configurable Minor javadoc fixes for StringUtils.contains(String, String) Error in JavaDoc for StringUtils.chomp(String, String) StringUtils.defaultString: Documentation error Add hashCode-support to class ObjectUtils add another "known method" to ExceptionUtils Enhancement of ExceptionUtils.CAUSE_METHOD_NAMES DateUtils.truncate oddity at the far end of the Date spectrum add getLength() method to ArrayUtils Validate.java: fixes comment skew, removes unused loop counter StringUtils.isAsciiPrintable() ExceptionUtils: new getCause() methodname (for tomcat-exception) fixes 75 typos mutable numbers Javadoc fixes for ClassUtils Add StringUtils.nIndexOf? Javadoc fixes for CharSetUtils Remove redundant check for null separator in StringUtils#join Class and Package Comparators for ClassUtils add remove methods to ArrayUtils WordUtils capitalize improvement add isEmpty method to ArrayUtils lang.math.Fraction class deficiencies Add methods to ArrayUtils: add at end and insert-like ops Add SystemUtils methods for directory properties. Add method that validates Collection elements are a certain type elapsed time formatting utility method Infinite loop in ToStringBuilder.reflectionToString for inner classes NumberUtils.createBigDecimal("") NPE in Sun 1.3.1_08 Rationalize StringUtils slice functions SystemUtils.IS_OS_OS2 Javadoc is wrong A small, but important javadoc fix for Fraction proper whole and numerator Adding tolerance to double[] search methods in ArrayUtils lang.builder classes javadoc edits (mostly typo fixes) StringUtils javadoc and test enhancements SystemUtils.IS_OS_*, IS_JAVA_* are always false. Improve util.Validate tests maven-beta10 checkstyle problem StringUtils.chopNewLine - StringIndexOutOfBoundsException ToStringBuilder doesn't work well in subclasses static option for reversing the stacktrace NullPointerException in CompareToBuilder RandomStringUtils.randomAlpha methods omit 'z' test.time fails in Japanese (non-us) locale. NumberUtils.isNumber allows illegal trailing characters Improve javadoc and overflow behavior of Fraction RandomStringUtils infloops with length > 1 test.lang fails if compiled with non iso-8859-1 locales SystemUtils does not play nice in an Applet time unit tests fail on Sundays java.lang.ExceptionInInitializerError thrown by JVMRandom constructor StringUtils.chomp does not match Perl patch and test case fixing problem with RandomStringUtils.random() General case: infinite loop: ToStringBuilder.reflectionToString Should ToStringBuilder.reflectionToString handle arrays? EnumUtils nit: The import java.io.Serializable is never used Example in Javadoc for ToStringBuilder wrong for append. Added class hierachy support to HashCodeBuilder.reflectionHashCode() ExceptionUtils new methods. Infinite loop in StringUtils.replace(text, repl, with) + FIX StackOverflow due to ToStringBuilder No Javadoc for NestableDelegate Specify initial size for Enum's HashMap. Enum does not support inner sub-classes Removed compile warning in ObjectUtils SystemUtils.IS_JAVA_1_5 Javadoc is wrong NumberRange inaccurate for Long, etc. Hierarchy support in ToStringBuilder.reflectionToString() StringUtils.countMatches loops forever if substring empty javadoc fixes (remove @links to non-public identifiers) Add javadoc examples and tests for StringUtils Make NumberUtils null handling consistent Unused field 'startFinal' in DateIterator reduce object creation in ToStringBuilder Improved tests, javadoc for CharSetUtils, StringEscapeUtils NumberUtils min/max, BooleanUtils.xor, and ArrayUtils toPrimitive and toObject Javadoc, tests improvements for CharSet, CharSetUtils StringUtil enhancement Javadoc nit Additional Lang Method Suggestions Make NestableDelegate methods public instead of package private Missing @since tags Refactored reflection feature of ToStringBuilder into new ReflectionToStringBuilder Typo in documentation Patch for javadocs Add join(..., char c) to StringUtils (and some performance fixes). Even contains tests! Resurrect the WordWrapUtils from commons-sandbox/utils EnumTest fails on Linux Sun JDK 1.3.0 What to do with FastDateFormat unused private constructors Added class hierachy support to CompareToBuilder.reflectionCompare() Removed compile warning in FastDateFormat typo in the javadoc example code MethodUtils: Removed unused code/unused local vars. Hierarchy support in EqualsBuilder.reflectionEquals() JavaDoc Errata ArrayUtils.contains() More flexibility for getRootCause in ExceptionUtils NumberRange.getMaximum returns minimum Enum constructor validations NestableException/Delegate is not serializable split using null and max less than actual token count adds "null" ExceptionUtils cannot handle J2EE-Exception in a default way