Adding 2.x release notes

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@1156018 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Henri Yandell 2011-08-10 04:04:22 +00:00
parent 03bcf46acd
commit 2b0a81b899
7 changed files with 1264 additions and 0 deletions

View File

@ -0,0 +1,661 @@
$Id: RELEASE-NOTES.txt 137634 2003-08-19 02:39:59Z bayard $
Commons Lang Package
Version 2.0
Release Notes
INTRODUCTION:
This document contains the release notes for this version of the Commons
Lang package. Commons Lang is a set of utility functions and reusable
components that should be a help in any Java environment.
This release has involved a major clean and tidy exercise.
Javadoc and Tests are now much more thorough.
All methods should now be much clearer in what they do in unusual cases.
INCOMPATIBLE CHANGES:
Some StringUtils methods have changed functionality from 1.0:
isEmpty()
chomp(String)
chomp(String,String)
swapCase(String)
Numerous other methods have changed null handling to accept nulls gracefully.
As with all major version releases, check your code for incompatibilities.
NEW FEATURES:
Since the release of the 1.0 package the following classes have been added:
lang package:
ArrayUtils
BitField
BooleanUtils
CharRange (previously package scoped)
ClassUtils
StringEscapeUtils
WordUtils
IllegalClassException
IncompleteArgumentException
NotImplementedException
NullArgumentException
SerializationException
UnhandledException
Validate
math sub-package:
IntRange
LongRange
Range
DoubleRange
JVMRandom
NumberRange
FloatRange
NumberUtils
Fraction
RandomUtils
time sub-package:
DateFormatUtils
FastDateFormat
DateUtils
StopWatch
Since the release of the 1.0 package the following classes have been changed:
lang:
CharSet:
Added factory method, equals and hashCode().
Better defined and tested the set syntax.
CharSetUtils:
added keep method: keep any characters specified in the CharSet string
RandomStringUtils:
random method: overloaded to allow passing in of a Random class
SerializationUtils:
added empty constructor
StringUtils:
isEmpty() changed to not trim
chomp() changed to be more like Perl.
swapCase() no longer word based, but no difference if you pass in ASCII
Various methods changed in the handling of null (less exceptions).
Many new methods.
Various methods deprecated.
SystemUtils:
isJavaVersionAtLeast(int) added. getJavaVersion() deprecated.
host of new constants.
enum:
Enum:
getEnumClass(Class) added
EnumUtils:
Removed irrelevant Comparable/Serializable interfaces.
exception:
NestableDelegate:
Gained many new methods for dissecting an Exception.
ExceptionUtils:
Gained many new methods to improve handling of nested stack traces.
builder:
ReflectionToStringBuilder:
Handy class added for creating default toStrings.
All other builder classes received a set of new methods.
BUG FIXES:
ID Sev Pri Plt Owner State Result Summary
13367 [PATCH] StringUtil enhancement
13391 Javadoc nit
13771 Additional Lang Method Suggestions
14306 NullPointerException in CompareToBuilder
14357 static option for reversing the stacktrace
14447 ToStringBuilder doesn't work well in subclasses
14883 StringUtils.countMatches loops forever if substring empty
14884 NumberRange inaccurate for Long, etc.
14985 More flexibility for getRootCause in ExceptionUtils
15154 SystemUtils.IS_JAVA_1_5 Javadoc is wrong
15257 Hierarchy support in ToStringBuilder.reflectionToString()
15438 ArrayUtils.contains()
15439 Enum does not support inner sub-classes
15986 Infinite loop in ToStringBuilder.reflectionToString for inne
16076 Example in Javadoc for ToStringBuilder wrong for append.
16193 Hierarchy support in EqualsBuilder.reflectionEquals()
16202 typo in the javadoc example code
16204 Infinite loop in StringUtils.replace(text, repl, with) + FIX
16227 Added class hierachy support to CompareToBuilder.reflectionC
16228 Added class hierachy support to HashCodeBuilder.reflectionHa
16284 MethodUtils: Removed unused code/unused local vars.
16341 No Javadoc for NestableDelegate
16622 Removed compile warning in FastDateFormat
16669 JavaDoc Errata
16676 StackOverflow due to ToStringBuilder
16689 ExceptionUtils new methods.
16690 Specify initial size for Enum's HashMap.
16787 Removed compile warning in ObjectUtils
17250 [Lang] Should ToStringBuilder.reflectionToString handle arra
17654 EnumUtils nit: The import java.io.Serializable is never used
17882 Add join(..., char c) to StringUtils (and some performance f
18077 StringUtils.chomp does not match Perl
18723 RandomStringUtils infloops with length < 1
18836 test.lang fails if compiled with non iso-8859-1 locales
18948 Resurrect the WordWrapUtils from commons-sandbox/utils
19296 [Lang] What to do with FastDateFormat unused private constru
19364 [Lang] time unit tests fail on Sundays
19756 [lang] java.lang.ExceptionInInitializerError thrown by JVMRa
19880 [lang] patch and test case fixing problem with RandomStringU
20165 [LANG] SystemUtils does not play nice in an Applet
20538 [lang] NumberUtils.isNumber allows illegal trailing characte
20592 [lang] RandomStringUtils.randomAlpha methods omit 'z'
20603 [lang] Make NestableDelegate methods public instead of packa
20632 Refactored reflection feature of ToStringBuilder into new Re
20652 StringUtils.chopNewLine - StringIndexOutOfBoundsException
21021 [PATCH] reduce object creation in ToStringBuilder
21068 [lang] [PATCH] NumberUtils min/max, BooleanUtils.xor, and Ar
21099 [lang][PATCH] Unused field 'startFinal' in DateIterator
21715 The javadoc says "Mac" instead of "OS/2"
21734 [PATCH] all NumberUtils.createXXX(String) methods handle null
21750 [lang] StringUtils javadoc and test enhancements
21758 [lang] lang.builder classes javadoc edits (mostly typo fixes)
21797 [lang] Add javadoc examples and tests for StringUtils
21809 [lang] maven-beta10 checkstyle problem
21904 NumberUtils.createBigDecimal("") NPE in Sun 1.3.1_08
21952 [lang] Improved tests, javadoc for CharSetUtils, StringEscapeUtils
22091 Adding tolerance to double[] search methods in ArrayUtils
22094 A small, but important javadoc fix for Fraction proper whole/numerator
22095 [lang] Javadoc, tests improvements for CharSet, CharSetUtils
22098 [lang] Improve util.Validate tests
22245 [lang] test.time fails in Japanese (non-us) locale.
22286 [lang] Missing @since tags
22367 Typo in documentation
22386 [lang] Improve javadoc and overflow behavior of Fraction
DEPRECATIONS:
lang:
NumberRange:
now deprecated, see math subpackage
NumberUtils:
now deprecated, see math subpackage
CHANGES: [In 'diff' format]
Jar changes
===========
> org.apache.commons.lang.math.Range
> org.apache.commons.lang.math.FloatRange
> org.apache.commons.lang.math.NumberUtils
> org.apache.commons.lang.math.JVMRandom
> org.apache.commons.lang.math.IntRange
> org.apache.commons.lang.math.LongRange
> org.apache.commons.lang.math.DoubleRange
> org.apache.commons.lang.math.NumberRange
> org.apache.commons.lang.math.Fraction
> org.apache.commons.lang.math.RandomUtils
> org.apache.commons.lang.time.FastDateFormat
> org.apache.commons.lang.time.DateUtils$DateIterator
> org.apache.commons.lang.time.DateUtils
> org.apache.commons.lang.time.FastDateFormat$UnpaddedMonthField
> org.apache.commons.lang.time.FastDateFormat$StringLiteral
> org.apache.commons.lang.time.FastDateFormat$TwelveHourField
> org.apache.commons.lang.time.FastDateFormat$NumberRule
> org.apache.commons.lang.time.FastDateFormat$CharacterLiteral
> org.apache.commons.lang.time.FastDateFormat$TimeZoneNumberRule
> org.apache.commons.lang.time.FastDateFormat$TimeZoneNameRule
> org.apache.commons.lang.time.DateFormatUtils
> org.apache.commons.lang.time.FastDateFormat$TwoDigitMonthField
> org.apache.commons.lang.time.DurationFormatUtils
> org.apache.commons.lang.time.FastDateFormat$TimeZoneDisplayKey
> org.apache.commons.lang.time.FastDateFormat$UnpaddedNumberField
> org.apache.commons.lang.time.FastDateFormat$PaddedNumberField
> org.apache.commons.lang.time.StopWatch
> org.apache.commons.lang.time.FastDateFormat$TwentyFourHourField
> org.apache.commons.lang.time.FastDateFormat$Rule
> org.apache.commons.lang.time.FastDateFormat$TwoDigitNumberField
> org.apache.commons.lang.time.FastDateFormat$TextField
> org.apache.commons.lang.time.FastDateFormat$Pair
> org.apache.commons.lang.time.FastDateFormat$TwoDigitYearField
> org.apache.commons.lang.util.IdentifierUtils$StringNumericIdentifierFactory
> org.apache.commons.lang.util.IdentifierUtils$StringSessionIdentifierFactory
> org.apache.commons.lang.util.IdentifierUtils$LongNumericIdentifierFactory
> org.apache.commons.lang.util.IdentifierUtils$StringAlphanumericIdentifierFactory
> org.apache.commons.lang.util.Validate
> org.apache.commons.lang.util.LongIdentifierFactory
> org.apache.commons.lang.util.IdentifierUtils$1
> org.apache.commons.lang.util.StringIdentifierFactory
> org.apache.commons.lang.util.IdentifierUtils
> org.apache.commons.lang.util.IdentifierFactory
> org.apache.commons.lang.util.BitField
> org.apache.commons.lang.Entities
> org.apache.commons.lang.Entities$LookupEntityMap
> org.apache.commons.lang.NotImplementedException
> org.apache.commons.lang.NullArgumentException
< org.apache.commons.lang.ObjectUtils$1
---
> org.apache.commons.lang.StringPrintWriter
> org.apache.commons.lang.UnhandledException
> org.apache.commons.lang.Entities$HashEntityMap
> org.apache.commons.lang.Entities$ArrayEntityMap
> org.apache.commons.lang.Entities$EntityMap
> org.apache.commons.lang.IntHashMap
> org.apache.commons.lang.BooleanUtils
> org.apache.commons.lang.IncompleteArgumentException
> org.apache.commons.lang.Entities$PrimitiveEntityMap
> org.apache.commons.lang.Entities$TreeEntityMap
> org.apache.commons.lang.WordUtils
> org.apache.commons.lang.StringEscapeUtils
> org.apache.commons.lang.ArrayUtils
> org.apache.commons.lang.Entities$BinaryEntityMap
> org.apache.commons.lang.ClassUtils
> org.apache.commons.lang.IntHashMap$Entry
> org.apache.commons.lang.IllegalClassException
> org.apache.commons.lang.builder.ReflectionToStringBuilder$1
> org.apache.commons.lang.builder.ReflectionToStringBuilder
> org.apache.commons.lang.Entities$MapIntMap
Class changes
=============
org.apache.commons.lang.enum.EnumUtils
--------------------
< public abstract class org.apache.commons.lang.enum.EnumUtils extends java.lang.Object implements java.lang.Comparable, java.io.Serializable {
---
> public class org.apache.commons.lang.enum.EnumUtils extends java.lang.Object {
> public org.apache.commons.lang.enum.EnumUtils();
org.apache.commons.lang.enum.Enum$Entry
--------------------
> final java.util.Map unmodifiableMap;
> final java.util.List unmodifiableList;
org.apache.commons.lang.enum.Enum
--------------------
> protected transient java.lang.String iToString;
> static java.lang.Class class$org$apache$commons$lang$enum$ValuedEnum;
> public java.lang.Class getEnumClass();
org.apache.commons.lang.enum.ValuedEnum
--------------------
> static {};
org.apache.commons.lang.StringUtils
--------------------
> public static final java.lang.String EMPTY;
> public static boolean isEmpty(java.lang.String);
> public static boolean isNotEmpty(java.lang.String);
> public static boolean isBlank(java.lang.String);
> public static boolean isNotBlank(java.lang.String);
< public static java.lang.String deleteSpaces(java.lang.String);
< public static java.lang.String deleteWhitespace(java.lang.String);
< public static boolean isNotEmpty(java.lang.String);
< public static boolean isEmpty(java.lang.String);
---
> public static java.lang.String trimToNull(java.lang.String);
> public static java.lang.String trimToEmpty(java.lang.String);
> public static java.lang.String strip(java.lang.String);
> public static java.lang.String stripToNull(java.lang.String);
> public static java.lang.String stripToEmpty(java.lang.String);
> public static java.lang.String strip(java.lang.String, java.lang.String);
> public static java.lang.String stripStart(java.lang.String, java.lang.String);
> public static java.lang.String stripEnd(java.lang.String, java.lang.String);
> public static java.lang.String stripAll(java.lang.String[])[];
> public static java.lang.String stripAll(java.lang.String[], java.lang.String)[];
> public static int indexOf(java.lang.String, char);
> public static int indexOf(java.lang.String, char, int);
> public static int indexOf(java.lang.String, java.lang.String);
> public static int indexOf(java.lang.String, java.lang.String, int);
> public static int lastIndexOf(java.lang.String, char);
> public static int lastIndexOf(java.lang.String, char, int);
> public static int lastIndexOf(java.lang.String, java.lang.String);
> public static int lastIndexOf(java.lang.String, java.lang.String, int);
> public static boolean contains(java.lang.String, char);
> public static boolean contains(java.lang.String, java.lang.String);
> public static int indexOfAny(java.lang.String, char[]);
> public static int indexOfAny(java.lang.String, java.lang.String);
> public static int indexOfAnyBut(java.lang.String, char[]);
> public static int indexOfAnyBut(java.lang.String, java.lang.String);
> public static boolean containsOnly(java.lang.String, char[]);
> public static boolean containsOnly(java.lang.String, java.lang.String);
> public static boolean containsNone(java.lang.String, char[]);
> public static boolean containsNone(java.lang.String, java.lang.String);
> public static java.lang.String substringBefore(java.lang.String, java.lang.String);
> public static java.lang.String substringAfter(java.lang.String, java.lang.String);
> public static java.lang.String substringBeforeLast(java.lang.String, java.lang.String);
> public static java.lang.String substringAfterLast(java.lang.String, java.lang.String);
> public static java.lang.String substringBetween(java.lang.String, java.lang.String);
> public static java.lang.String substringBetween(java.lang.String, java.lang.String, java.lang.String);
> public static java.lang.String getNestedString(java.lang.String, java.lang.String);
> public static java.lang.String getNestedString(java.lang.String, java.lang.String, java.lang.String);
> public static java.lang.String split(java.lang.String, char)[];
> public static java.lang.String join(java.lang.Object[]);
> public static java.lang.String join(java.lang.Object[], char);
> public static java.lang.String join(java.util.Iterator, char);
> public static java.lang.String deleteSpaces(java.lang.String);
> public static java.lang.String deleteWhitespace(java.lang.String);
> public static java.lang.String replaceChars(java.lang.String, char, char);
> public static java.lang.String replaceChars(java.lang.String, java.lang.String, java.lang.String);
< public static java.lang.String center(java.lang.String, int);
< public static java.lang.String center(java.lang.String, int, java.lang.String);
---
> public static java.lang.String overlay(java.lang.String, java.lang.String, int, int);
> public static java.lang.String rightPad(java.lang.String, int, char);
> public static java.lang.String leftPad(java.lang.String, int, char);
< public static java.lang.String strip(java.lang.String);
< public static java.lang.String strip(java.lang.String, java.lang.String);
< public static java.lang.String stripAll(java.lang.String[])[];
< public static java.lang.String stripAll(java.lang.String[], java.lang.String)[];
< public static java.lang.String stripEnd(java.lang.String, java.lang.String);
< public static java.lang.String stripStart(java.lang.String, java.lang.String);
---
> public static java.lang.String center(java.lang.String, int);
> public static java.lang.String center(java.lang.String, int, char);
> public static java.lang.String center(java.lang.String, int, java.lang.String);
< public static java.lang.String uncapitalise(java.lang.String);
---
> public static java.lang.String capitalize(java.lang.String);
> public static java.lang.String uncapitalize(java.lang.String);
> public static java.lang.String uncapitalise(java.lang.String);
< public static java.lang.String getNestedString(java.lang.String, java.lang.String);
< public static java.lang.String getNestedString(java.lang.String, java.lang.String, java.lang.String);
> public static boolean isWhitespace(java.lang.String);
> public static java.lang.String reverseDelimited(java.lang.String, char);
> public static java.lang.String abbreviate(java.lang.String, int);
> public static java.lang.String abbreviate(java.lang.String, int, int);
> public static java.lang.String difference(java.lang.String, java.lang.String);
> public static int differenceAt(java.lang.String, java.lang.String);
< public static boolean containsOnly(java.lang.String, char[]);
---
> static {};
org.apache.commons.lang.ObjectUtils
--------------------
> public static java.lang.StringBuffer appendIdentityToString(java.lang.StringBuffer, java.lang.Object);
> public static java.lang.String toString(java.lang.Object);
> public static java.lang.String toString(java.lang.Object, java.lang.String);
< org.apache.commons.lang.ObjectUtils.Null(org.apache.commons.lang.ObjectUtils$1);
---
> org.apache.commons.lang.ObjectUtils.Null();
> static {};
org.apache.commons.lang.exception.NestableDelegate
--------------------
> public static boolean topDown;
> public static boolean trimStackFrames;
< org.apache.commons.lang.exception.NestableDelegate(org.apache.commons.lang.exception.Nestable);
< java.lang.String getMessage(int);
< java.lang.String getMessage(java.lang.String);
< java.lang.String getMessages()[];
< java.lang.Throwable getThrowable(int);
< int getThrowableCount();
< java.lang.Throwable getThrowables()[];
< int indexOfThrowable(java.lang.Class, int);
---
> public org.apache.commons.lang.exception.NestableDelegate(org.apache.commons.lang.exception.Nestable);
> public java.lang.String getMessage(int);
> public java.lang.String getMessage(java.lang.String);
> public java.lang.String getMessages()[];
> public java.lang.Throwable getThrowable(int);
> public int getThrowableCount();
> public java.lang.Throwable getThrowables()[];
> public int indexOfThrowable(java.lang.Class, int);
> protected java.lang.String getStackFrames(java.lang.Throwable)[];
> protected void trimStackFrames(java.util.List);
org.apache.commons.lang.exception.ExceptionUtils
--------------------
< protected static final java.lang.String CAUSE_METHOD_NAMES[];
< protected static final java.lang.Object CAUSE_METHOD_PARAMS[];
---
> static final java.lang.String WRAPPED_MARKER;
< protected org.apache.commons.lang.exception.ExceptionUtils();
---
> public org.apache.commons.lang.exception.ExceptionUtils();
> public static void addCauseMethodName(java.lang.String);
> public static boolean isThrowableNested();
> public static boolean isNestedThrowable(java.lang.Throwable);
> public static void printRootCauseStackTrace(java.lang.Throwable);
> public static void printRootCauseStackTrace(java.lang.Throwable, java.io.PrintStream);
> public static void printRootCauseStackTrace(java.lang.Throwable, java.io.PrintWriter);
> public static java.lang.String getRootCauseStackTrace(java.lang.Throwable)[];
> public static void removeCommonFrames(java.util.List, java.util.List);
> public static java.lang.String getFullStackTrace(java.lang.Throwable);
> static java.util.List getStackFrameList(java.lang.Throwable);
org.apache.commons.lang.CharRange
--------------------
< class org.apache.commons.lang.CharRange extends java.lang.Object {
---
> public final class org.apache.commons.lang.CharRange extends java.lang.Object implements java.io.Serializable {
> public org.apache.commons.lang.CharRange(char,boolean);
< public org.apache.commons.lang.CharRange(java.lang.String,java.lang.String);
---
> public org.apache.commons.lang.CharRange(char,char,boolean);
< public void setStart(char);
< public void setEnd(char);
< public boolean isRange();
< public boolean inRange(char);
< public void setNegated(boolean);
---
> public boolean contains(char);
> public boolean contains(org.apache.commons.lang.CharRange);
> public boolean equals(java.lang.Object);
> public int hashCode();
> static {};
org.apache.commons.lang.ObjectUtils$1
--------------------
< Compiled from ObjectUtils.java
< class org.apache.commons.lang.ObjectUtils$1 extends java.lang.Object {
< }
---
> Class 'org.apache.commons.lang.ObjectUtils$1' has been removed
org.apache.commons.lang.ObjectUtils$Null
--------------------
< org.apache.commons.lang.ObjectUtils.Null(org.apache.commons.lang.ObjectUtils$1);
---
> org.apache.commons.lang.ObjectUtils.Null();
> static {};
org.apache.commons.lang.SystemUtils
--------------------
> public static final java.lang.String FILE_ENCODING;
> public static final java.lang.String JAVA_RUNTIME_NAME;
> public static final java.lang.String JAVA_RUNTIME_VERSION;
> public static final java.lang.String JAVA_VM_INFO;
> public static final java.lang.String USER_COUNTRY;
> public static final java.lang.String USER_LANGUAGE;
> public static final float JAVA_VERSION_FLOAT;
> public static final int JAVA_VERSION_INT;
> public static final boolean IS_OS_AIX;
> public static final boolean IS_OS_HP_UX;
> public static final boolean IS_OS_IRIX;
> public static final boolean IS_OS_LINUX;
> public static final boolean IS_OS_MAC;
> public static final boolean IS_OS_MAC_OSX;
> public static final boolean IS_OS_OS2;
> public static final boolean IS_OS_SOLARIS;
> public static final boolean IS_OS_SUN_OS;
> public static final boolean IS_OS_WINDOWS;
> public static final boolean IS_OS_WINDOWS_2000;
> public static final boolean IS_OS_WINDOWS_95;
> public static final boolean IS_OS_WINDOWS_98;
> public static final boolean IS_OS_WINDOWS_ME;
> public static final boolean IS_OS_WINDOWS_NT;
> public static final boolean IS_OS_WINDOWS_XP;
> public static boolean isJavaVersionAtLeast(int);
org.apache.commons.lang.SerializationUtils
--------------------
> public org.apache.commons.lang.SerializationUtils();
org.apache.commons.lang.RandomStringUtils
--------------------
> public static java.lang.String random(int, int, int, boolean, boolean, char[], java.util.Random);
org.apache.commons.lang.CharSet
--------------------
< public class org.apache.commons.lang.CharSet extends java.lang.Object {
---
> public class org.apache.commons.lang.CharSet extends java.lang.Object implements java.io.Serializable {
> public static final org.apache.commons.lang.CharSet EMPTY;
> public static final org.apache.commons.lang.CharSet ASCII_ALPHA;
> public static final org.apache.commons.lang.CharSet ASCII_ALPHA_LOWER;
> public static final org.apache.commons.lang.CharSet ASCII_ALPHA_UPPER;
> public static final org.apache.commons.lang.CharSet ASCII_NUMERIC;
> protected static final java.util.Map COMMON;
> public static org.apache.commons.lang.CharSet getInstance(java.lang.String);
> protected org.apache.commons.lang.CharSet(java.lang.String);
< public boolean contains(char);
> public org.apache.commons.lang.CharRange getCharRanges()[];
> public boolean contains(char);
> public boolean equals(java.lang.Object);
> public int hashCode();
> static {};
org.apache.commons.lang.CharSetUtils
--------------------
> public static java.lang.String keep(java.lang.String, java.lang.String);
> public static java.lang.String keep(java.lang.String, java.lang.String[]);
org.apache.commons.lang.builder.ToStringBuilder
--------------------
< public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object);
< public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle);
< public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle,java.lang.StringBuffer);
< public static void setDefaultStyle(org.apache.commons.lang.builder.ToStringStyle);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object, boolean);
< public org.apache.commons.lang.builder.ToStringBuilder append(long);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long);
< public org.apache.commons.lang.builder.ToStringBuilder append(int);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int);
< public org.apache.commons.lang.builder.ToStringBuilder append(short);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short);
< public org.apache.commons.lang.builder.ToStringBuilder append(char);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char);
---
> public static java.lang.String reflectionToString(java.lang.Object, org.apache.commons.lang.builder.ToStringStyle, boolean, java.lang.Class);
> public static void setDefaultStyle(org.apache.commons.lang.builder.ToStringStyle);
> public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object);
> public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle);
> public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle,java.lang.StringBuffer);
> public org.apache.commons.lang.builder.ToStringBuilder append(boolean);
> public org.apache.commons.lang.builder.ToStringBuilder append(boolean[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, byte);
---
> public org.apache.commons.lang.builder.ToStringBuilder append(byte[]);
> public org.apache.commons.lang.builder.ToStringBuilder append(char);
> public org.apache.commons.lang.builder.ToStringBuilder append(char[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, double);
---
> public org.apache.commons.lang.builder.ToStringBuilder append(double[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, float);
< public org.apache.commons.lang.builder.ToStringBuilder append(boolean);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[], boolean);
< public org.apache.commons.lang.builder.ToStringBuilder append(long[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[], boolean);
---
> public org.apache.commons.lang.builder.ToStringBuilder append(float[]);
> public org.apache.commons.lang.builder.ToStringBuilder append(int);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[], boolean);
---
> public org.apache.commons.lang.builder.ToStringBuilder append(long);
> public org.apache.commons.lang.builder.ToStringBuilder append(long[]);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object[]);
> public org.apache.commons.lang.builder.ToStringBuilder append(short);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[], boolean);
< public org.apache.commons.lang.builder.ToStringBuilder append(char[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[], boolean);
< public org.apache.commons.lang.builder.ToStringBuilder append(byte[]);
---
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[]);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[], boolean);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, byte);
< public org.apache.commons.lang.builder.ToStringBuilder append(double[]);
---
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[]);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[], boolean);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, double);
< public org.apache.commons.lang.builder.ToStringBuilder append(float[]);
---
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, float);
< public org.apache.commons.lang.builder.ToStringBuilder append(boolean[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[]);
< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[], boolean);
---
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[]);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[], boolean);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[]);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[], boolean);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object, boolean);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[]);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[], boolean);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[]);
> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[], boolean);
> public org.apache.commons.lang.builder.ToStringBuilder appendAsObjectToString(java.lang.Object);
> public org.apache.commons.lang.builder.ToStringBuilder appendSuper(java.lang.String);
> public org.apache.commons.lang.builder.ToStringBuilder appendToString(java.lang.String);
> public org.apache.commons.lang.builder.ToStringStyle getStyle();
> public java.lang.Object getObject();
org.apache.commons.lang.builder.StandardToStringStyle
--------------------
> public boolean isUseShortClassName();
> public void setUseShortClassName(boolean);
> public boolean isFieldSeparatorAtStart();
> public void setFieldSeparatorAtStart(boolean);
> public boolean isFieldSeparatorAtEnd();
> public void setFieldSeparatorAtEnd(boolean);
org.apache.commons.lang.builder.ToStringStyle
--------------------
> public void appendSuper(java.lang.StringBuffer, java.lang.String);
> public void appendToString(java.lang.StringBuffer, java.lang.String);
> protected void removeLastFieldSeparator(java.lang.StringBuffer);
> protected void reflectionAppendArrayDetail(java.lang.StringBuffer, java.lang.String, java.lang.Object);
> protected boolean isUseShortClassName();
> protected void setUseShortClassName(boolean);
> protected boolean isFieldSeparatorAtStart();
> protected void setFieldSeparatorAtStart(boolean);
> protected boolean isFieldSeparatorAtEnd();
> protected void setFieldSeparatorAtEnd(boolean);
org.apache.commons.lang.builder.HashCodeBuilder
--------------------
> public static int reflectionHashCode(int, int, java.lang.Object, boolean, java.lang.Class);
> public org.apache.commons.lang.builder.HashCodeBuilder appendSuper(int);
org.apache.commons.lang.builder.CompareToBuilder
--------------------
> public static int reflectionCompare(java.lang.Object, java.lang.Object, boolean, java.lang.Class);
> public org.apache.commons.lang.builder.CompareToBuilder appendSuper(int);
> public org.apache.commons.lang.builder.CompareToBuilder append(java.lang.Object, java.lang.Object, java.util.Comparator);
> public org.apache.commons.lang.builder.CompareToBuilder append(java.lang.Object[], java.lang.Object[], java.util.Comparator);
org.apache.commons.lang.builder.EqualsBuilder
--------------------
> public static boolean reflectionEquals(java.lang.Object, java.lang.Object, boolean, java.lang.Class);
> public org.apache.commons.lang.builder.EqualsBuilder appendSuper(boolean);

View File

@ -0,0 +1,135 @@
$Id: RELEASE-NOTES.txt 179435 2005-06-01 22:19:20Z stevencaswell $
Commons Lang Package
Version 2.1
Release Notes
INTRODUCTION:
This document contains the release notes for the 2.1 version of Apache Jakarta Commons Lang.
Commons Lang is a set of utility functions and reusable components that
should be of use in any Java environment.
INCOMPATIBLE CHANGES:
- 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. its 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:
- The enum package has been renamed to enums for JDK1.5 compilance.
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_*.
NEW FEATURES:
New:
- Mutable package - contains basic classes that hold an Object or primitive
and provide both get and set methods.
- DurationFormatUtils - provides various methods for formatting durations
- CharEncoding - definitions of constants for character encoding work
- CharUtils - utilities for working with characters
Updated:
- ArrayUtils - many more methods, especially List-like methods
- BooleanUtils - isTrue and isFalse methods that handle null
- ClassUtils - primitive to wrapper class conversion methods
- ClassUtils - class name comparator
- IllegalClassException - extra constructor for common instanceof case
- NotImplementedException - supports nested exceptions
- ObjectUtils - hashcode method handling null
- StringUtils - isAsciiPrintable to check the contents of a string
-- ordinalIndexOf to find the nth index of a string
-- various remove methods to remove parts of a string
-- various split methods to provide more control over splitting a string
-- defaultIfEmpty to default a string if null or empty
- SystemUtils - methods to get system properties as File objects
-- extra constants representing system properties
- Validate - new methods to check whether all elements in a collection are of a specific type
- WordUtils - new methods to capitalize based on a set of specified delimiters
- EqualsBuilder - now provides setter to internal state
- ToStringStyle - new style, short prefix style
- ReflectionToStringBuilder - more flags to control the output with regards to statics
- ExceptionUtils - added indexOfType methods that check subclasses, thus leaving the existing
indexOfThrowable method untouched (see incompatible changes section)
- NumberUtils - various string to number parsing methods added
- DateUtils - methods added to compare dates in various ways
-- method to parse a date string using multiple patterns
- FastDateFormat - extra formatting methods that take in a millisecond long value
-- additional static factory methods
- StopWatch - new methods for split behaviour
BUG FIXES:
19331 General case: infinite loop: ToStringBuilder.reflectionToString
23174 EqualsBuilder.append(Object[], Object[]) throws NPE
23356 Make DurationFormatUtils public!
23557 WordUtils.capitalizeFully(String str) should take a delimiters
23683 New method for converting a primitive Class to its corresponding wrapper
23430 Minor javadoc fixes for StringUtils.contains(String, String)
23590 make optional parameters in FastDateFormat really optional
24056 Documentation error in StringUtils.replace
25227 StringEscapeUtils.unescapeHtml() doesn't handle hex entities
25454 new StringUtils.replaceChars behaves differently from old Ch
25560 DateUtils.truncate() is off by one hour when using a date in DST switch 'zone'
25627 DateUtils constants should be long
25683 Add method that validates Collection elements are a correct
25849 Add SystemUtils methods for directory properties.
26616 ClassCastException in Enum.equals(Object)
26699 Tokenizer Enhancements: reset input string, static CSV
26734 NullPointerException in EqualsBuilder.append(Object[], Object[])
26877 Add SystemUtils.AWT_TOOLKIT and others.
26922 public static boolean DateUtils.equals(Date dt1, Date dt2)
27592 WordUtils capitalize improvement
27876 ReflectionToStringBuilder.toString(null) throws exception by design
27877 Make ClassUtils methods null-safe and not throw an IAE.
28468 StringUtils.defaultString: Documentation error
28554 Add hashCode-support to class ObjectUtils
29082 Enhancement of ExceptionUtils.CAUSE_METHOD_NAMES
29149 StringEscapeUtils.unescapeHtml() doesn't handle an empty entity
29294 lang.math.Fraction class deficiencies
29673 ExceptionUtils: new getCause() methodname (for tomcat)
29794 Add convenience format(long) methods to FastDateForma
30328 HashCodeBuilder does not use the same values as Boolean (fixed as documentation)
30334 New class proposal: CharacterEncoding
30674 parseDate class from HttpClient's DateParser class
30815 ArrayUtils.isEquals() throws ClassCastException when array1
30929 Nestable.indexOfThrowable(Class) uses Class.equals() to match
31395 DateUtils.truncate oddity at the far end of the Date spectrum
31478 Compile error with JDK 5 "enum" is a keyword
31572 o.a.c.lang.enum.ValuedEnum: 'enum'is a keyword in JDK1.5.0
31933 ToStringStyle setArrayEnd handled null incorrectly
32133 SystemUtils fails init on HP-UX
32198 Error in JavaDoc for StringUtils.chomp(String, String)
32625 Can't subclass EqualsBuilder because isEquals is private
33067 EqualsBuilder.append(Object[], Object[]) crashes with a NullPointerException if an element of the first array is null
33069 EqualsBuilder.append(Object[], Object[]) incorrectly checks that rhs[i] is instance of lhs[i]'s class
33574 unbalanced ReflectionToStringBuilder
33737 ExceptionUtils.addCauseMethodName(String) does not check for duplicates.

View File

@ -0,0 +1,112 @@
$Id: RELEASE-NOTES.txt 447139 2006-09-17 20:36:53Z bayard $
Commons Lang Package
Version 2.2
Release Notes
INTRODUCTION:
This document contains the release notes for the 2.2 version of Apache Jakarta Commons Lang.
Commons Lang is a set of utility functions and reusable components that
should be of use in any Java environment.
INCOMPATIBLE CHANGES WITH VERSION 2.1:
- None
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. its 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.1 to 2.2:
- None
DEPRECATIONS FROM 2.0 to 2.1:
- The enum package has been renamed to enums for JDK1.5 compilance.
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_*.
BUG FIXES IN 2.2:
LANG-2 javadoc example for StringUtils.splitByWholeSeparator incorrect
LANG-3 PADDING array in StringUtils overflows on '\uffff'
LANG-10 [patch] ClassUtils.primitiveToWrapper and Void
LANG-21 escapeXML() -> Not escaping low characters
LANG-25 DurationFormatUtils.formatDurationISO() javadoc is missing T in duration string between date and time part
LANG-37 unit test for org.apache.commons.lang.text.StrBuilder
LANG-42 EqualsBuilder.append(Object[], Object[]) crashes with a NullPointerException if an element of the first array is null
LANG-45 StrBuilderTest#testReplaceStringString fails.
LANG-50 Replace Clover with Cobertura
LANG-59 DateUtils.truncate method is buggy when dealing with DST switching hours
LANG-100 RandomStringUtils.random() family of methods create invalid unicode sequences
LANG-105 ExceptionUtils goes into infinite loop in getThrowables is throwable.getCause() == throwable
LANG-106 StringUtils#getLevenshteinDistance() performance is sub-optimal
LANG-112 Wrong length check in StrTokenizer.StringMatcher
LANG-117 FastDateFormat: wrong format for date "01.01.1000"
LANG-122 EscapeUtil.escapeHtml() should clarify that it does not escape ' chars to &apos;
LANG-123 Unclear javadoc for DateUtils.iterator()
LANG-127 Minor tweak to fix of bug # 26616
LANG-130 Memory "leak" in StringUtils
LANG-140 DurationFormatUtils.formatPeriod() returns the wrong result
LANG-141 Fraction.toProperString() returns -1/1 for -1
LANG-148 Performance modifications on StringUtils.replace
LANG-150 StringEscapeUtils.unescapeHtml skips first entity after standalone ampersand
LANG-152 DurationFormatUtils.formatDurationWords "11 <unit>s" gets converted to "11 <unit>"
LANG-259 ValuedEnum.compareTo(Object other) not typesafe - it easily could be...
LANG-261 Error in an example in the javadoc of the StringUtils.splitPreserveAllTokens() method
LANG-264 ToStringBuilder/HashCodeBuilder javadoc code examples
LANG-271 LocaleUtils test fails under Mustang
LANG-272 Minor build and checkstyle changes
LANG-277 Javadoc errors on StringUtils.splitPreserveAllTokens(String, char)
LANG-278 javadoc for StringUtils.removeEnd is incorrect
IMPROVEMENTS IN 2.2:
LANG-159 Add WordUtils.getInitials(String)
LANG-161 Add methods and tests to StrBuilder
LANG-162 replace() length calculation improvement
LANG-165 parseDate with TimeZone
LANG-166 New interpolation features
LANG-169 Implementation of escape/unescapeHtml methods with Writer
LANG-176 CompareToBuilder excludeFields for reflection method
LANG-186 Request for MutableBoolean implementation
LANG-194 add generic add method to DateUtils
LANG-198 New method for EqualsBuilder
LANG-212 New ExceptionUtils method setCause()
LANG-216 Provides a Class.getPublicMethod which returns public invocable Method
LANG-217 Add Mutable<Type> to<Type>() methods.
LANG-220 Tokenizer Enhancements: reset input string, static CSV/TSV factories
LANG-226 Using ReflectionToStringBuilder and excluding secure fields
LANG-242 Trivial cleanup of javadoc in various files
LANG-246 CompositeFormat
LANG-250 Performance boost for RandomStringUtils
LANG-254 Enhanced Class.forName version
LANG-260 StringEscapeUtils should expose escape*() methods taking Writer argument
LANG-263 Add StringUtils.containsIgnoreCase(...)
LANG-267 Support char array converters on ArrayUtils
LANG-270 minor javadoc improvements for StringUtils.stripXxx() methods
New ExceptionUtils methods getMessage/getRootCauseMessage

View File

@ -0,0 +1,90 @@
$Id: RELEASE-NOTES.txt 504353 2007-02-06 22:52:29Z bayard $
Commons Lang Package
Version 2.3
Release Notes
INTRODUCTION:
This document contains the release notes for the 2.3 version of Apache
Jakarta Commons Lang.
Commons Lang is a set of utility functions and reusable components that
should be of use in any Java environment.
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. its 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.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 compilance.
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_*.
BUG FIXES IN 2.3:
* [LANG-69 ] - ToStringBuilder throws StackOverflowError when an Object cycle exists
* [LANG-102] - Refactor Entities methods
* [LANG-153] - Can't XMLDecode an Enum
* [LANG-262] - Use of enum prevents a classloader from being garbage collected resuling in out of memory exceptions.
* [LANG-279] - HashCodeBuilder throws java.lang.StackOverflowError when an object contains a cycle.
* [LANG-281] - DurationFormatUtils returns wrong result
* [LANG-286] - Serialization - not backwards compatible
* [LANG-292] - unescapeXml("&12345678;") should be "&12345678;"
* [LANG-294] - StrBuilder.replaceAll and StrBuilder.deleteAll can throw ArrayIndexOutOfBoundsException.
* [LANG-295] - StrBuilder contains usages of thisBuf.length when they should use size
* [LANG-299] - Bug in method appendFixedWidthPadRight of class StrBuilder causes an ArrayIndexOutOfBoundsException
* [LANG-300] - NumberUtils.createNumber throws NumberFormatException for one digit long
* [LANG-303] - FastDateFormat.mRules is not transient or serializable
* [LANG-304] - NullPointerException in isAvailableLocale(Locale)
* [LANG-313] - Wrong behavior of Entities.unescape
* [LANG-315] - StopWatch: suspend() acts as split(), if followed by stop()
IMPROVEMENTS IN 2.3:
* [LANG-258] - Enum JavaDoc
* [LANG-266] - Wish for StringUtils.join(Collection, *)
* [LANG-268] - StringUtils.join should allow you to pass a range for it (so it only joins a part of the array)
* [LANG-275] - StringUtils substringsBetween
* [LANG-282] - Create more tests to test out the +=31 replacement code in DurationFormatUtils.
* [LANG-287] - Optimize StringEscapeUtils.unescapeXml(String)
* [LANG-289] - NumberUtils.max(byte[]) and NumberUtils.min(byte[]) are missing
* [LANG-291] - Null-safe comparison methods for finding most recent / least recent dates.
* [LANG-306] - StrBuilder appendln/appendAll/appendSeparator
* [LANG-310] - BooleanUtils isNotTrue/isNotFalse
* [LANG-314] - Tests fail to pass when building with Maven 2

View File

@ -0,0 +1,124 @@
$Id: RELEASE-NOTES.txt 637522 2008-03-16 03:41:46Z bayard $
Commons Lang Package
Version 2.4
Release Notes
INTRODUCTION:
This document contains the release notes for the 2.4 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:
- 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. its 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 compilance.
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_*.
BUG FIXES IN 2.4:
* [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 uncorrectly
* [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
IMPROVEMENTS IN 2.4:
* [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

@ -0,0 +1,83 @@
$Id: RELEASE-NOTES.txt 912439 2010-02-21 23:27:03Z niallp $
Commons Lang Package
Version 2.5
Release Notes
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.
COMPATIBILITY WITH 2.4
======================
Lang 2.5 is binary compatible release with Lang 2.4, containing bug fixes and small enhancements.
Lang 2.5 requires a minimum of JDK 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

View File

@ -0,0 +1,59 @@
$Id: RELEASE-NOTES.txt 1058313 2011-01-12 20:59:27Z niallp $
Commons Lang Package
Version 2.6
Release Notes
INTRODUCTION:
This document contains the release notes for the 2.6 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.
COMPATIBILITY WITH 2.5
======================
Lang 2.6 is binary compatible release with Lang 2.5, containing bug fixes and small enhancements.
Lang 2.6 requires a minimum of JDK 1.3.
IMPROVEMENTS IN 2.6
===================
* [LANG-633] - BooleanUtils: use same optimization in toBooleanObject(String) as in toBoolean(String)
* [LANG-599] - ClassUtils: allow Dots as Inner Class Separators in getClass()
* [LANG-594] - DateUtils: equal and compare functions up to most significant field
* [LANG-632] - DateUtils: provide a Date to Calendar convenience method
* [LANG-576] - ObjectUtils: add clone methods to ObjectUtils
* [LANG-667] - ObjectUtils: add a Null-safe compare() method
* [LANG-670] - ObjectUtils: add notEqual() method
* [LANG-302] - StrBuilder: implement clone() method
* [LANG-640] - StringUtils: add a normalizeSpace() method
* [LANG-614] - StringUtils: add endsWithAny() method
* [LANG-655] - StringUtils: add defaultIfBlank() method
* [LANG-596] - StrSubstitutor: add a replace(String, Properties) variant
* [LANG-482] - StrSubstitutor: support substitution in variable names
* [LANG-669] - Use StrBuilder instead of StringBuffer to improve performance where sync. is not an issue
BUG FIXES IN 2.6
================
* [LANG-629] - CharSet: make the underlying set synchronized
* [LANG-635] - CompareToBuilder: fix passing along compareTransients to the reflectionCompare method
* [LANG-636] - ExtendedMessageFormat doesn't override equals(Object)
* [LANG-645] - FastDateFormat: fix to properly include the locale when formatting a Date
* [LANG-638] - NumberUtils: createNumber() throws a StringIndexOutOfBoundsException when argument containing "e" and "E" is passed in
* [LANG-607] - StringUtils methods do not handle Unicode 2.0+ supplementary characters correctly
* [LANG-624] - SystemUtils: getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM
* [BEANUTILS-381] - MemberUtils: getMatchingAccessibleMethod does not correctly handle inheritance and method overloading
OTHER CHANGES IN 2.6
====================
* [LANG-600] - Javadoc is incorrect for lastIndexOf() method
* [LANG-628] - Javadoc for HashCodeBuilder.append(boolean) does not match implementation
* [LANG-643] - Javadoc StringUtils.left() claims to throw an exception on negative lenth, but doesn't
* [LANG-370] - Javadoc - document thread safety
* [LANG-623] - Test for StringUtils replaceChars() icelandic characters