aboutsummaryrefslogtreecommitdiff
path: root/src/changes/changes.xml
diff options
context:
space:
mode:
Diffstat (limited to 'src/changes/changes.xml')
-rw-r--r--src/changes/changes.xml1394
1 files changed, 1394 insertions, 0 deletions
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
new file mode 100644
index 000000000..5161d0eb8
--- /dev/null
+++ b/src/changes/changes.xml
@@ -0,0 +1,1394 @@
+<?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.
+ -->
+
+<!--
+This file is also used by the maven-changes-plugin to generate the release notes.
+Useful ways of finding items to add to this file are:
+
+1. Add items when you fix a bug or add a feature (this makes the
+release process easy :-).
+
+2. Do a JIRA search for tickets closed since the previous release.
+
+3. Use the report generated by the maven-changelog-plugin to see all
+SVN commits. TBA how to use this with SVN.
+
+To generate the release notes from this file:
+
+mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]
+
+then tweak the formatting if necessary
+and commit
+
+The <action> type attribute can be add,update,fix,remove.
+-->
+
+<document>
+ <properties>
+ <title>Apache Commons Lang Release Notes</title>
+ </properties>
+ <body>
+
+ <release version="3.13.0" date="2021-MM-DD" description="New features and bug fixes (Java 8).">
+ <!-- FIX -->
+ <action issue="LANG-1645" type="fix" dev="aherbert" due-to="Alex Herbert">NumberUtils.createNumber() to recognize hex integers prefixed with +.</action>
+ <action issue="LANG-1646" type="fix" dev="aherbert" due-to="Alex Herbert">NumberUtils.createNumber() to return requested floating point type for zero.</action>
+ <action type="fix" dev="ggregory" due-to="SpotBugs, Gary Gregory">DMI: Random object created and used only once (DMI_RANDOM_USED_ONLY_ONCE); Better multi-threaded behavior.</action>
+ <action issue="LANG-1646" type="fix" dev="aherbert" due-to="Arturo Bernal">Redundant Collection operation. Use Collections.emptyIterator() #738.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">Make Streams.stream(Collection) null-safe.</action>
+ <action issue="LANG-1667" type="fix" dev="ggregory" due-to="Andrew Thomas">Allow tests to access java.util classes such as ArrayList in Java 16 #788.</action>
+ <action issue="LANG-1669" type="fix" dev="ggregory" due-to="Andrew Thomas">OpenJDK 16 Day Period Parsing #791.</action>
+ <action issue="LANG-1663" type="fix" dev="ggregory" due-to="Andrew Thomas">Update documentation to list correct exception for null array parameters #785.</action>
+ <action type="fix" dev="ggregory" due-to="Thunderforge">Fixing reversed Javadoc descriptions in StopWatch #781.</action>
+ <action issue="LANG-1670" type="fix" dev="ggregory" due-to="Igor Shuvalov">Fix typos in JavaDoc #795.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Simplify assertions with equivalent but more simple. #792.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Avoid multiple equivalent occurrences of the same expression. #797.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Remove redundant initializers #800.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Fix ObjectUtils Javadocs #755.</action>
+ <action type="fix" dev="ggregory" due-to="Rushi98, Gary Gregory">Add test idea for RangeTest from PR #815 by Rushi98, but with a new comment.</action>
+ <action issue="LANG-1674" type="fix" dev="ggregory" due-to="singhbaljit, Gary Gregory">Make Range constructors more generic #810.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Use final and Remove redundant String. #813, #816.</action>
+ <action type="fix" dev="ggregory" due-to="CiprianBodnarescu">Use Set instead of List for checking the contains() method #734.</action>
+ <action type="fix" dev="kinow" due-to="Roland Kreuzer">Javadoc for StringUtils.substringBefore(String str, int separator) doesn't mention that the separator is an int.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix NullPointerException in ThreadUtils.getSystemThreadGroup() when the current thread is stopped.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">ArrayUtils.toPrimitive(Boolean...) null array elements map to false, like Boolean.parseBoolean(null) and its callers return false.</action>
+ <action type="fix" dev="ggregory" due-to="CodeQL, Gary Gregory">StrBuilder.StrBuilderReader.skip(long): Throw an exception when an implicit narrowing conversion in a compound assignment would result in information loss or a numeric error such as an overflows.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate Validate#notNull(Object) in favor of using Objects#requireNonNull(Object, String).</action>
+ <action issue="LANG-1462" type="fix" dev="ggregory" due-to="Lijun Liang, Arun Avanathan, Tai Dupree, Maria Buiakova, Gary Gregory">Use TimeZone from calendar in DateFormatUtils.</action>
+ <action type="fix" dev="ggregory" due-to="Diego Marcilio">Updating javadoc for NullPointerException when Validate.notNull() is called #870.</action>
+ <action type="fix" dev="ggregory" due-to="Diego Marcilio">Fixing and adding DateUtils exception Javadocs #871.</action>
+ <action issue="LANG-1679" type="fix" dev="ggregory" due-to="clover">Improve performance of StringUtils.unwrap(String, String) #844.</action>
+ <action issue="LANG-1675" type="fix" dev="ggregory" due-to="clover">Improve performance of StringUtils.join for primitives #812.</action>
+ <action issue="LANG-1675" type="fix" dev="ggregory" due-to="Arturo Bernal">Fixed NPE getting Stack Trace if Throwable is null #733.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory, Arturo Bernal">Make Validate.isAssignableFrom() check null inputs.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Fix Javadoc for Validate.isAssignableFrom().</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Make final mappingFunction variable #876.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Remove unnecessary variable creations #882.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Minor changes #769.</action>
+ <action issue="LANG-1680" type="fix" dev="ggregory" due-to="Michael Krause, Steve Bosman, Gary Gregory">FastDateFormat does not support the 'L'-Pattern from SimpleDateFormat.</action>
+ <action type="fix" dev="ggregory" due-to="Steve Bosman, Gary Gregory">Increase test coverage of ComparableUtils from 71% to 100% #898.</action>
+ <action type="fix" dev="ggregory" due-to="Steve Bosman">Increase method test coverage of MultilineRecursiveToStringStyle #899.</action>
+ <action type="fix" dev="ggregory" due-to="Steve Bosman">Fix unstable coverage of CharSequenceUtils tests noticed during merge of PRs 898 and 899 #901.</action>
+ <action type="fix" dev="aherbert" due-to="Arturo Bernal">Rewrite Conversion.binaryBeMsb0ToHexDigit to invert logic of binaryToHexDigit.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">Allow extension of previously final classes ImmutablePair and ImmutableTriple.</action>
+ <action type="fix" dev="ggregory" due-to="shalk, Bruno P. Kinoshita, Gary Gregory">Update ClassUtils Javadoc with some missing throws NPE #912.</action>
+ <action type="fix" dev="ggregory" due-to="guicaiyue">Javadoc: StringUtils.repeat("", "x", 3) = "xx"; #918.</action>
+ <action type="fix" dev="ggregory" due-to="Marc Wrobel">Fix typos #920, #923.</action>
+ <action type="fix" dev="ggregory" due-to="Bhimantoro Suryo Admodjo">Simplify condition #925.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">StringUtils.join(Iterable, String) should only return null when the Iterable is null.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">StringUtils.join(Iterator, String) should only return null when the Iterator is null.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Add tests to increase coverage #904.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Extends Object clauses are redundant #937.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Simplify conditional expression. #941.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Fix some Javadoc comments #938.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">Deprecate getNanosOfMiili() method with typo and create proper getNanosOfMilli() #940.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate ThreadUtils code that defines custom function interfaces in favor of stock java.util.function.Predicate usage.</action>
+ <action type="fix" dev="ggregory" due-to="Marc Wrobel">Fix links in Javadoc and documentation #926.</action>
+ <action issue="LANG-1604" type="fix" dev="ggregory" due-to="Gilles Sadowski, Maksym Bohachov, Gary Gregory">Deprecate RandomUtils in favor of Apache Commons RNG UniformRandomProvider #942.</action>
+ <action issue="LANG-1638" type="fix" dev="ggregory" due-to="Shailendra Soni, Michael Osipov, Arun Avanathan, Andrew Thomas, Bruno P. Kinoshita, Gary Gregory">Added docs regarding week year support #924.</action>
+ <action issue="LANG-1691" type="fix" dev="ggregory" due-to="Thiyagarajan, Gary Gregory">ClassUtils.getShortCanonicalName doesn't use the canonicalName #949.</action>
+ <action type="fix" dev="aherbert" due-to="Piotr Stawirej">Validate: Get error messages without using String.format when varargs is empty.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Simplify expression (length is never &lt; 0) #962.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Fix simple broken javadoc. #981.</action>
+ <action type="fix" dev="ggregory" due-to="LeeJuHyun">Fix typo #1001.</action>
+ <action type="fix" dev="ggregory" due-to="Arturo Bernal">Use Objects.requireNonNull() directly #1022.</action>
+ <!-- ADD -->
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add GitHub coverage.yml.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add EnumUtils.getEnumSystemProperty(...).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add TriConsumer.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use EnumUtils.getFirstEnumIgnoreCase(Class, String, Function, E).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use Suppliers.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ArrayUtils.getComponentType(T[]).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ClassUtils.getComponentType(Class&gt;T[]>).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ObjectUtils.getClass(T).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ArrayUtils.newInstance(Class&gt;T>, int).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use null-safe Streams.of(T...).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add ClassUtils.comparator().</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ThreadUtils.sleepQuietly(Duration).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ArrayUtils.setAll(T[], IntFunction).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ArrayUtils.setAll(T[], Supplier).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add BooleanConsumer.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add IntToCharFunction.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add IntStreams.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add UncheckedFuture.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add UncheckedException.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add UncheckedExecutionException.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add UncheckedTimeoutException.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add UncheckedInterruptedException.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add TimeZones.GMT.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add ObjectUtils.identityHashCodeHex(Object).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add ObjectUtils.hashCodeHex(Object).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add StringUtils.removeStart(String, char).</action>
+ <action issue="LANG-1659" type="add" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">Add null-safe ObjectUtils.isArray() #754.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add ComparableUtils.max(A, A) and ComparableUtils.min(A, A).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add UncheckedReflectiveOperationException.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use ClassUtils.isPublic(Class).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add UncheckedIllegalAccessException.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add MethodInvokers.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Streams.nullSafeStream(Collection).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Streams.toStream(Collection).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Streams.failableStream(Collection) and deprecate misnamed stream(Collection).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Streams.failableStream(Stream) and deprecate misnamed stream(Stream).</action>
+ <action type="add" dev="ggregory" due-to="Maxwell Cody, Gary Gregory">Add EnumUtils.getEnumMap(Class, Function). #730</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add FluentBitSet.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Streams.instancesOf(Class, Collection).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add ImmutablePair.ofNonNull(L, R).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add ImmutableTriple.ofNonNull(L, M, R).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add MutablePair.ofNonNull(L, R).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add MutableTriple.ofNonNull(L, M, R).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Pair.ofNonNull(L, R).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Triple.ofNonNull(L, M, R).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add ArrayUtils.containsAny(Object[], Object...).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Processor.Type.AARCH_64.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Processor.isAarch64().</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Update ArchUtils.getProcessor(String) for "aarch64".</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add JavaVersion.JAVA_18.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add TimeZones.toTimeZone(TimeZone).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add FutureTasks.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Memoizer(Function) and Memoizer(Function, boolean).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Consumers.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add github/codeql-action.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add coverage.yml.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add DurationUtils.since(Temporal).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add DurationUtils.of(FailableConsumer|FailableRunnbale).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add ExceptionUtils.forEach(Throwable, Consumer&lt;Throwable&gt;).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add ExceptionUtils.stream(Throwable).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add ExceptionUtils.getRootCauseStackTraceList(Throwable).</action>
+ <action type="add" dev="ggregory" due-to="Will Herrmann, Gary Gregory, Roland Kreuzer">Add SystemUtils.IS_OS_WINDOWS_11.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add SystemUtils.IS_JAVA_16.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add SystemUtils.IS_JAVA_17.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add SystemUtils.IS_JAVA_18.</action>
+ <action issue="LANG-1627" type="add" dev="ggregory" due-to="Alberto Scotto, Avijit Chakraborty, Steve Bosman, Bruno P. Kinoshita, Gary Gregory">Add ArrayUtils.oneHot().</action>
+ <action issue="LANG-1662" type="add" dev="ggregory" due-to="Daniel Augusto Veronezi Salvador, Gary Gregory, Bruno P. Kinoshita">Let ReflectionToStringBuilder only reflect given field names #849.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Streams.of(Enumeration&lt;E&gt;).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Streams.of(Iterable&lt;E&gt;).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Streams.of(Iterator&lt;E&gt;).</action>
+ <action issue="LANG-1689" type="add" dev="ggregory" due-to="Joseph Hendrix, Gary Gregory">Simple support for Optional in ObjectUtils#isEmpty() #933.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Processor.Type.getLabel().</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Processor.toString().</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add HashCodeBuilder.equals(Object).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add BooleanUtils.values() and forEach().</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add ClassPathUtils.packageToPath(String) and pathToPackage(String)</action>
+ <action type="add" dev="ggregory" due-to="Arturo Bernal">Add CalendarUtils#getDayOfYear() #968</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add NumberRange, DoubleRange, IntegerRange, LongRange.</action>
+ <action type="add" dev="ggregory" due-to="Diego Marcilio, Bruno P. Kinoshita, Gary Gregory">Add missing exception javadoc/tests for some null arguments #869.</action>
+ <!-- UPDATE -->
+ <action type="update" dev="ggregory" due-to="Dependabot, XenoAmess, Gary Gregory">Bump actions/cache from 2.1.4 to 3.0.10 #742, #752, #764, #833, #867, #959, #964.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump actions/checkout from 2 to 3.1.0 #819, #825, #859, #963.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Bump actions/setup-java from v1.4.3 to 3.5.1 #879.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump spotbugs-maven-plugin from 4.2.0 to 4.7.3.0 #735, #808, #822, #834, #868, #895, #919, #927, #946, #989.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump spotbugs from 4.2.2 to 4.7.3 #744, #917, #947, #973.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump maven-checkstyle-plugin from 3.1.2 to 3.2.0 #943.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump checkstyle from 8.41 to 9.3 #739, #768, #787, #811, #824, #843.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump easymock from 4.2 to 5.1.0 #746, #972, #986, #1012.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons.jacoco.version from 0.8.6 to 0.8.8.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Bump commons.japicmp.version from 0.15.2 to 0.16.0.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump junit-pioneer from 1.3.8 to 1.9.1 #749, #767, #832, #883, #988, #991, #995.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump junit-bom from 5.7.1 to 5.9.1 #761, #805, #807, #836, #928, #955.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump maven-javadoc-plugin from 3.2.0 to 3.4.1.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump jmh.version from 1.27 to 1.36 #794, #842, #872, #990.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump maven-pmd-plugin from 3.14.0 to 3.19.0 #802, #858, #909, #948.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump pmd from 6.40.0 to 6.52.0 #837, #861, #873, #905, #915, #932, #944.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump biz.aQute.bndlib from 5.3.0 to 6.3.1 #814, #835.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump maven-bundle-plugin from 5.1.1 to 5.1.2.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump animal-sniffer-maven-plugin from 1.19 to 1.21.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump exec-maven-plugin from 1.6.0 to 3.1.0 #590, #922.</action>
+ <action type="update" dev="kinow" due-to="Dependabot">Bump maven-surefire-plugin from 3.0.0-M5 to 3.0.0-M7 #880, #910.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Bump apache-rat from 0.13 to 0.14.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump commons-parent from 53 to 56 #954, #1000, #1011.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump commons-text from 1.9 to 1.10.0 #957.</action>
+ <action type="update" dev="kinow" due-to="Dependabot, Gary Gregory">Bump commons.pmd-impl.version from 6.49.0 to 6.51.0 #961.</action>
+ </release>
+
+ <release version="3.12.0" date="2021-02-26" description="New features and bug fixes (Java 8).">
+ <!-- FIX -->
+ <action issue="LANG-1592" type="fix" dev="aherbert" due-to="Huang Pingcai, Alex Herbert">Correct implementation of RandomUtils.nextLong(long, long)</action>
+ <action issue="LANG-1600" type="fix" dev="ggregory" due-to="Michael F">Restore handling of collections for non-JSON ToStringStyle #610.</action>
+ <action type="fix" dev="ggregory" due-to="iamchao1129">ContextedException Javadoc add missing semicolon #581.</action>
+ <action issue="LANG-1608" type="fix" dev="aherbert" due-to="Edgar Asatryan">Resolve JUnit pioneer transitive dependencies using JUnit BOM.</action>
+ <action type="fix" dev="aherbert" due-to="HubertWo, Gary Gregory">NumberUtilsTest - incorrect types in min/max tests #634.</action>
+ <action issue="LANG-1579" type="fix" dev="aherbert" due-to="XenoAmess">Improve StringUtils.stripAccents conversion of remaining accents.</action>
+ <action issue="LANG-1606" type="fix" dev="sebb" due-to="Rustem Galiev">StringUtils.countMatches - clarify Javadoc.</action>
+ <action issue="LANG-1591" type="fix" dev="kinow" due-to="bhawna94">Remove redundant argument from substring call.</action>
+ <action issue="LANG-1613" type="fix" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">BigDecimal is created when you pass it the min and max values, #642.</action>
+ <action issue="LANG-1541" type="fix" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">ArrayUtils.contains() and indexOf() fail to handle Double.NaN #647.</action>
+ <action issue="LANG-1615" type="fix" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">ArrayUtils contains() and indexOf() fail to handle Float.NaN # #561.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix potential NPE in TypeUtils.isAssignable(Type, ParameterizedType, Map, Type>).</action>
+ <action issue="LANG-1420" type="fix" dev="ggregory" due-to="Gordon Fraser, Rostislav Krasny, Arturo Bernal, Gary Gregory">TypeUtils.isAssignable returns wrong result for GenericArrayType and ParameterizedType, #643.</action>
+ <action issue="LANG-1612" type="fix" dev="ggregory" due-to="XinT, Gary Gregory">testGetAllFields and testGetFieldsWithAnnotation sometimes fail.</action>
+ <action type="fix" dev="ggregory" due-to="John R. D'Orazio">Fix Javadoc for SystemUtils.isJavaVersionAtMost() #638.</action>
+ <action issue="LANG-1610" type="fix" dev="ggregory" due-to="Tony Liang">Fix StringUtils.unwrap throws StringIndexOutOfBoundsException #636.</action>
+ <action type="fix" dev="ggregory" due-to="Isira Seneviratne">Fix formatting of isAnyBlank() and isAnyEmpty(). #513.</action>
+ <action issue="LANG-1618" type="fix" dev="ggregory" due-to="Arturo Bernal">TypeUtils. containsTypeVariables does not support GenericArrayType #661.</action>
+ <action issue="LANG-1622" type="fix" dev="ggregory" due-to="Kanak Sony, anomen-s">Javadoc of some methods incorrectly refers to another method, #667, #668. #670.</action>
+ <action issue="LANG-1620" type="fix" dev="ggregory" due-to="Arturo Bernal">Refine StringUtils.lastIndexOfIgnoreCase #664.</action>
+ <action issue="LANG-1619" type="fix" dev="ggregory" due-to="Arturo Bernal">Refine StringUtils.abbreviate #663.</action>
+ <action issue="LANG-1584" type="fix" dev="ggregory" due-to="Arturo Bernal">Refine StringUtils.isNumericSpace #573.</action>
+ <action issue="LANG-1580" type="fix" dev="ggregory" due-to="Arturo Bernal">Refine StringUtils.deleteWhitespace #569.</action>
+ <action issue="LANG-1626" type="fix" dev="ggregory" due-to="Kanak Sony">Correction in Javadoc of some methods. #673</action>
+ <action issue="LANG-1628" type="fix" dev="kinow" due-to="Jarkko Rantavuori">Javadoc for RandomStringUtils.random() letters, numbers parameters is wrong.</action>
+ <action type="fix" dev="ggregory" due-to="Felix Schumacher">Correct markup in Javadoc for unbalanced braces #679.</action>
+ <action issue="LANG-1544" type="fix" dev="kinow" due-to="Peter Nagy, Michael Buck, Gary Gregory">MethodUtils.invokeMethod NullPointerException in case of null in args list #680.</action>
+ <action issue="LANG-1637" type="fix" dev="ggregory" due-to="Uri Gonen, Gary Gregory, Michael Osipov">Fix 2 digit week year formatting #688.</action>
+ <action type="fix" dev="ggregory" due-to="Chris Smowton">Fix broken Javadoc links to commons-text #712.</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">Add and use ThreadUtils.sleep(Duration).</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">Add and use ThreadUtils.join(Thread, Duration).</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory">Add ObjectUtils.wait(Duration).</action>
+ <!-- ADD -->
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add BooleanUtils.booleanValues().</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add BooleanUtils.primitiveValues().</action>
+ <action issue="LANG-1535" type="add" dev="ggregory" due-to="Gary Gregory, Isira Seneviratne">Add StringUtils.containsAnyIgnoreCase(CharSequence, CharSequence...).</action>
+ <action issue="LANG-1359" type="add" dev="ggregory" due-to="Gary Gregory, Keegan Witt">Add StopWatch.getStopTime().</action>
+ <action type="add" dev="ggregory" due-to="Edgar Asatryan">More test coverage for CharSequenceUtils. #631.</action>
+ <action issue="LANG-1596" type="update" dev="aherbert" due-to="Richard Eckart de Castilho">ArrayUtils.toPrimitive(Object) does not support boolean and other types #607.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add fluent-style ArraySorter.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add and use LocaleUtils.toLocale(Locale) to avoid NPEs.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add FailableShortSupplier, handy for JDBC APIs.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add JavaVersion.JAVA_17.</action>
+ <action issue="LANG-1636" type="add" dev="ggregory" due-to="">Add missing boolean[] join method #686.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add StringUtils.substringBefore(String, int).</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add Range.INTEGER.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add DurationUtils.</action>
+ <action type="add" dev="jochen">Introduce the use of @Nonnull, and @Nullable, and the Objects class as a helper tool.</action>
+ <action type="add" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">Add and use true and false String constants #714.</action>
+ <action type="add" dev="ggregory" due-to="Arturo Bernal, Gary Gregory">Add and use ObjectUtils.requireNonEmpty() #716.</action>
+ <!-- UPDATE -->
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Enable Dependabot #587.</action>
+ <action type="update" dev="chtompki">Bump junit-jupiter from 5.6.2 to 5.7.0.</action>
+ <action type="update" dev="chtompki" due-to="chtompki, Dependabot">Bump spotbugs from 4.1.2 to 4.2.2, #627, #671, #708, #726.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump spotbugs-maven-plugin from 4.0.0 to 4.2.0, #593, #596, #609, #623, #632, #692.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump biz.aQute.bndlib from 5.1.1 to 5.3.0 #592, #628, #715.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump junit-pioneer from 0.6.0 to 1.1.0, #589, #597, #600, #624, #625, #662.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump checkstyle from 8.34 to 8.41, #594, #614, #637, #665, #706, #722.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump actions/checkout from v2.3.1 to v2.3.4 #601, #639.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump actions/setup-java from v1.4.0 to v1.4.2 #612.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Update commons.jacoco.version 0.8.5 to 0.8.6 (Fixes Java 15 builds).</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Update maven-surefire-plugin 2.22.2 -> 3.0.0-M5.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump maven-pmd-plugin from 3.13.0 to 3.14.0 #660.</action>
+ <action type="update" dev="kinow" due-to="Dependabot">Bump jmh.version from 1.21 to 1.27 #674.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Update commons.japicmp.version 0.14.3 -> 0.15.2.</action>
+ <action type="update" dev="ggregory" due-to="Ali K. Nouri">Processor.java: check enum equality with == instead of .equals() method #690.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump junit-pioneer from 1.1.0 to 1.3.8, #702, #721.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #705.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump actions/cache from v2 to v2.1.4 #710.</action>
+ <action type="update" dev="ggregory" due-to="Dependabot">Bump junit-bom from 5.7.0 to 5.7.1 #707.</action>
+ <action type="update" dev="ggregory" due-to="Arturo Bernal">Minor Improvements #701.</action>
+ <action type="update" dev="ggregory" due-to="Arturo Bernal">Minor Improvement: Add final variable.try to make the code read-only #700.</action>
+ <action type="update" dev="ggregory" due-to="Arturo Bernal">Minor Improvement: Remove redundant initializer #699.</action>
+ <action type="update" dev="ggregory" due-to="Arturo Bernal">Use own validator ObjectUtils.anyNull to check null String input #718.</action>
+ <action type="update" dev="kinow" due-to="Dependabot">Bump commons-parent from 52 to 53 #885.</action>
+ </release>
+ <release version="3.11" date="2020-07-12" description="New features and bug fixes (Java 8).">
+ <action type="update" dev="chtompki" due-to="Jin Xu">Refine test output for FastDateParserTest</action>
+ <action issue="LANG-1549" type="update" dev="chtompki" due-to="Jin Xu">CharSequenceUtils.lastIndexOf : remake it</action>
+ <action type="update" dev="kinow" due-to="XenoAmess">remove encoding and docEncoding and use inherited values from commons-parent</action>
+ <action type="fix" dev="kinow" due-to="contextshuffling">Fix Javadoc for StringUtils.appendIfMissingIgnoreCase() #507.</action>
+ <action type="update" dev="ggregory" due-to="Isira Seneviratne, Bruno P. Kinoshita">Simplify null checks in Pair.hashCode() using Objects.hashCode(). #517.</action>
+ <action type="update" dev="ggregory" due-to="Isira Seneviratne, Bruno P. Kinoshita">Simplify null checks in Triple.hashCode() using Objects.hashCode(). #516.</action>
+ <action type="update" dev="ggregory" due-to="Isira Seneviratne, Bruno P. Kinoshita">Simplify some if statements in StringUtils. #521.</action>
+ <action issue="LANG-1537" type="update" dev="ggregory" due-to="Isira Seneviratne, Bruno P. Kinoshita">Simplify a null check in the private replaceEach() method of StringUtils. #514.</action>
+ <action issue="LANG-1534" type="update" dev="ggregory" due-to="Isira Seneviratne, Bruno P. Kinoshita">Replace some usages of the ternary operator with calls to Math.max() and Math.min() #512.</action>
+ <action type="update" dev="ggregory" due-to="Arend v. Reinersdorff, Bruno P. Kinoshita">(Javadoc) Fix return tag for throwableOf*() methods #518.</action>
+ <action type="add" dev="ggregory" due-to="XenoAmess, Gary Gregory">Add ArrayUtils.isSameLength() to compare more array types #430.</action>
+ <action issue="LANG-1545" type="update" dev="ggregory" due-to="XenoAmess, Gary Gregory">CharSequenceUtils.regionMatches is wrong dealing with Georgian.</action>
+ <action type="add" dev="jochen">Added the Locks class as a convenient possibility to deal with locked objects.</action>
+ <action issue="LANG-1568" type="add" dev="ggregory">Add to Functions: FailableBooleanSupplier, FailableIntSupplier, FailableLongSupplier, FailableDoubleSupplier, and so on.</action>
+ <action issue="LANG-1569" type="add" dev="ggregory">Add ArrayUtils.get(T[], index, T) to provide an out-of-bounds default value.</action>
+ <action issue="LANG-1550" type="update" dev="ggregory" due-to="Edgar Asatryan">Optimize ArrayUtils::isArrayIndexValid method. #551.</action>
+ <action issue="LANG-1561" type="update" dev="ggregory" due-to="XenoAmess">Use List.sort instead of Collection.sort #546.</action>
+ <action issue="LANG-1563" type="update" dev="ggregory" due-to="XenoAmess">Use StandardCharsets.UTF_8 #548.</action>
+ <action issue="LANG-1564" type="update" dev="ggregory" due-to="XenoAmess">Use Collections.singletonList insteadof Arrays.asList when there be only one element. #549.</action>
+ <action issue="LANG-1560" type="fix" dev="ggregory" due-to="XenoAmess">Refine Javadoc #545.</action>
+ <action issue="LANG-1553" type="update" dev="ggregory" due-to="XenoAmess">Change array style from `int a[]` to `int[] a` #537.</action>
+ <action issue="LANG-1552" type="update" dev="ggregory" due-to="XenoAmess">Change from addAll to constructors for some List #536.</action>
+ <action issue="LANG-1554" type="fix" dev="ggregory" due-to="XenoAmess">Fix typos #539.</action>
+ <action issue="LANG-1555" type="fix" dev="ggregory" due-to="XenoAmess">Ignored exception `ignored`, should not be called so #540.</action>
+ <action issue="LANG-1558" type="update" dev="ggregory" due-to="XenoAmess">Simplify if as some conditions are covered by others #543.</action>
+ <action issue="LANG-1528" type="fix" dev="ggregory" due-to="Edwin Delgado H">StringUtils.replaceEachRepeatedly gives IllegalStateException #505.</action>
+ <action issue="LANG-1570" type="add" dev="ggregory" due-to="Edgar Asatryan">Add JavaVersion enum constants for Java 14 and 15. #553.</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">Add JavaVersion enum constants for Java 16.</action>
+ <action issue="LANG-1556" type="add" dev="ggregory" due-to="XenoAmess">Use Java 8 lambdas and Map operations.</action>
+ <action issue="LANG-1565" type="add" dev="ggregory" due-to="XenoAmess">Change removeLastFieldSeparator to use endsWith #550.</action>
+ <action issue="LANG-1557" type="add" dev="ggregory" due-to="XenoAmess, Gary Gregory">Change a Pattern to a static final field, for not letting it compile each time the function invoked. #542.</action>
+ <action type="add" dev="ggregory">Add ImmutablePair factory methods left() and right().</action>
+ <action type="add" dev="ggregory">Add ObjectUtils.toString(Object, Supplier&lt;String&gt;).</action>
+ <action issue="LANG-1567" type="update" dev="ggregory" due-to="Miguel Muñoz, Bruno P. Kinoshita, Gary Gregory">Fixed Javadocs for setTestRecursive() #556.</action>
+ <action issue="LANG-1542" type="update" dev="ggregory" due-to=" Trần Ngọc Khoa, Gary Gregory">ToStringBuilder.reflectionToString - Wrong JSON format when object has a List of Enum.</action>
+ <action issue="LANG-1543" type="fix" dev="ggregory" due-to="Swaraj Pal, Wander Costa, Gary Gregory">[JSON string for maps] ToStringBuilder.reflectionToString doesn't render nested maps correctly.</action>
+ <action type="update" dev="ggregory">Make org.apache.commons.lang3.CharSequenceUtils.toCharArray(CharSequence) public.</action>
+ <action type="add" dev="ggregory">Add org.apache.commons.lang3.StringUtils.substringAfter(String, int).</action>
+ <action type="add" dev="ggregory">Add org.apache.commons.lang3.StringUtils.substringAfterLast(String, int).</action>
+ <action type="fix" dev="ggregory" due-to="Isira Seneviratne">Correct Javadocs of methods that use Validate.notNull() and replace some uses of Validate.isTrue() with Validate.notNull(). #525.</action>
+ <action issue="LANG-1539" type="fix" dev="ggregory" due-to="Isira Seneviratne">Add allNull() and anyNull() methods to ObjectUtils. #522.</action>
+ <action type="update" dev="ggregory">org.apache.commons:commons-parent 50 -> 51.</action>
+ <action type="update" dev="ggregory">org.junit-pioneer:junit-pioneer 0.5.4 -> 0.6.0.</action>
+ <action type="update" dev="ggregory">org.junit.jupiter:junit-jupiter 5.6.0 -> 5.6.2.</action>
+ <action type="update" dev="ggregory">com.github.spotbugs:spotbugs 4.0.0 -> 4.0.6.</action>
+ <action type="update" dev="ggregory">com.puppycrawl.tools:checkstyle 8.29 -> 8.34.</action>
+ <action type="update" dev="ggregory">commons.surefire.version 3.0.0-M4 -> 3.0.0-M5..</action>
+ </release>
+
+ <release version="3.10" date="2020-03-22" description="New features and bug fixes. Requires Java 8, supports Java 9, 10, 11.">
+ <action issue="LANG-1514" type="fix" dev="kinow" due-to="contextshuffling">Make test more stable by wrapping assertions in hashset.</action>
+ <action issue="LANG-1450" type="fix" dev="chtompki">Generate Javadoc jar on build.</action>
+ <action issue="LANG-1457" type="add" dev="ggregory">Add ExceptionUtils.throwableOfType(Throwable, Class) and friends.</action>
+ <action issue="LANG-1458" type="add" dev="ggregory">Add EMPTY_ARRAY constants to classes in org.apache.commons.lang3.tuple.</action>
+ <action issue="LANG-1461" type="add" dev="ggregory">Add null-safe StringUtils APIs to wrap String#getBytes([Charset|String]).</action>
+ <action issue="LANG-1467" type="add" dev="ggregory">Add zero arg constructor for org.apache.commons.lang3.NotImplementedException.</action>
+ <action issue="LANG-1470" type="add" dev="ggregory">Add ArrayUtils.addFirst() methods.</action>
+ <action issue="LANG-1437" type="update" dev="ggregory" due-to="Andrei Troie">Remove redundant if statements in join methods #411.</action>
+ <action issue="LANG-1460" type="fix" dev="kinow" due-to="Larry West">Trivial: year of release for 3.9 says 2018, should be 2019</action>
+ <action issue="LANG-1476" type="fix" dev="kinow" due-to="emopers">Use synchronize on a set created with Collections.synchronizedSet before iterating</action>
+ <action issue="LANG-1479" type="add" dev="ggregory">Add Range.fit(T) to fit a value into a range.</action>
+ <action type="update" dev="ggregory">commons.japicmp.version 0.13.1 -> 0.14.1.</action>
+ <action type="update" dev="ggregory">junit-jupiter 5.5.0 -> 5.5.1.</action>
+ <action issue="LANG-1477" type="add" dev="jochen">Added Functions.as*, and tests thereof, as suggested by Peter Verhas</action>
+ <action issue="LANG-1475" type="fix" dev="kinow" due-to="stzx">StringUtils.unwrap incorrect throw StringIndexOutOfBoundsException.</action>
+ <action issue="LANG-1485" type="add" dev="ggregory" due-to="nicolasbd">Add getters for lhs and rhs objects in DiffResult #451.</action>
+ <action issue="LANG-1486" type="add" dev="ggregory" due-to="Gary Gregory">Generify builder classes Diffable, DiffBuilder, and DiffResult #452.</action>
+ <action issue="LANG-1487" type="add" dev="ggregory" due-to="Gary Gregory">Add ClassLoaderUtils with toString() implementations #453.</action>
+ <action issue="LANG-1489" type="add" dev="ggregory" due-to="Gary Gregory">Add null-safe APIs as StringUtils.toRootLowerCase(String) and StringUtils.toRootUpperCase(String) #456.</action>
+ <action issue="LANG-1406" type="fix" dev="ggregory" due-to="geratorres">StringIndexOutOfBoundsException in StringUtils.replaceIgnoreCase #423.</action>
+ <action issue="LANG-1453" type="fix" dev="ggregory" due-to="geratorres">StringUtils.removeIgnoreCase("İa", "a") throws IndexOutOfBoundsException #423.</action>
+ <action type="update" dev="ggregory">junit-jupiter 5.5.1 -> 5.5.2.</action>
+ <action issue="LANG-1426" type="fix" dev="ggregory" due-to="Brower, Mikko Maunu, Suraj Gautam">Corrected usage examples in Javadocs #458.</action>
+ <action type="update" dev="ggregory" due-to="Jonathan Leitschuh, Bruno P. Kinoshita, Rob Tompkins, Gary Gregory">Improve Javadoc based on the discussion of the GitHub PR #459.</action>
+ <action type="update" dev="ggregory">maven-checkstyle-plugin 3.0.0 -> 3.1.0.</action>
+ <action issue="LANG-696" type="update" dev="ggregory" due-to="Peter Verhas">Update documentation related to the issue LANG-696 #449.</action>
+ <action type="update" dev="ggregory" due-to="Peter Verhas">AnnotationUtils little cleanup #467.</action>
+ <action issue="LANG-1494" type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.lang3.time.Calendars.</action>
+ <action issue="LANG-1495" type="add" dev="ggregory" due-to="Cheong Voon Leong">Add EnumUtils getEnum() methods with default values #475.</action>
+ <action issue="LANG-1177" type="add" dev="ggregory" due-to="Liel Fridman">Added indexesOf methods and simplified removeAllOccurences #471.</action>
+ <action issue="LANG-1498" type="add" dev="ggregory" due-to="Lysergid, Gary Gregory">Add support of lambda value evaluation for defaulting methods #416.</action>
+ <action issue="LANG-1463" type="fix" dev="ggregory" due-to="bbeckercscc, Gary Gregory">StringUtils abbreviate returns String of length greater than maxWidth #477.</action>
+ <action issue="LANG-1500" type="fix" dev="ggregory" due-to="contextshuffling">Test may fail due to a different order of fields returned by reflection api #480.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Update test dependency: org.easymock:easymock 4.0.2 -> 4.1.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Update test dependency: org.hamcrest:hamcrest 2.1 -> 2.2.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Update test dependency: org.junit-pioneer:junit-pioneer 0.3.0 -> 0.4.2.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Update build dependency: com.puppycrawl.tools:checkstyle 8.18 -> 8.27.</action>
+ <action issue="LANG-1501" type="fix" dev="ggregory" due-to="contextshuffling">Sort fields in ReflectionToStringBuilder for deterministic order #481.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">Update POM parent: org.apache.commons:commons-parent 48 -> 50.</action>
+ <action type="update" dev="ggregory" due-to="Peter Verhas">BooleanUtils Javadoc #469.</action>
+ <action type="update" dev="ggregory" due-to="Peter Verhas">Functions Javadoc #466.</action>
+ <action issue="LANG-1503" type="add" dev="ggregory" due-to="XenoAmess, Gary Gregory">Add factory methods to Pair classes with Map.Entry input. #454.</action>
+ <action issue="LANG-1505" type="add" dev="ggregory" due-to="Gary Gregory">Add StopWatch convenience APIs to format times and create a simple instance.</action>
+ <action issue="LANG-1506" type="add" dev="ggregory" due-to="Gary Gregory">Allow a StopWatch to carry an optional message.</action>
+ <action issue="LANG-1507" type="add" dev="ggregory" due-to="Sam Kruglov, Mark Dacek, Marc Magon, Pascal Schumacher, Rob Tompkins, Bruno P. Kinoshita, Amey Jadiye, Gary Gregory">Add ComparableUtils #398.</action>
+ <action issue="LANG-1508" type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.lang3.SystemUtils.getUserName().</action>
+ <action issue="LANG-1509" type="add" dev="ggregory" due-to="Gary Gregory">Add ObjectToStringComparator. #483.</action>
+ <action issue="LANG-1510" type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.lang3.arch.Processor.Arch.getLabel().</action>
+ <action issue="LANG-1512" type="add" dev="ggregory" due-to="Gary Gregory">Add IS_JAVA_14 and IS_JAVA_15 to org.apache.commons.lang3.SystemUtils.</action>
+ <action issue="LANG-1513" type="add" dev="ggregory" due-to="Bernhard Bonigl, Gary Gregory">ObjectUtils: Get first non-null supplier value.</action>
+ <action type="add" dev="jochen">Added the Streams class, and Functions.stream() as an accessor thereof.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">org.easymock:easymock 4.1 -> 4.2.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">org.junit-pioneer:junit-pioneer 0.4.2 -> 0.5.4.</action>
+ <action type="update" dev="ggregory" due-to="Gary Gregory">org.junit.jupiter:junit-jupiter 5.5.2 -> 5.6.0.</action>
+ <action type="update" dev="ggregory" due-to="Peter Verhas">Use Javadoc {@code} instead of pre tags. #490.</action>
+ <action type="update" dev="ggregory" due-to="Peter Verhas">ExceptionUtilsTest to 100% #486.</action>
+ <action issue="LANG-1433" type="fix" dev="ggregory" due-to="Christian Franzen">MethodUtils will throw a NPE if invokeMethod() is called for a var-args method #407.</action>
+ <action type="update" dev="ggregory" due-to="Peter Verhas">Reuse own code in Functions.java #493.</action>
+ <action issue="LANG-1518" type="fix" dev="ggregory" due-to="Michele Preti, Bruno P. Kinoshita, Gary Gregory">MethodUtils.getAnnotation() with searchSupers = true does not work if super is generic #494.</action>
+ <action issue="LANG-1523" type="update" dev="ggregory" due-to="Edgar Asatryan, Bruno P. Kinoshita, Gary Gregory">Avoid unnecessary allocation in StringUtils.wrapIfMissing. #496.</action>
+ <action issue="LANG-1525" type="update" dev="ggregory" due-to="Edgar Asatryan, Bruno P. Kinoshita, Gary Gregory">Internally use Validate.notNull(foo, ...) instead of Validate.isTrue(foo != null, ...).</action>
+ <action issue="LANG-1526" type="update" dev="ggregory" due-to="Dominik Schramm">Add 1 and 0 in toBooleanObject(final String str) #502.</action>
+ <action issue="LANG-1527" type="update" dev="ggregory" due-to="Pengyu Nie">Remove a redundant argument check in NumberUtils #504.</action>
+ <action issue="LANG-1529" type="update" dev="ggregory" due-to="Gary Gregory, BillCindy, Bruno P. Kinoshita">Deprecate org.apache.commons.lang3.ArrayUtils.removeAllOccurences(*) for org.apache.commons.lang3.ArrayUtils.removeAllOccurrences(*).</action>
+ </release>
+
+ <release version="3.9" date="2019-04-09" description="New features and bug fixes. Requires Java 8, supports Java 9, 10, 11.">
+ <action issue="LANG-1447" type="update" dev="chtompki">FieldUtils.removeFinalModifier(Field, boolean), in java 12
+ throw exception because the final modifier is no longer mutable.</action>
+ <action issue="LANG-1446" type="add" dev="chtompki">Switch coverage from cobertura to jacoco.</action>
+ <action issue="LANG-1442" type="add" dev="chtompki">Javadoc pointing to Commons RNG.</action>
+ <action issue="LANG-1416" type="update" dev="britter">Add more SystemUtils.IS_JAVA_XX variants.</action>
+ <action type="add" dev="jochen">Adding the Functions class.</action>
+ <action issue="LANG-1416" type="update" dev="britter">Update to JUnit 5</action>
+ <action issue="LANG-1417" type="update" dev="britter">Add @FunctionalInterface to ThreadPredicate and ThreadGroupPredicate</action>
+ <action issue="LANG-1415" type="update" dev="britter">Update Java Language requirement to 1.8</action>
+ <action issue="LANG-1411" type="add" dev="britter" due-to="Alexander Tsvetkov">Add isEmpty method to ObjectUtils</action>
+ <action issue="LANG-1422" type="add" dev="ggregory">Add null-safe StringUtils.valueOf(char[]) to delegate to String.valueOf(char[])</action>
+ <action issue="LANG-1427" type="add" dev="ggregory">Add API org.apache.commons.lang3.SystemUtils.isJavaVersionAtMost(JavaVersion)</action>
+ <action issue="LANG-1436" type="update" dev="aherbert">Consolidate the StringUtils equals and equalsIgnoreCase Javadoc and implementation</action>
+ <action type="update" dev="ggregory" due-to="Andrei Troie aft90">(doc) Fix javadoc for 'startIndex' parameter of StringUtils.join() methods. GitHub PR #412.</action>
+ </release>
+
+ <release version="3.8.1" date="2018-09-19" description="This release is a bugfix for Restoring Bundle-SymbolicName in the MANIFEST.mf file.">
+ <action issue="LANG-1419" type="fix" dev="chtompki">Restore BundleSymbolicName for OSGi</action>
+ </release>
+
+ <release version="3.8" date="2018-08-15" description="New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.">
+ <action issue="LANG-1380" type="fix" dev="chas" due-to="Markus Jelsma">FastDateParser too strict on abbreviated short month symbols</action>
+ <action issue="LANG-1396" type="fix" dev="sebb">JsonToStringStyle does not escape string names</action>
+ <action issue="LANG-1395" type="fix" dev="sebb" due-to="Jim Gan">JsonToStringStyle does not escape double quote in a string value</action>
+ <action issue="LANG-1384" type="fix" dev="erans" due-to="Ian Young">New Java version ("11") must be handled</action>
+ <action issue="LANG-1364" type="fix" dev="pschumacher" due-to="Zheng Xie">ExceptionUtils#getRootCause(Throwable t) should return t if no lower level cause exists</action>
+ <action issue="LANG-1060" type="fix" dev="pschumacher" due-to="Piotr Kosmala">NumberUtils.isNumber assumes number starting with Zero</action>
+ <action issue="LANG-1375" type="fix" dev="kinow" due-to="Jerry Zhao">defaultString(final String str) in StringUtils to reuse defaultString(final String str, final String defaultStr)</action>
+ <action issue="LANG-1374" type="fix" dev="kinow" due-to="Jaswanth Bala">Parsing Json Array failed</action>
+ <action issue="LANG-1371" type="fix" dev="pschumacher" due-to="Dmitry Ovchinnikov">Fix TypeUtils#parameterize to work correctly with narrower-typed array</action>
+ <action issue="LANG-1370" type="fix" dev="kinow" due-to="Andre Dieb">Fix EventCountCircuitBreaker increment batch</action>
+ <action issue="LANG-1385" type="fix" dev="ggregory" due-to="Rohan Padhye">NumberUtils.createNumber() throws StringIndexOutOfBoundsException instead of NumberFormatException</action>
+ <action issue="LANG-1397" type="fix" dev="ggregory" due-to="Takanobu Asanuma">WordUtils.wrap throws StringIndexOutOfBoundsException when wrapLength is Integer.MAX_VALUE.</action>
+ <action issue="LANG-1401" type="fix" dev="pschumacher" due-to="Roman Golyshev, Alex Mamedov">Typo in JavaDoc for lastIndexOf</action>
+ <action issue="LANG-1367" type="update" dev="ggregory" due-to="Gary Gregory">ObjectUtils.identityToString(Object) and friends should allocate builders and buffers with a size</action>
+ <action issue="LANG-1352" type="add" dev="pschumacher" due-to="Ruslan Sibgatullin">EnumUtils.getEnumIgnoreCase and isValidEnumIgnoreCase methods added</action>
+ <action issue="LANG-1372" type="add" dev="pschumacher" due-to="Sérgio Ozaki">Add ToStringSummary annotation</action>
+ <action issue="LANG-1356" type="add" dev="pschumacher" due-to="Yathos UG">Add bypass option for classes to recursive and reflective EqualsBuilder</action>
+ <action issue="LANG-1391" type="add" dev="ggregory" due-to="Sauro Matulli, Oleg Chubaryov">Improve Javadoc for StringUtils.isAnyEmpty(null)</action>
+ <action issue="LANG-1393" type="add" dev="ggregory" due-to="Gary Gregory">Add API SystemUtils.String getEnvironmentVariable(final String name, final String defaultValue)</action>
+ <action issue="LANG-1394" type="add" dev="ggregory" due-to="Sebb, Gary Gregory">org.apache.commons.lang3.SystemUtils should not write to System.err.</action>
+ <action issue="LANG-1238" type="add" dev="ggregory" due-to="Christopher Cordeiro, Gary Gregory, Bruno P. Kinoshita, Oleg Chubaryov">Add RegexUtils class instead of overloading methods in StringUtils that take a regex to take precompiled Pattern.</action>
+ <action issue="LANG-1390" type="add" dev="ggregory" due-to="Jochen Schalanda">StringUtils.join() with support for List&lt;?> with configurable start/end indices.</action>
+ <action issue="LANG-1392" type="add" dev="pschumacher" due-to="Jeff Nelson">Methods for getting first non-empty or non-blank value</action>
+ <action issue="LANG-1405" type="update" dev="ggregory" due-to="Lars Grefer">Remove checks for java versions below the minimum supported one</action>
+ <action issue="LANG-1402" type="update" dev="chtompki" due-to="Mark Dacek">Null/index safe get methods for ArrayUtils</action>
+ <action issue="LANG-1408" type="add" dev="chtompki">Rounding utilities for converting to BigDecimal</action>
+ </release>
+
+ <release version="3.7" date="2017-11-04" description="New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.">
+ <action issue="LANG-1362" type="fix" dev="ggregory" due-to="Stephen Colebourne">Fix tests DateUtilsTest for Java 9 with en_GB locale</action>
+ <action issue="LANG-1365" type="fix" dev="ggregory" due-to="Gary Gregory">Fix NullPointerException in isJavaVersionAtLeast on Java 10, add SystemUtils.IS_JAVA_10, add JavaVersion.JAVA_10</action>
+ <action issue="LANG-1348" type="fix" dev="pschumacher" due-to="mbusso">StackOverflowError on TypeUtils.toString(...) for a generic return type of Enum.valueOf</action>
+ <action issue="LANG-1350" type="fix" dev="ggregory" due-to="Brett Kail">ConstructorUtils.invokeConstructor(Class, Object...) regression</action>
+ <action issue="LANG-1349" type="fix" dev="pschumacher" due-to="Naman Nigam">EqualsBuilder#isRegistered: swappedPair construction bug</action>
+ <action issue="LANG-1357" type="fix" dev="ggregory" due-to="BruceKuiLiu">org.apache.commons.lang3.time.FastDateParser should use toUpperCase(Locale)</action>
+ <action issue="LANG-1358" type="update" dev="pschumacher" due-to="Stephane Landelle">Improve StringUtils#replace throughput</action>
+ <action issue="LANG-1346" type="update" dev="pschumacher">Remove deprecation from RandomStringUtils</action>
+ <action issue="LANG-1361" type="update" dev="ggregory" due-to="Ana">ExceptionUtils.getThrowableList() is using deprecated ExceptionUtils.getCause()</action>
+ <action issue="LANG-1355" type="add" dev="ggregory" due-to="Chas Honton">TimeZone.getTimeZone() in FastDateParser causes resource contention (PR #296.)</action>
+ <action issue="LANG-1360" type="add" dev="ggregory" due-to="Gary Gregory">Add methods to ObjectUtils to get various forms of class names in a null-safe manner</action>
+ </release>
+
+ <release version="3.6" date="2017-06-08" description="New features and bug fixes. Requires Java 7.">
+ <action issue="LANG-1338" type="update" dev="britter">Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility</action>
+ <action issue="LANG-1336" type="add" dev="britter" due-to="Beluga Behr">Add NUL Byte To CharUtils</action>
+ <action issue="LANG-1337" type="fix" dev="kinow">Fix test failures in IBM JDK 8 for ToStringBuilderTest</action>
+ <action issue="LANG-1304" type="add" dev="pschumacher" due-to="Andy Klimczak">Add method in StringUtils to determine if string contains both mixed cased characters</action>
+ <action issue="LANG-1334" type="update" dev="djones">Deprecate CharEncoding in favour of java.nio.charset.StandardCharsets</action>
+ <action issue="LANG-1319" type="fix" dev="djones">MultilineRecursiveToStringStyle StackOverflowError when object is an array</action>
+ <action issue="LANG-1325" type="add" dev="kinow" due-to="Arshad Basha">Increase test coverage of ToStringBuilder class to 100%</action>
+ <action issue="LANG-1307" type="add" dev="pschumacher" due-to="Arshad Basha">Add a method in StringUtils to extract only digits out of input string</action>
+ <action issue="LANG-1110" type="update" dev="pschumacher" due-to="Bruno P. Kinoshita">Implement HashSetvBitSetTest using JMH</action>
+ <action issue="LANG-1256" type="add" dev="pschumacher" due-to="C0rWin">Add JMH maven dependencies</action>
+ <action issue="LANG-1167" type="add" dev="chtompki" due-to="Mark Dacek">Add null filter to ReflectionToStringBuilder</action>
+ <action issue="LANG-1320" type="fix" dev="britter">LocaleUtils#toLocale does not support language followed by UN M.49 numeric-3 area code followed by variant</action>
+ <action issue="LANG-1300" type="fix" dev="chtompki" due-to="Mark Dacek">Clarify or improve behavior of int-based indexOf methods in StringUtils</action>
+ <action issue="LANG-1299" type="add" dev="djones">Add method for converting string to an array of code points</action>
+ <action issue="LANG-1286" type="fix" dev="djones">RandomStringUtils random method can overflow and return characters outside the specified range</action>
+ <action issue="LANG-660" type="add" dev="djones">Add methods to insert arrays into arrays at an index</action>
+ <action issue="LANG-1292" type="fix" dev="djones">WordUtils.wrap throws StringIndexOutOfBoundsException</action>
+ <action issue="LANG-1287" type="fix" dev="pschumacher" due-to="Ivan Morozov">RandomStringUtils#random can enter infinite loop if end parameter is to small</action>
+ <action issue="LANG-1285" type="fix" dev="pschumacher" due-to="Francesco Chicchiriccò">NullPointerException in FastDateParser$TimeZoneStrategy</action>
+ <action issue="LANG-1281" type="fix" dev="pschumacher" due-to="Andreas Lundblad">Javadoc of StringUtils.ordinalIndexOf is contradictory.</action>
+ <action issue="LANG-1188" type="fix" dev="pschumacher">StringUtils#join(T...): warning: [unchecked] Possible heap pollution from parameterized vararg type T</action>
+ <action issue="LANG-1144" type="fix" dev="ggregory" due-to="Waldemar Maier, Gary Gregory">Multiple calls of org.apache.commons.lang3.concurrent.LazyInitializer.initialize() are possible.</action>
+ <action issue="LANG-1276" type="fix" dev="pschumacher" due-to="Andy Klimczak">StrBuilder#replaceAll ArrayIndexOutOfBoundsException</action>
+ <action issue="LANG-1278" type="fix" dev="pschumacher" due-to="Duke Yin">BooleanUtils javadoc issues</action>
+ <action issue="LANG-1070" type="fix" dev="pschumacher" due-to="Paul Pogonyshev">ArrayUtils#add confusing example in javadoc</action>
+ <action issue="LANG-1271" type="fix" dev="pschumacher" due-to="Pierre Templier">StringUtils#isAnyEmpty and #isAnyBlank should return false for an empty array</action>
+ <action issue="LANG-1155" type="fix" dev="pschumacher" due-to="Saif Asif, Thiago Andrade">Add StringUtils#unwrap</action>
+ <action issue="LANG-1034" type="add" dev="pschumacher" due-to="Yathos UG">Add support for recursive comparison to EqualsBuilder#reflectionEquals</action>
+ <action issue="LANG-1067" type="add" dev="pschumacher">Add a reflection-based variant of DiffBuilder</action>
+ <action issue="LANG-740" type="add" dev="pschumacher" due-to="James Sawle">Implementation of a Memoizer</action>
+ <action issue="LANG-1258" type="add" dev="pschumacher" due-to="IG, Grzegorz Rożniecki">Add ArrayUtils#toStringArray method</action>
+ <action issue="LANG-1160" type="add" dev="kinow">StringUtils#abbreviate should support 'custom ellipses' parameter</action>
+ <action issue="LANG-1293" type="add" dev="pschumacher" due-to="Pierre Templier, Martin Tarjanyi">Add StringUtils#isAllEmpty and #isAllBlank methods</action>
+ <action issue="LANG-1290" type="update" dev="pschumacher" due-to="Andrii Abramov">Increase test coverage of org.apache.commons.lang3.ArrayUtils</action>
+ <action issue="LANG-1274" type="update" dev="pschumacher">StrSubstitutor should state its thread safety</action>
+ <action issue="LANG-1277" type="update" dev="pschumacher" due-to="yufcuy">StringUtils#getLevenshteinDistance reduce memory consumption</action>
+ <action issue="LANG-1279" type="update" dev="ggregory">Update Java requirement from Java 6 to 7.</action>
+ <action issue="LANG-1143" type="update" dev="pschumacher" due-to="sebb">StringUtils should use toXxxxCase(int) rather than toXxxxCase(char)</action>
+ <action issue="LANG-1297" type="update" dev="ggregory">Add SystemUtils.getHostName() API.</action>
+ <action issue="LANG-1301" type="update" dev="pschumacher" due-to="Karl Heinz Marbaise">Moving apache-rat-plugin configuration into pluginManagement</action>
+ <action issue="LANG-1311" type="fix" dev="pschumacher" due-to="Aaron Digulla">TypeUtils.toString() doesn't handle primitive and Object arrays correctly</action>
+ <action issue="LANG-1312" type="fix" dev="pschumacher">LocaleUtils#toLocale does not support language followed by UN M.49 numeric-3 area code</action>
+ <action issue="LANG-1265" type="fix" dev="pschumacher">Build failures when building with Java 9 EA</action>
+ <action issue="LANG-1314" type="fix" dev="pschumacher" due-to="Allon Murienik">javadoc creation broken with Java 8</action>
+ <action issue="LANG-1316" type="update" dev="pschumacher">Deprecate classes/methods moved to commons-text</action>
+ <action issue="LANG-1310" type="fix" dev="pschumacher" due-to="Don Jeba">MethodUtils.invokeMethod throws ArrayStoreException if using varargs arguments and smaller types than the method defines</action>
+ <action issue="LANG-1313" type="add" dev="pschumacher" due-to="Tomschi">Add ArchUtils - An utility class for the "os.arch" system property</action>
+ <action issue="LANG-1272" type="add" dev="ebourg">Add shuffle methods to ArrayUtils</action>
+ <action issue="LANG-1317" type="add" dev="pschumacher" due-to="Yasser Zamani">Add MethodUtils#findAnnotation and extend MethodUtils#getMethodsWithAnnotation for non-public, super-class and interface methods</action>
+ <action issue="LANG-1331" type="add" dev="ggregory">Add ImmutablePair.nullPair()</action>
+ <action issue="LANG-1332" type="add" dev="ggregory">Add ImmutableTriple.nullTriple()</action>
+ </release>
+
+ <release version="3.5" date="2016-10-13" description="New features including Java 9 detection">
+ <action issue="LANG-1275" type="add" dev="oheger">Added a tryAcquire() method to TimedSemaphore.</action>
+ <action issue="LANG-1273" type="add" dev="ebourg" due-to="Jake Wang">Added a new property IS_OS_MAC_OSX_EL_CAPITAN in SystemUtils</action>
+ <action issue="LANG-1255" type="add" dev="britter" due-to="Kaiyuan Wang">Add DateUtils.toCalendar(Date, TimeZone)</action>
+ <action issue="LANG-1023" type="add" dev="britter" due-to="Marko Bekhta">Add WordUtils.wrap overload with customizable breakable character</action>
+ <action issue="LANG-787" type="add" dev="pschumacher" due-to="Gokul Nanthakumar C">Add method removeIgnoreCase(String, String) to StringUtils</action>
+ <action issue="LANG-1261" type="fix" dev="pschumacher" >ArrayUtils.contains returns false for instances of subtypes</action>
+ <action issue="LANG-1197" type="update" dev="pschumacher" >Prepare Java 9 detection</action>
+ <action issue="LANG-1252" type="fix" dev="chtompki" due-to="Rob Tompkins">Rename NumberUtils.isNumber, isCreatable to better reflect createNumber. Also, accommodated for "+" symbol as prefix in isCreatable and isNumber.</action>
+ <action issue="LANG-1262" type="update" dev="pschumacher" due-to="Ruslan Cheremin">CompareToBuilder.append(Object, Object, Comparator) method is too big to be inlined</action>
+ <action issue="LANG-1230" type="fix" dev="pschumacher" due-to="Philippe Marschall">Remove unnecessary synchronization from registry lookup in EqualsBuilder and HashCodeBuilder</action>
+ <action issue="LANG-1224" type="add" dev="pschumacher" due-to="Caleb Cushing">Extend RandomStringUtils with methods that generate strings between a min and max length</action>
+ <action issue="LANG-1214" type="fix" dev="pschumacher" due-to="Henry Tung">Handle "void" in ClassUtils.getClass()</action>
+ <action issue="LANG-1250" type="fix" dev="pschumacher" due-to="Glease Wang">SerializationUtils#deserialize has unnecessary code and a comment for that</action>
+ <action issue="LANG-1259" type="update" dev="britter" due-to="Dominik Stadler">Javadoc for ArrayUtils.isNotEmpty() is slightly misleading</action>
+ <action issue="LANG-1257" type="add" dev="ggregory" due-to="Gary Gregory">Add APIs StringUtils.wrapIfMissing(String, char|String)</action>
+ <action issue="LANG-1190" type="fix" dev="pschumacher" due-to="pschumacher">TypeUtils.isAssignable throws NullPointerException when fromType has type variables and toType generic superclass specifies type variable</action>
+ <action issue="LANG-1226" type="fix" dev="pschumacher" due-to="pschumacher">StringUtils#normalizeSpace does not trim the string anymore</action>
+ <action issue="LANG-1251" type="fix" dev="pschumacher" due-to="Takuya Ueshin">SerializationUtils.ClassLoaderAwareObjectInputStream should use static initializer to initialize primitiveTypes map</action>
+ <action issue="LANG-1253" type="add" dev="ggregory" due-to="adilek">[GitHub issue #170] Add RandomUtils#nextBoolean() method</action>
+ <action issue="LANG-1248" type="fix" dev="chas" due-to="Benoit Wiart">FastDatePrinter Memory allocation regression</action>
+ <action issue="LANG-1247" type="update" dev="chas" due-to="Benoit Wiart">FastDatePrinter generates extra Date objects</action>
+ <action issue="LANG-1018" type="fix" dev="pschumacher" due-to="Nick Manley">Fix precision loss on NumberUtils.createNumber(String)</action>
+ <action issue="LANG-1229" type="update" dev="pschumacher" due-to="Ruslan Cheremin">HashCodeBuilder.append(Object,Object) is too big to be inlined, which prevents whole builder to be scalarized</action>
+ <action issue="LANG-1085" type="add" dev="oheger" due-to="oheger / kinow">Add a circuit breaker implementation</action>
+ <action issue="LANG-1013" type="add" dev="pschumacher" due-to="Thiago Andrade">Add StringUtils.truncate()</action>
+ <action issue="LANG-1195" type="add" dev="pschumacher" due-to="Derek C. Ashmore">Enhance MethodUtils to allow invocation of private methods</action>
+ <action issue="LANG-1199" type="fix" dev="pschumacher" due-to="M. Steiger">Fix implementation of StringUtils.getJaroWinklerDistance()</action>
+ <action issue="LANG-1244" type="fix" dev="pschumacher" due-to="jjbankert">Fix dead links in StringUtils.getLevenshteinDistance() javadoc</action>
+ <action issue="LANG-1242" type="fix" dev="pschumacher" due-to="Neal Stewart">"\u2284":"nsub" mapping missing from EntityArrays#HTML40_EXTENDED_ESCAPE</action>
+ <action issue="LANG-1243" type="update" dev="sebb">Simplify ArrayUtils removeElements by using new decrementAndGet() method</action>
+ <action issue="LANG-1189" type="add" dev="sebb" due-to="haiyang li / Matthew Bartenschlag ">Add getAndIncrement/getAndDecrement/getAndAdd/incrementAndGet/decrementAndGet/addAndGet in Mutable* classes</action>
+ <action issue="LANG-1240" type="update" dev="pschumacher" due-to="zhanhb">Optimize BitField constructor implementation</action>
+ <action issue="LANG-1206" type="update" dev="pschumacher" due-to="Mohammed Alfallaj">Improve CharSetUtils.squeeze() performance</action>
+ <action issue="LANG-1225" type="add" dev="pschumacher" due-to="Caleb Cushing">Add RandomStringUtils#randomGraph and #randomPrint which match corresponding regular expression class</action>
+ <action issue="LANG-901" type="fix" dev="pschumacher" due-to="Matthew Bartenschlag">StringUtils#startsWithAny/endsWithAny is case-sensitive - documented as case insensitive</action>
+ <action issue="LANG-1223" type="add" dev="pschumacher" due-to="Nick Manley">Add StopWatch#getTime(TimeUnit)</action>
+ <action issue="LANG-781" type="add" dev="pschumacher" due-to="Krzysztof Wolny">Add methods to ObjectUtils class to check for null elements in the array</action>
+ <action issue="LANG-1228" type="add" dev="pschumacher" due-to="Brad Hess">Prefer Throwable.getCause() in ExceptionUtils.getCause()</action>
+ <action issue="LANG-1233" type="add" dev="pschumacher" due-to="Nick Manley">DiffBuilder add method to allow appending from a DiffResult</action>
+ <action issue="LANG-1176" type="update" dev="pschumacher" due-to="Jeffery Yuan">Improve ArrayUtils removeElements time complexity to O(n)</action>
+ <action issue="LANG-1234" type="update" dev="pschumacher" due-to="Jonatan Jönsson">getLevenshteinDistance with a threshold: optimize implementation if the strings lengths differ more than the threshold</action>
+ <action issue="LANG-1168" type="add" dev="pschumacher" due-to="pschumacher">Add SystemUtils.IS_OS_WINDOWS_10 property</action>
+ <action issue="LANG-1232" type="fix" dev="pschumacher" due-to="Nick Manley">DiffBuilder: Add null check on fieldName when appending Object or Object[]</action>
+ <action issue="LANG-1178" type="fix" dev="pschumacher" due-to="Henri Yandell">ArrayUtils.removeAll(Object array, int... indices) should do the clone, not its callers</action>
+ <action issue="LANG-1151" type="update" dev="pschumacher" due-to="Juan Pablo Santos Rodríguez">Performance improvements for NumberUtils.isParsable</action>
+ <action issue="LANG-1120" type="fix" dev="pschumacher" due-to="kaching88">StringUtils.stripAccents should remove accents from "Ł" and "ł".</action>
+ <action issue="LANG-1218" type="update" dev="ggregory" due-to="Ruslan Cheremin">EqualsBuilder.append(Object,Object) is too big to be inlined, which prevents whole builder to be scalarized</action>
+ <action issue="LANG-1205" type="fix" dev="chas" due-to="pbrose">NumberUtils.createNumber() behaves inconsistently with NumberUtils.isNumber()</action>
+ <action issue="LANG-1115" type="add" dev="chas" due-to="Jim Lloyd, Joe Ferner">Add support for varargs in ConstructorUtils, MemberUtils, and MethodUtils</action>
+ <action issue="LANG-1134" type="add" dev="chas" due-to="Alan Smithee">Add methods to check numbers against NaN and infinite to Validate</action>
+ <action issue="LANG-1222" type="fix" dev="ggregory" due-to="Adam J.">Fix for incorrect comment on StringUtils.containsIgnoreCase method</action>
+ <action issue="LANG-1221" type="fix" dev="ggregory" due-to="Pierre Templier">Fix typo on appendIfMissing javadoc</action>
+ <action issue="LANG-1220" type="add" dev="kinow" due-to="Casey Scarborough">Add tests for missed branches in DateUtils</action>
+ <action issue="LANG-1202" type="fix" dev="chas" due-to="Markus Jelsma">parseDateStrictly doesn't pass specified locale</action>
+ <action issue="LANG-1219" type="fix" dev="chas" due-to="Jarek">FastDateFormat doesn't respect summer daylight in some localized strings</action>
+ <action issue="LANG-1146" type="add" dev="ggregory" due-to="Gabor Liptak">z/OS identification in SystemUtils</action>
+ <action issue="LANG-1210" type="update" dev="ggregory" due-to="Matthias Niehoff">StringUtils#startsWithAny has error in Javadoc</action>
+ <action issue="LANG-1208" type="update" dev="bayard" due-to="Samuel Karp">StrSubstitutor can preserve escapes</action>
+ <action issue="LANG-1175" type="fix" dev="wikier" due-to="Benedikt Ritter">Remove Ant-based build</action>
+ <action issue="LANG-1192" type="add" dev="chas" due-to="Dominik Stadler">FastDateFormat support of the week-year component (uppercase 'Y')</action>
+ <action issue="LANG-1194" type="fix" dev="chas">Limit max heap memory for consistent Travis CI build</action>
+ <action issue="LANG-1186" type="fix" dev="chas" due-to="NickManley">Fix NullPointerException in FastDateParser$TimeZoneStrategy</action>
+ <action issue="LANG-1193" type="fix" dev="sebb" due-to="Qin Li">ordinalIndexOf("abc", "ab", 1) gives incorrect answer of -1 (correct answer should be 0); revert fix for LANG-1077</action>
+ <action issue="LANG-1182" type="update" dev="britter" due-to="Larry West, Pascal Schumacher">Clarify Javadoc of StringUtils.containsAny()</action>
+ <action issue="LANG-1169" type="add" dev="lguibert" due-to="Rafal Glowinski, Robert Parr, Arman Sharif">Add StringUtils methods to compare a string to multiple strings</action>
+ <action issue="LANG-1185" type="add" dev="lguibert">Add remove by regular expression methods in StringUtils</action>
+ <action issue="LANG-1183" type="update" dev="lguibert">Making replacePattern/removePattern methods null safe in StringUtils</action>
+ <action issue="LANG-1139" type="add" dev="lguibert">Add replace by regular expression methods in StringUtils</action>
+ <action issue="LANG-1171" type="add" dev="lguibert">Add compare methods in StringUtils</action>
+ <action issue="LANG-1174" type="add" dev="britter" due-to="Punkratz312">Add sugar to RandomUtils</action>
+ <action issue="LANG-1057" type="update" dev="chas" due-to="Otávio Santana">Replace StringBuilder with String concatenation for better optimization</action>
+ <action issue="LANG-1075" type="update" dev="chas">Deprecate SystemUtils.FILE_SEPARATOR and SystemUtils.PATH_SEPARATOR</action>
+ <action issue="LANG-1154" type="add" dev="chas" due-to="Gary Gregory">FastDateFormat APIs that use a StringBuilder</action>
+ <action issue="LANG-1149" type="add" dev="chas" due-to="Gregory Zak">Ability to throw checked exceptions without declaring them</action>
+ <action issue="LANG-1002" type="fix" dev="chas" due-to="Michael Osipov">Several predefined ISO FastDateFormats in DateFormatUtils are incorrect</action>
+ <action issue="LANG-1152" type="fix" dev="chas" due-to="Pas Filip">StringIndexOutOfBoundsException or field over-write for large year fields in FastDateParser</action>
+ <action issue="LANG-1153" type="add" dev="chas">Implement ParsePosition api for FastDateParser</action>
+ <action issue="LANG-1141" type="fix" dev="oheger">StrLookup.systemPropertiesLookup() no longer reacts on changes on system properties</action>
+ <action issue="LANG-1147" type="fix" dev="sebb" due-to="Loic Guibert">EnumUtils *BitVector issue with more than 32 values Enum</action>
+ <action issue="LANG-1059" type="fix" dev="sebb" due-to="Colin Casey">Capitalize javadoc is incorrect</action>
+ <action issue="LANG-1137" type="add" dev="britter" due-to="Matthew Aguirre">Add check for duplicate event listener in EventListenerSupport</action>
+ <action issue="LANG-1133" type="fix" dev="chas" due-to="Pascal Schumacher">FastDateParser_TimeZoneStrategyTest#testTimeZoneStrategyPattern fails on Windows with German Locale</action>
+ <action issue="LANG-1135" type="add" dev="britter" due-to="Eduardo Martins">Add method containsAllWords to WordUtils</action>
+ <action issue="LANG-1132" type="add" dev="britter" due-to="Jack Tan">ReflectionToStringBuilder doesn't throw IllegalArgumentException when the constructor's object param is null</action>
+ <action issue="LANG-1122" type="fix" dev="britter" due-to="Adrian Ber">Inconsistent behavior of swap for malformed inputs</action>
+ <action issue="LANG-701" type="add" dev="britter" due-to="James Sawle">StringUtils join with var args</action>
+ <action issue="LANG-1130" type="fix" dev="britter">Fix critical issues reported by SonarQube</action>
+ <action issue="LANG-1131" type="fix" dev="britter">StrBuilder.equals(StrBuilder) doesn't check for null inputs</action>
+ <action issue="LANG-1105" type="add" dev="britter" due-to="Hendrik Saly">Add ThreadUtils - A utility class which provides helper methods related to java.lang.Thread</action>
+ <action issue="LANG-1031" type="add" dev="britter" due-to="Felipe Adorno">Add annotations to exclude fields from ReflectionEqualsBuilder, ReflectionToStringBuilder and ReflectionHashCodeBuilder</action>
+ <action issue="LANG-1127" type="add" dev="chas, britter">Use JUnit rules to set and reset the default Locale and TimeZone</action>
+ <action issue="LANG-1128" type="fix" dev="britter" due-to="Jack Tan">JsonToStringStyle doesn't handle chars and objects correctly</action>
+ <action issue="LANG-1126" type="fix" dev="britter">DateFormatUtilsTest.testSMTP depends on the default Locale</action>
+ <action issue="LANG-1123" type="fix" dev="chas" due-to="Christian P. Momon">Unit test FastDatePrinterTimeZonesTest needs a timezone set</action>
+ <action issue="LANG-916" type="fix" dev="chas" due-to="Christian P. Momon">CLONE - DateFormatUtils.format does not correctly change Calendar TimeZone in certain situations</action>
+ <action issue="LANG-1116" type="fix" dev="chas" due-to="Aaron Sheldon">DateUtilsTest.testLang530 fails for some timezones</action>
+ <action issue="LANG-1114" type="fix" dev="britter" due-to="Andy Coates">TypeUtils.ParameterizedType#equals doesn't work with wildcard types</action>
+ <action issue="LANG-1119" type="add" dev="britter" due-to="Loic Guibert">Add rotate(string, int) method to StringUtils</action>
+ <action issue="LANG-1118" type="fix" dev="britter" due-to="Loic Guibert">StringUtils.repeat('z', -1) throws NegativeArraySizeException</action>
+ <action issue="LANG-1099" type="add" dev="britter" due-to="Adrian Ber">Add swap and shift operations for arrays to ArrayUtils</action>
+ <action issue="LANG-979" type="update" dev="britter" due-to="Bruno P. Kinoshita">TypeUtils.parameterizeWithOwner - wrong format descriptor for "invalid number of type parameters".</action>
+ <action issue="LANG-1112" type="update" dev="britter">MultilineRecursiveToStringStyle largely unusable due to being package-private.</action>
+ <action issue="LANG-1058" type="update" dev="djones" due-to="Leo Wang">StringUtils.uncapitalize performance improvement</action>
+ <action issue="LANG-1069" type="update" dev="djones" due-to="Arno Noordover">CharSet.getInstance documentation does not clearly explain how to include negation character in set</action>
+ <action issue="LANG-1050" type="add" dev="djones" due-to="James Sawle">Change nullToEmpty methods to generics</action>
+ <action issue="LANG-1111" type="fix" dev="chas">Fix FindBugs warnings in DurationFormatUtils</action>
+ <action issue="LANG-1074" type="add" dev="djones" due-to="Haiyang Li">Add a method to ArrayUtils for removing all occurrences of a given element</action>
+ <action issue="LANG-1107" type="update" dev="chas">Fix parsing edge cases in FastDateParser</action>
+ <action issue="LANG-1162" type="fix" dev="sebb">StringUtils#equals fails with Index OOBE on non-Strings with identical leading prefix</action>
+ <action issue="LANG-1163" type="fix" dev="sebb">There are no tests for CharSequenceUtils.regionMatches</action>
+ <action issue="LANG-1200" type="fix" dev="ggregory" due-to="BarkZhang">StringUtils.ordinalIndexOf: Add missing right parenthesis in Javadoc example</action>
+ <action issue="LANG-1191" type="fix" dev="ggregory" due-to="qed, Brent Worden, Gary Gregory">Incorrect Javadoc StringUtils.containsAny(CharSequence, CharSequence...)</action>
+ <action type="update" dev="ebourg" due-to="Jake Wang">Added new property IS_OS_MAC_OSX_EL_CAPITAN in SystemUtils</action>
+ </release>
+
+ <release version="3.4" date="2014-04-06" description="Feature and bugfix release">
+ <action issue="LANG-821" type="add" dev="britter" due-to="Timo Kockert">Support OS X versions in SystemUtils</action>
+ <action issue="LANG-794" type="fix" dev="britter" due-to="Timo Kockert">SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect</action>
+ <action issue="LANG-1104" type="fix" dev="chas">Parse test fails for TimeZone America/Sao_Paulo</action>
+ <action issue="LANG-1103" type="add" dev="britter">Add SystemUtils.IS_JAVA_1_9</action>
+ <action issue="LANG-1102" type="update" dev="britter">Make logic for comparing OS versions in SystemUtils smarter</action>
+ <action issue="LANG-1091" type="update" dev="britter" due-to="Fabian Lange">Shutdown thread pools in test cases</action>
+ <action issue="LANG-1101" type="update" dev="chas">FastDateParser and FastDatePrinter support 'X' format</action>
+ <action issue="LANG-1100" type="update" dev="chas" due-to="mbracher">Avoid memory allocation when using date formatting to StringBuffer</action>
+ <action issue="LANG-935" type="update" dev="britter" due-to="Fabian Lange, Thomas Neidhart">Possible performance improvement on string escape functions</action>
+ <action issue="LANG-948" type="fix" dev="britter" due-to="Andrey Khobnya">Exception while using ExtendedMessageFormat and escaping braces</action>
+ <action issue="LANG-1098" type="update" dev="britter" due-to="Mikhail Mazurskiy, Fabian Lange">Avoid String allocation in StrBuilder.append(CharSequence)</action>
+ <action issue="LANG-1098" type="update" dev="britter" due-to="Michał Kordas">Update maven-checkstyle-plugin to 2.14</action>
+ <action issue="LANG-1097" type="update" dev="britter" due-to="Michał Kordas">Update org.easymock:easymock to 3.3.1</action>
+ <action issue="LANG-1096" type="update" dev="britter" due-to="Michał Kordas">Update maven-pmd-plugin to 3.4</action>
+ <action issue="LANG-1095" type="update" dev="britter" due-to="Michał Kordas">Update maven-antrun-plugin to 1.8</action>
+ <action issue="LANG-1092" type="fix" dev="britter">Wrong formatting of time zones with daylight saving time in FastDatePrinter</action>
+ <action issue="LANG-877" type="update" dev="britter" due-to="Fabian Lange">Performance improvements for StringEscapeUtils</action>
+ <action issue="LANG-1093" type="add" dev="britter" due-to="Fabian Lange">Add ClassUtils.getAbbreviatedName()</action>
+ <action issue="LANG-1090" type="fix" dev="sebb">FastDateParser does not set error indication in ParsePosition</action>
+ <action issue="LANG-1089" type="fix" dev="sebb">FastDateParser does not handle excess hours as per SimpleDateFormat</action>
+ <action issue="LANG-1061" type="fix" dev="sebb" due-to="dmeneses">FastDateParser error - timezones not handled correctly</action>
+ <action issue="LANG-1087" type="fix" dev="britter" due-to="Renat Zhilkibaev">NumberUtils#createNumber() returns positive BigDecimal when negative Float is expected</action>
+ <action issue="LANG-1081" type="fix" dev="britter" due-to="Jonathan Baker">DiffBuilder.append(String, Object left, Object right) does not do a left.equals(right) check</action>
+ <action issue="LANG-1055" type="fix" dev="britter" due-to="Jonathan Baker">StrSubstitutor.replaceSystemProperties does not work consistently</action>
+ <action issue="LANG-1082" type="add" dev="britter" due-to="Jonathan Baker">Add option to disable the "objectsTriviallyEqual" test in DiffBuilder</action>
+ <action issue="LANG-1083" type="fix" dev="britter" due-to="Jonathan Baker">Add (T) casts to get unit tests to pass in old JDK</action>
+ <action issue="LANG-1015" type="add" dev="britter" due-to="Thiago Andrade">Add JsonToStringStyle implementation to ToStringStyle</action>
+ <action issue="LANG-1080" type="add" dev="britter" due-to="Innokenty Shuvalov">Add NoClassNameToStringStyle implementation of ToStringStyle</action>
+ <action issue="LANG-1071" type="update" dev="britter" due-to="Arno Noordover">Fix wrong examples in Javadoc of StringUtils.replaceEachRepeatedly(...), StringUtils.replaceEach(...)</action>
+ <action issue="LANG-883" type="add" dev="britter" due-to="Daniel Stewart">Add StringUtils.containsAny(CharSequence, CharSequence...) method</action>
+ <action issue="LANG-1073" type="fix" dev="kinow" due-to="haiyang li">Read wrong component type of array in add in ArrayUtils</action>
+ <action issue="LANG-1077" type="fix" dev="kinow" due-to="haiyang li">StringUtils.ordinalIndexOf("aaaaaa", "aa", 2) != 3 in StringUtils</action>
+ <action issue="LANG-1072" type="fix" dev="sebb" due-to="haiyang li">Duplicated "0x" check in createBigInteger in NumberUtils</action>
+ <action issue="LANG-1064" type="fix" dev="djones" due-to="B.J. Herbison">StringUtils.abbreviate description doesn't agree with the examples</action>
+ <action issue="LANG-1052" type="add" dev="britter" due-to="Jan Matèrne">Multiline recursive to string style</action>
+ <action issue="LANG-536" type="add" dev="djones" due-to="James Sawle">Add isSorted() to ArrayUtils</action>
+ <action issue="LANG-1041" type="fix" dev="britter" due-to="Alexandre Bartel">Fix MethodUtilsTest so it does not depend on JDK method ordering</action>
+ <action issue="LANG-827" type="update" dev="djones">CompareToBuilder's doc doesn't specify precedence of fields it uses in performing comparisons</action>
+ <action issue="LANG-1000" type="fix" dev="djones">ParseException when trying to parse UTC dates with Z as zone designator using DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT</action>
+ <action issue="LANG-1035" type="fix" dev="djones">Javadoc for EqualsBuilder.reflectionEquals() is unclear</action>
+ <action issue="LANG-1020" type="update" dev="britter" due-to="Libor Ondrusek">Improve performance of normalize space</action>
+ <action issue="LANG-1033" type="add" dev="ggregory">Add StringUtils.countMatches(CharSequence, char)</action>
+ <action issue="LANG-1027" type="update" dev="rmannibucau">org.apache.commons.lang3.SystemUtils#isJavaVersionAtLeast should return true by default</action>
+ <action issue="LANG-1021" type="add" dev="britter" due-to="Alexander Müller">Provide methods to retrieve all fields/methods annotated with a specific type</action>
+ <action issue="LANG-1026" type="update" dev="britter" due-to="Alex Yursha">Bring static method references in StringUtils to consistent style</action>
+ <action issue="LANG-1016" type="add" dev="britter" due-to="Juan Pablo Santos Rodríguez">NumberUtils#isParsable method(s)</action>
+ <action issue="LANG-1017" type="update" dev="britter" due-to="Christoph Schneegans">Use non-ASCII digits in Javadoc examples for StringUtils.isNumeric</action>
+ <action issue="LANG-1008" type="update" dev="britter" due-to="Thiago Andrade">Change min/max methods in NumberUtils/IEEE754rUtils from array input parameters to varargs</action>
+ <action issue="LANG-999" type="add" dev="britter" due-to="Ben Ripkens">Add fuzzy String matching logic to StringUtils</action>
+ <action issue="LANG-1006" type="update" dev="britter" due-to="Thiago Andrade">Add wrap (with String or char) to StringUtils</action>
+ <action issue="LANG-1005" type="update" dev="britter" due-to="Michael Osipov">Extend DurationFormatUtils#formatDurationISO default pattern to match #formatDurationHMS</action>
+ <action issue="LANG-1007" type="update" dev="britter" due-to="Thiago Andrade">Fixing NumberUtils JAVADoc comments for max methods</action>
+ <action issue="LANG-731" type="update" dev="djones">Better Javadoc for BitField class</action>
+ <action issue="LANG-1004" type="update" dev="britter" due-to="Michael Osipov">DurationFormatUtils#formatDurationHMS implementation does not correspond to Javadoc and vice versa</action>
+ <action issue="LANG-1003" type="update" dev="britter">DurationFormatUtils are not able to handle negative durations/periods</action>
+ <action issue="LANG-1001" type="fix" dev="ggregory" due-to="Michael Osipov">ISO 8601 misspelled throughout the Javadocs</action>
+ <action issue="LANG-994" type="add" dev="britter" due-to="Mikhail Mazursky">Add zero copy read method to StrBuilder</action>
+ <action issue="LANG-993" type="add" dev="britter" due-to="Mikhail Mazursky">Add zero copy write method to StrBuilder</action>
+ <action issue="LANG-998" type="update" dev="chas">Javadoc is not clear on preferred pattern to instantiate FastDateParser / FastDatePrinter</action>
+ <action issue="LANG-1088" type="fix" dev="chas">FastDateParser should be case insensitive</action>
+ <action issue="LANG-995" type="fix" dev="britter" due-to="Andrey Khobnya">Fix bug with stripping spaces on last line in WordUtils.wrap()</action>
+ <action issue="LANG-1044" type="add" dev="ggregory">Add method org.apache.commons.lang3.reflect.MethodUtils.invokeExactMethod(Object, String)</action>
+ <action issue="LANG-1045" type="add" dev="ggregory">Add method org.apache.commons.lang3.reflect.MethodUtils.invokeMethod(Object, String)</action>
+ </release>
+
+ <release version="3.3.2" date="2014-04-09" description="Bugfix for a bug in NumberUtils introduced in 3.3.1">
+ <action issue="LANG-992" type="fix" dev="niallp">NumberUtils#isNumber() returns false for "0.0", "0.4790", et al</action>
+ <action issue="LANG-989" type="add" dev="ggregory">Add org.apache.commons.lang3.SystemUtils.IS_JAVA_1_8</action>
+ </release>
+
+ <release version="3.3.1" date="2014-03-18" description="Bugfix release for 3.3">
+ <action issue="LANG-987" type="fix" dev="djones">DateUtils.getFragmentInDays(Date, Calendar.MONTH) returns wrong days</action>
+ <action issue="LANG-983" type="fix" dev="sebb">DurationFormatUtils does not describe format string fully</action>
+ <action issue="LANG-981" type="fix" dev="sebb">DurationFormatUtils#lexx does not detect unmatched quote char</action>
+ <action issue="LANG-984" type="fix" dev="sebb">DurationFormatUtils does not handle large durations correctly</action>
+ <action issue="LANG-982" type="fix" dev="sebb">DurationFormatUtils.formatDuration(61999, "s.SSSS") - ms field size should be 4 digits</action>
+ <action issue="LANG-978" type="fix" dev="sebb">Failing tests with Java 8 b128</action>
+ </release>
+
+ <release version="3.3" date="2014-03-04" description="Bug fixes and new features including: DifferenceBuilder, ClassPathUtils, RandomUtils and Jaro-Winkler String distance metric">
+ <action issue="LANG-621" type="fix" dev="kinow" due-to="Philip Hodges, Thomas Neidhart">ReflectionToStringBuilder.toString does not debug 3rd party object fields within 3rd party object</action>
+ <action issue="LANG-955" type="add" dev="britter" due-to="Adam Hooper">Add methods for removing all invalid characters according to XML 1.0 and XML 1.1 in an input string to StringEscapeUtils</action>
+ <action issue="LANG-977" type="fix" dev="britter" due-to="Chris Karcher">NumericEntityEscaper incorrectly encodes supplementary characters</action>
+ <action issue="LANG-973" type="fix" dev="sebb">Make some private fields final</action>
+ <action issue="LANG-971" type="fix" dev="sebb">NumberUtils#isNumber(String) fails to reject invalid Octal numbers</action>
+ <action issue="LANG-972" type="fix" dev="sebb">NumberUtils#isNumber does not allow for hex 0XABCD</action>
+ <action issue="LANG-969" type="fix" dev="ggregory" due-to="Matt Bishop">StringUtils.toEncodedString(byte[], Charset) needlessly throws UnsupportedEncodingException</action>
+ <action issue="LANG-970" type="add" dev="ggregory">Add APIs MutableBoolean setTrue() and setFalse()</action>
+ <action issue="LANG-946" type="fix" dev="britter">ConstantInitializerTest fails when building with IBM JDK 7</action>
+ <action issue="LANG-962" type="add" dev="ggregory">Add SerializationUtils.roundtrip(T extends Serializable) to serialize then deserialize</action>
+ <action issue="LANG-961" type="update" dev="ggregory">org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field) does not clean up after itself</action>
+ <action issue="LANG-958" type="update" dev="chas">FastDateParser javadoc incorrectly states that SimpleDateFormat is used internally</action>
+ <action issue="LANG-637" type="add" dev="djones">There should be a DifferenceBuilder with a ReflectionDifferenceBuilder implementation</action>
+ <action issue="LANG-954" type="fix" due-to="Michael Keppler" dev="sebb">uncaught PatternSyntaxException in FastDateFormat on Android</action>
+ <action issue="LANG-956" type="update" dev="britter">Improve Javadoc of WordUtils.wrap methods</action>
+ <action issue="LANG-944" type="add" dev="britter" due-to="Rekha Joshi">Add the Jaro-Winkler string distance algorithm to StringUtils</action>
+ <action issue="LANG-936" type="fix" dev="bayard" due-to="Yaniv Kunda, Eli Lindsey">StringUtils.getLevenshteinDistance with too big of a threshold returns wrong result</action>
+ <action issue="LANG-943" type="fix" dev="kinow">Test DurationFormatUtilsTest.testEdgeDuration fails in JDK 1.6, 1.7 and 1.8, BRST time zone</action>
+ <action issue="LANG-613" type="fix" dev="mbenson">ConstructorUtils.getAccessibleConstructor() Does Not Check the Accessibility of Enclosing Classes</action>
+ <action issue="LANG-951" type="fix" dev="britter" due-to="Sebastian Götz">Fragments are wrong by 1 day when using fragment YEAR or MONTH</action>
+ <action issue="LANG-417" type="add" dev="britter">New class ClassPathUtils with methods for turning FQN into resource path</action>
+ <action issue="LANG-939" type="update" dev="britter">Move Documentation from user guide to package-info files</action>
+ <action issue="LANG-953" type="update" dev="britter">Convert package.html files to package-info.java files</action>
+ <action issue="LANG-950" type="fix" dev="chas">FastDateParser does not handle two digit year parsing like SimpleDateFormat</action>
+ <action issue="LANG-949" type="fix" dev="chas">FastDateParserTest.testParses does not test FastDateParser</action>
+ <action issue="LANG-940" type="update" dev="britter">Fix deprecation warnings</action>
+ <action issue="LANG-819" type="update" dev="mbenson">EnumUtils.generateBitVector needs a "? extends"</action>
+ <action issue="LANG-834" type="add" dev="britter">Validate: add inclusiveBetween and exclusiveBetween overloads for primitive types</action>
+ <action issue="LANG-900" type="add" dev="britter" due-to="Duncan Jones">New RandomUtils class</action>
+ <action issue="LANG-915" type="fix" dev="britter" due-to="Sergio Fernández">Wrong locale handling in LocaleUtils.toLocale()</action>
+ <action issue="LANG-966" type="add" dev="ggregory">Add IBM OS/400 detection</action>
+ </release>
+
+ <release version="3.2.1" date="2014-01-05" description="Bug fix for 3.2">
+ <action issue="LANG-937" type="fix" dev="britter">Fix missing Hamcrest dependency in Ant Build</action>
+ <action issue="LANG-941" type="fix" dev="britter">Test failure in LocaleUtilsTest when building with JDK 8</action>
+ <action issue="LANG-942" type="fix" dev="britter" due-to="Bruno P. Kinoshita, Henri Yandell">Test failure in FastDateParserTest and FastDateFormat_ParserTest when building with JDK8</action>
+ <action issue="LANG-938" type="fix">Build fails with test failures when building with JDK 8</action>
+ </release>
+
+ <release version="3.2" date="2014-01-01" description="Bug fixes and new features, at least requires Java 6.0">
+ <action issue="LANG-934" type="add" dev="mcucchiara">Add removeFinalModifier to FieldUtils</action>
+ <action issue="LANG-863" type="add" due-to="Daneel S. Yaitskov" dev="sebb">Method returns number of inheritance hops between parent and subclass</action>
+ <action issue="LANG-932" type="fix" due-to="Ville Skyttä" dev="sebb">Spelling fixes</action>
+ <action issue="LANG-931" type="update" dev="britter" due-to="Christoph Schneegans">Misleading Javadoc comment in StrBuilderReader class</action>
+ <action issue="LANG-929" type="fix">OctalUnescaper tried to parse all of \279</action>
+ <action issue="LANG-928" type="fix">OctalUnescaper had bugs when parsing octals starting with a zero</action>
+ <action issue="LANG-905" type="fix">EqualsBuilder returned true when comparing arrays, even when the elements are different</action>
+ <action issue="LANG-774" type="add" due-to="Erhan Bagdemir">Added isStarted, isSuspended and isStopped to StopWatch</action>
+ <action issue="LANG-917" type="fix" due-to="Arne Burmeister">Fixed exception when combining custom and choice format in ExtendedMessageFormat</action>
+ <action issue="LANG-848" type="add" due-to="Alexander Muthmann">Added StringUtils.isBlank/isEmpty CharSequence... methods</action>
+ <action issue="LANG-926" type="add" dev="ggregory">Added ArrayUtils.reverse(array, from, to) methods</action>
+ <action issue="LANG-795" type="add" due-to="Aaron Digulla">StringUtils.toString(byte[], String) deprecated in favour of a new StringUtils.toString(byte[], CharSet)</action>
+ <action issue="LANG-902" type="fix" due-to="Andrzej Winnicki">RandomStringUtils.random javadoc was incorrectly promising letters and numbers would, as opposed to may, appear</action>
+ <action issue="LANG-921" type="fix" dev="britter">BooleanUtils.xor(boolean...) produces wrong results</action>
+ <action issue="LANG-910" type="update" due-to="Timur Yarosh">StringUtils.normalizeSpace now handles non-breaking spaces (Unicode 00A0)</action>
+ <action issue="LANG-804" type="update" dev="britter" due-to="Allon Mureinik">Redundant check for zero in HashCodeBuilder ctor</action>
+ <action issue="LANG-893" type="add" dev="oheger" due-to="Woonsan Ko">StrSubstitutor now supports default values for variables</action>
+ <action issue="LANG-913" type="add" dev="britter" due-to="Allon Mureinik">Adding .gitignore to commons-lang</action>
+ <action issue="LANG-837" type="add">Add ObjectUtils.toIdentityString methods that support StringBuilder, StrBuilder, and Appendable</action>
+ <action issue="LANG-896" type="fix" due-to="Mark Bryan Yu">BooleanUtils.toBoolean(String str) javadoc is not updated</action>
+ <action issue="LANG-879" type="fix">LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese" of JDK7</action>
+ <action issue="LANG-836" type="fix" due-to="Arnaud Brunet">StrSubstitutor does not support StringBuilder or CharSequence</action>
+ <action issue="LANG-693" type="fix" due-to="Calvin Echols">Method createNumber from NumberUtils doesn't work for floating point numbers other than Float</action>
+ <action issue="LANG-887" type="fix">FastDateFormat does not use the locale specific cache correctly</action>
+ <action issue="LANG-884" type="update">Simplify FastDateFormat; eliminate boxing</action>
+ <action issue="LANG-882" type="update">LookupTranslator now works with implementations of CharSequence other than String</action>
+ <action issue="LANG-754" type="fix">ClassUtils.getShortName(String) will now only do a reverse lookup for array types</action>
+ <action issue="LANG-886" type="add">Added CharSetUtils.containsAny(String, String)</action>
+ <action issue="LANG-846" type="update">Provide CharSequenceUtils.regionMatches with a proper green implementation instead of inefficiently converting to Strings</action>
+ <action issue="LANG-797" type="add">Added escape/unescapeJson to StringEscapeUtils</action>
+ <action issue="LANG-875" type="add">Added appendIfMissing and prependIfMissing methods to StringUtils</action>
+ <action issue="LANG-881" type="fix">NumberUtils.createNumber() Javadoc says it does not work for octal numbers</action>
+ <action type="fix">Fixed URLs in javadoc to point to new oracle.com pages</action>
+ <action issue="LANG-870" type="add">Add StringUtils.LF and StringUtils.CR values</action>
+ <action issue="LANG-873" type="add">Add FieldUtils getAllFields() to return all the fields defined in the given class and super classes</action>
+ <action issue="LANG-865" type="fix">LocaleUtils.toLocale does not parse strings starting with an underscore</action>
+ <action issue="LANG-835" type="add">StrBuilder should support StringBuilder as an input parameter</action>
+ <action issue="LANG-858" type="fix">StringEscapeUtils.escapeJava() and escapeEcmaScript() do not output the escaped surrogate pairs that are Java parsable</action>
+ <action issue="LANG-857" type="add">StringIndexOutOfBoundsException in CharSequenceTranslator</action>
+ <action issue="LANG-856" type="add">Code refactoring in NumberUtils</action>
+ <action issue="LANG-855" type="add">NumberUtils#createBigInteger does not allow for hex and octal numbers</action>
+ <action issue="LANG-854" type="add">NumberUtils#createNumber - does not allow for hex numbers to be larger than Long</action>
+ <action issue="LANG-853" type="add">StringUtils join APIs for primitives</action>
+ <action issue="LANG-849" type="fix">FastDateFormat and FastDatePrinter generates Date objects wastefully</action>
+ <action issue="LANG-845" type="fix">Spelling fixes</action>
+ <action issue="LANG-844" type="fix">Fix examples contained in javadoc of StringUtils.center methods</action>
+ <action issue="LANG-841" type="add">Add StringUtils API to call String.replaceAll in DOTALL a.k.a. single-line mode</action>
+ <action issue="LANG-839" type="update">ArrayUtils removeElements methods use unnecessary HashSet</action>
+ <action issue="LANG-838" type="update">ArrayUtils removeElements methods clone temporary index arrays unnecessarily</action>
+ <action issue="LANG-832" type="fix">FastDateParser does not handle unterminated quotes correctly</action>
+ <action issue="LANG-831" type="fix">FastDateParser does not handle white-space properly</action>
+ <action issue="LANG-830" type="fix">FastDateParser could use \Q \E to quote regexes</action>
+ <action issue="LANG-828" type="fix">FastDateParser does not handle non-Gregorian calendars properly</action>
+ <action issue="LANG-826" type="fix">FastDateParser does not handle non-ASCII digits correctly</action>
+ <action issue="LANG-825" type="add">Create StrBuilder APIs similar to String.format(String, Object...)</action>
+ <action issue="LANG-822" type="fix">NumberUtils#createNumber - bad behavior for leading "--"</action>
+ <action issue="LANG-818" type="fix">FastDateFormat's "z" pattern does not respect timezone of Calendar instances passed to format()</action>
+ <action issue="LANG-817" type="fix">Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8</action>
+ <action issue="LANG-813" type="fix">StringUtils.equalsIgnoreCase doesn't check string reference equality</action>
+ <action issue="LANG-810" type="fix">StringUtils.join() endIndex, bugged for loop</action>
+ <action issue="LANG-807" type="fix">RandomStringUtils throws confusing IAE when end &lt;= start</action>
+ <action issue="LANG-805" type="fix">RandomStringUtils.random(count, 0, 0, false, false, universe, random) always throws java.lang.ArrayIndexOutOfBoundsException</action>
+ <action issue="LANG-802" type="fix">LocaleUtils - unnecessary recursive call in SyncAvoid class.</action>
+ <action issue="LANG-800" type="fix">Javadoc bug in DateUtils#ceiling for Calendar and Object versions.</action>
+ <action issue="LANG-799" type="update">DateUtils#parseDate uses default locale; add Locale support</action>
+ <action issue="LANG-798" type="update">Use generics in SerializationUtils</action>
+ <action issue="LANG-788" type="fix">SerializationUtils throws ClassNotFoundException when cloning primitive classes</action>
+ <action issue="LANG-786" type="fix">StringUtils equals() relies on undefined behavior</action>
+ <action issue="LANG-783" type="fix">Documentation bug: StringUtils.split</action>
+ <action issue="LANG-777" type="fix">jar contains velocity template of release notes</action>
+ <action issue="LANG-776" type="fix">TypeUtilsTest contains incorrect type assignability assertion</action>
+ <action issue="LANG-775" type="fix">TypeUtils.getTypeArguments() misses type arguments for partially-assigned classes</action>
+ <action issue="LANG-773" type="fix">ImmutablePair doc contains nonsense text</action>
+ <action issue="LANG-772" type="fix">ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text</action>
+ <action issue="LANG-765" type="fix">EventListenerSupport.ProxyInvocationHandler no longer defines serialVersionUID</action>
+ <action issue="LANG-764" type="fix">StrBuilder is now serializable</action>
+ <action issue="LANG-761" type="fix">Fix Javadoc Ant warnings</action>
+ <action issue="LANG-747" type="fix">NumberUtils does not handle Long Hex numbers</action>
+ <action issue="LANG-743" type="fix">Javadoc bug in static inner class DateIterator</action>
+ <action issue="LANG-675" type="add">Add Triple class (ternary version of Pair)</action>
+ <action issue="LANG-462" type="add">FastDateFormat supports parse methods</action>
+ </release>
+
+ <release version="3.1" date="2011-11-14" description="November release">
+ <action type="add" issue="LANG-760">Add API StringUtils.toString(byte[] input, String charsetName)</action>
+ <action type="update" issue="LANG-758">Add an example with whitespace in StringUtils.defaultIfEmpty</action>
+ <action type="add" issue="LANG-756">Add APIs ClassUtils.isPrimitiveWrapper(Class&lt;?&gt;) and isPrimitiveOrWrapper(Class&lt;?&gt;)</action>
+ <action type="update" issue="LANG-752">Fix createLong() so it behaves like createInteger()</action>
+ <action type="update" issue="LANG-751">Include the actual type in the Validate.isInstance and isAssignableFrom exception messages</action>
+ <action type="fix" issue="LANG-749">Incorrect Bundle-SymbolicName in Manifest</action>
+ <action type="update" issue="LANG-748">Deprecating chomp(String, String)</action>
+ <action type="fix" issue="LANG-746">NumberUtils does not handle upper-case hex: 0X and -0X</action>
+ <action type="fix" issue="LANG-744">StringUtils throws java.security.AccessControlException on Google App Engine</action>
+ <action type="fix" issue="LANG-741">Ant build has wrong component.name</action>
+ <action type="update" issue="LANG-736">CharUtils static final array CHAR_STRING is not needed to compute CHAR_STRING_ARRAY</action>
+ <action type="fix" issue="LANG-698">Document that the Mutable numbers don't work as expected with String.format</action>
+ <action type="add" issue="LANG-695">SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system</action>
+ </release>
+
+ <release version="3.0.1" date="2011-08-09" description="August release">
+ <action type="fix" issue="LANG-626">SerializationUtils.clone: Fallback to context classloader if class not found in current classloader.</action>
+ <action type="fix" issue="LANG-727">ToStringBuilderTest.testReflectionHierarchyArrayList fails with IBM JDK 6.</action>
+ <action type="fix" issue="LANG-720">StringEscapeUtils.escapeXml(input) wrong when input contains characters in Supplementary Planes.</action>
+ <action type="fix" issue="LANG-708">StringEscapeUtils.escapeEcmaScript from lang3 cuts off long unicode string.</action>
+ <action type="update" issue="LANG-686">Improve exception message when StringUtils.replaceEachRepeatedly detects recursion.</action>
+ <action type="update" issue="LANG-717">Specify source encoding for Ant build.</action>
+ <action type="add" issue="LANG-721">Complement ArrayUtils.addAll() variants with by-index and by-value removal methods.</action>
+ <action type="add" issue="LANG-726">Add Range&lt;T&gt; Range&lt;T&gt;.intersectionWith(Range&lt;T&gt;).</action>
+ <action type="add" issue="LANG-723">Add mode and median Comparable... methods to ObjectUtils.</action>
+ <action type="add" issue="LANG-722">Add BooleanUtils.and + or varargs methods.</action>
+ <action type="add" issue="LANG-730">EnumSet -&gt; bit vector.</action>
+ <action type="fix" issue="LANG-734">The CHAR_ARRAY cache in CharUtils duplicates the cache in java.lang.Character.</action>
+ <action type="update" issue="LANG-735">Deprecate CharUtils.toCharacterObject(char) in favor of java.lang.Character.valueOf(char).</action>
+ <action type="add" issue="LANG-737">Missing method getRawMessage for ContextedException and ContextedRuntimeException.</action>
+ <action type="fix" issue="LANG-738">Use internal Java's Number caches instead creating new objects.</action>
+ </release>
+
+ <release version="3.0" date="2011-07-18" description="Backwards incompatible update of Commons Lang to Java 5">
+ <action type="fix" issue="LANG-720">StringEscapeUtils.escapeXml(input) outputs wrong results when an input contains characters in Supplementary Planes.</action>
+ <action type="update" issue="LANG-718">build.xml Java 1.5+ updates.</action>
+ <action type="fix" issue="LANG-716">swapCase and *capitalize speedups.</action>
+ <action type="fix" issue="LANG-715">CharSetUtils.squeeze() speedup.</action>
+ <action type="fix" issue="LANG-714">StringUtils doc/comment spelling fixes.</action>
+ <action type="update" issue="LANG-713">Increase test coverage of FieldUtils read methods and tweak Javadoc.</action>
+ <action type="fix" issue="LANG-711">Add includeantruntime=false to javac targets to quell warnings in ant 1.8.1 and better (and modest performance gain).</action>
+ <action type="fix" issue="LANG-710">StringIndexOutOfBoundsException when calling unescapeHtml4("&amp;#03").</action>
+ <action type="fix" issue="LANG-708">StringEscapeUtils.escapeEcmaScript from lang3 cuts off long Unicode string.</action>
+ <action type="fix" issue="LANG-703">StringUtils.join throws NPE when toString returns null for one of objects in collection.</action>
+ <action type="add" issue="LANG-697">Add FormattableUtils class.</action>
+ <action type="add">Add ClassUtils.getSimpleName() methods.</action>
+ <action type="add" issue="LANG-692">Add hashCodeMulti varargs method.</action>
+ <action type="remove" issue="LANG-691">Removed DateUtils.UTC_TIME_ZONE.</action>
+ <action type="update" issues="LANG-687">Convert more of the StringUtils API to take CharSequence.</action>
+ <action type="fix" issue="LANG-685">EqualsBuilder synchronizes on HashCodeBuilder.</action>
+ <action type="fix" issue="LANG-428">StringUtils.isAlpha, isAlphanumeric and isNumeric now return false for "".</action>
+ <action type="add" issue="LANG-678">Add support for ConcurrentMap.putIfAbsent().</action>
+ <action type="add" issue="LANG-676">Documented potential NPE if auto-boxing occurs for some BooleanUtils methods.</action>
+ <action type="fix" issue="LANG-677">DateUtils.isSameLocalTime compares using 12-hour clock and not 24-hour.</action>
+ <action type="add" issue="LANG-610">Extend exception handling in ConcurrentUtils to runtime exceptions.</action>
+ <action type="fix" issue="LANG-624">SystemUtils.getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM.</action>
+ <action type="remove" issue="LANG-673">WordUtils.abbreviate() removed.</action>
+ <action type="fix" issue="LANG-672">Doc bug in DateUtils#ceiling.</action>
+ <action type="fix" issue="LANG-646">StringEscapeUtils.unescapeJava doesn't handle octal escapes and Unicode with extra u.</action>
+ <action type="fix" issue="LANG-662">org.apache.commons.lang3.math.Fraction does not reduce (Integer.MIN_VALUE, 2^k).</action>
+ <action type="fix" issue="LANG-663">org.apache.commons.lang3.math.Fraction does not always succeed in multiplyBy and divideBy.</action>
+ <action type="update" issue="LANG-668">Change ObjectUtils min() &amp; max() functions to use varargs rather than just two parameters.</action>
+ <action type="add" issue="LANG-667">Add a Null-safe compare() method to ObjectUtils.</action>
+ <action type="fix" issue="LANG-664">NumberUtils.isNumber(String) is not right when the String is "1.1L".</action>
+ <action type="fix" issue="LANG-659">EntityArrays typo: {"\u2122", "&amp;minus;"}, // minus sign, U+2212 ISOtech.</action>
+ <action type="fix" issue="LANG-658">Some entities like &amp;Ouml; are not matched properly against its ISO8859-1 representation.</action>
+ <action type="fix" issue="LANG-656">Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect.</action>
+ <action type="add" issue="LANG-655">Add StringUtils.defaultIfBlank().</action>
+ <action type="add" issue="LANG-653">Provide a very basic ConcurrentInitializer implementation.</action>
+ <action type="add" issue="LANG-609">Support lazy initialization using atomic variables.</action>
+ <action type="add" issue="LANG-482">Enhance StrSubstitutor to support nested ${var-${subvr}} expansion.</action>
+ <action type="add" issue="LANG-644">Provide documentation about the new concurrent package.</action>
+ <action type="fix" issue="LANG-629">Charset may not be threadsafe, because the HashSet is not synch.</action>
+ <action type="fix" issue="LANG-617">StringEscapeUtils.escapeXML() can't process UTF-16 supplementary characters.</action>
+ <action type="add" issue="LANG-614">StringUtils.endsWithAny method.</action>
+ <action type="add" issue="LANG-651">Add AnnotationUtils.</action>
+ <action type="add" issue="LANG-649">BooleanUtils.toBooleanObject to support single character input.</action>
+ <action type="fix" issue="LANG-645">FastDateFormat.format() outputs incorrect week of year because locale isn't respected.</action>
+ <action type="fix" issue="LANG-596">StrSubstitutor should also handle the default properties of a java.util.Properties class.</action>
+ <action type="fix" issue="LANG-643">Javadoc StringUtils.left() claims to throw on negative len, but doesn't.</action>
+ <action type="add" issue="LANG-640">Add normalizeSpace to StringUtils.</action>
+ <action type="fix" issue="LANG-638">NumberUtils createNumber throws a StringIndexOutOfBoundsException when argument containing "e" and "E" is passed in.</action>
+ <!-- 3.0 beta below here -->
+ <action>NOTE: The below were included in the Commons Lang 3.0-beta release.</action>
+ <action type="update" issues="LANG-510">Convert StringUtils API to take CharSequence.</action>
+ <action type="update">Push down WordUtils to "text" sub-package.</action>
+ <action type="add" issue="LANG-610">Extend exception handling in ConcurrentUtils to runtime exceptions.</action>
+ <action type="fix" issue="LANG-608">Some StringUtils methods should take an int character instead of char to use String API features.</action>
+ <action type="fix" issue="LANG-606">EqualsBuilder causes StackOverflowException.</action>
+ <action type="update" issue="LANG-605">DefaultExceptionContext overwrites values in recursive situations.</action>
+ <action type="fix" issue="LANG-602">ContextedRuntimeException no longer an 'unchecked' exception.</action>
+ <action type="add" issue="LANG-601">Add Builder Interface / Update Builders to Implement It.</action>
+ <action type="fix" issue="LANG-600">Javadoc is incorrect for public static int lastIndexOf(String str, String searchStr).</action>
+ <action type="update" issue="LANG-599">ClassUtils.getClass(): Allow Dots as Inner Class Separators.</action>
+ <action type="add" issue="LANG-594">DateUtils equal &amp; compare functions up to most significant field.</action>
+ <action type="remove" issue="LANG-590">Remove JDK 1.2/1.3 bug handling in StringUtils.indexOf(String, String, int).</action>
+ <action type="add" issue="LANG-588">Create a basic Pair&lt;L, R&gt; class.</action>
+ <action type="fix" issue="LANG-585">exception.DefaultExceptionContext.getFormattedExceptionMessage catches Throwable.</action>
+ <action type="add" issue="LANG-582">Provide an implementation of the ThreadFactory interface.</action>
+ <action type="update" issue="LANG-579">Add new Validate methods.</action>
+ <action type="fix" issue="LANG-571">ArrayUtils.add(T[] array, T element) can create unexpected ClassCastException.</action>
+ <action type="update" issue="LANG-570">Do the test cases really still require main() and suite() methods?.</action>
+ <action type="fix" issue="LANG-568">@SuppressWarnings("unchecked") is used too generally.</action>
+ <action type="fix" issue="LANG-564">Improve StrLookup API documentation.</action>
+ <action type="update" issue="LANG-563">Change Java package name.</action>
+ <action type="update" issue="LANG-562">Change Maven groupId.</action>
+ <action type="add" issue="LANG-560">New TimedSemaphore class.</action>
+ <action type="add" issue="LANG-559">Added validState validation method.</action>
+ <action type="add" issue="LANG-559">Added isAssignableFrom and isInstanceOf validation methods.</action>
+ <action type="add" issue="LANG-553">Add TypeUtils class to provide utility code for working with generic types.</action>
+ <action type="update" issue="LANG-551">Replace Range classes with generic version.</action>
+ <action type="update" issue="LANG-548">Use Iterable on API instead of Collection.</action>
+ <action type="add" issue="LANG-546">Add methods to Validate to check whether the index is valid for the array/list/string.</action>
+ <action type="add" issue="LANG-545">Add ability to create a Future for a constant.</action>
+ <action type="update" issue="LANG-541">Replace StringBuffer with StringBuilder.</action>
+ <action type="update" issue="LANG-540">Make NumericEntityEscaper immutable.</action>
+ <action type="update" issue="LANG-539">Compile commons.lang for CDC 1.1/Foundation 1.1.</action>
+ <action type="add" issue="LANG-537">Add ArrayUtils.toArray to create generic arrays.</action>
+ <action type="add" issue="LANG-533">Validate: support for validating blank strings.</action>
+ <action type="add" issue="LANG-529">Add a concurrent package.</action>
+ <action type="update" issue="LANG-528">Mutable classes should implement an appropriately typed Mutable interface.</action>
+ <action type="update" issue="LANG-513">Better EnumUtils.</action>
+ <action type="update" issue="LANG-507">StringEscapeUtils.unescapeJava should support \u+ notation.</action>
+ <action type="update" issue="LANG-505">Rewrite StringEscapeUtils.</action>
+ <action type="update" issue="LANG-504">bring ArrayUtils.isEmpty to the generics world.</action>
+ <action type="add" issue="LANG-501">Add support for background initialization.</action>
+ <action type="add" issue="LANG-499">Add support for the handling of ExecutionExceptions.</action>
+ <action type="add" issue="LANG-498">Add StringEscapeUtils.escapeText() methods.</action>
+ <action type="add" issue="LANG-497">Addition of ContextedException and ContextedRuntimeException.</action>
+ <action type="add" issue="LANG-496">A generic implementation of the Lazy initialization pattern.</action>
+ <action type="remove" issue="LANG-493">Remove code that does not hold enough value to remain.</action>
+ <action type="remove" issue="LANG-492">Remove code handled now by the JDK.</action>
+ <action type="add" issue="LANG-482">StrSubstitutor now supports substitution in variable names.</action>
+ <action type="fix" issue="LANG-481">Possible race-conditions in hashCode of the range classes.</action>
+ <action type="fix" issue="LANG-480">StringEscapeUtils.escapeHtml incorrectly converts Unicode characters above U+00FFFF into 2 characters.</action>
+ <action type="update" issue="LANG-479">Document where in SVN trunk is.</action>
+ <action type="fix" issue="LANG-478">StopWatch does not resist to system time changes.</action>
+ <action type="fix" issue="LANG-474">Fixes for thread safety.</action>
+ <action type="update" issue="LANG-458">Refactor Validate.java to eliminate code redundancy.</action>
+ <action type="fix" issue="LANG-448">Lower Ascii Characters don't get encoded by Entities.java.</action>
+ <action type="add" issue="LANG-444">StringUtils.emptyToNull.</action>
+ <action type="fix" issue="LANG-439">StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).</action>
+ <action type="remove" issue="LANG-438">Remove @deprecateds.</action>
+ <action type="add" issue="LANG-435">Add ClassUtils.isAssignable() variants with autoboxing.</action>
+ <action type="update" issue="LANG-424">Improve Javadoc for StringUtils class.</action>
+ <action type="fix" issue="LANG-418">Javadoc incorrect for StringUtils.endsWithIgnoreCase.</action>
+ <action type="update" issue="LANG-396">Investigate for vararg usages.</action>
+ <action type="fix" issue="LANG-468">JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).</action>
+ <action type="add" issue="LANG-386">LeftOf/RightOfNumber in Range convenience methods necessary.</action>
+ <action type="fix" issue="LANG-369">ExceptionUtils not thread-safe.</action>
+ <action type="add" issue="LANG-358">ObjectUtils.coalesce.</action>
+ <action type="update" issue="LANG-355">StrBuilder should implement CharSequence and Appendable.</action>
+ <action type="fix" issue="LANG-339">StringEscapeUtils.escapeHtml() escapes multibyte characters like Chinese, Japanese, etc.</action>
+ <action type="update" issue="LANG-336">Finally start using generics.</action>
+ <action type="fix" issue="LANG-302">StrBuilder does not implement clone().</action>
+ <action type="update" issue="LANG-290">EnumUtils for JDK 5.0.</action>
+ <action type="add" issue="LANG-285">Wish : method unaccent.</action>
+ <action type="add" issue="LANG-276">MutableBigDecimal and MutableBigInteger.</action>
+ <action type="fix" issue="LANG-66">StringEscaper.escapeXml() escapes characters &gt; 0x7f.</action>
+ <action type="fix" issue="LANG-11">Depend on JDK 1.5+.</action>
+ </release>
+
+ <release version="2.6" date="2011-01-16" description="Bug Fixes/Enhancements for the 2.6 release (requires minimum of Java 1.3)">
+ <action type="update" issue="LANG-633">BooleanUtils: use same optimization in toBooleanObject(String) as in toBoolean(String).</action>
+ <action type="update" issue="LANG-599">ClassUtils: allow Dots as Inner Class Separators in getClass().</action>
+ <action type="add" issue="LANG-594">DateUtils: equal and compare functions up to most significant field.</action>
+ <action type="add" issue="LANG-632">DateUtils: provide a Date to Calendar convenience method.</action>
+ <action type="add" issue="LANG-576">ObjectUtils: add clone methods to ObjectUtils.</action>
+ <action type="add" issue="LANG-667">ObjectUtils: add a Null-safe compare() method.</action>
+ <action type="add" issue="LANG-670">ObjectUtils: add notEqual() method.</action>
+ <action type="add" issue="LANG-302">StrBuilder: implement clone() method.</action>
+ <action type="add" issue="LANG-640">StringUtils: add a normalizeSpace() method.</action>
+ <action type="add" issue="LANG-614">StringUtils: add endsWithAny() method.</action>
+ <action type="add" issue="LANG-655">StringUtils: add defaultIfBlank() method.</action>
+ <action type="add" issue="LANG-596">StrSubstitutor: add a replace(String, Properties) variant.</action>
+ <action type="add" issue="LANG-482">StrSubstitutor: support substitution in variable names.</action>
+ <action type="update" issue="LANG-669">Use StrBuilder instead of StringBuffer to improve performance where sync. is not an issue.</action>
+ <action type="fix" issue="LANG-629">CharSet: make the underlying set synchronized.</action>
+ <action type="fix" issue="LANG-635">CompareToBuilder: fix passing along compareTransients to the reflectionCompare method.</action>
+ <action type="fix" issue="LANG-636">ExtendedMessageFormat doesn't override equals(Object).</action>
+ <action type="fix" issue="LANG-645">FastDateFormat: fix to properly include the locale when formatting a Date.</action>
+ <action type="fix" issue="LANG-638">NumberUtils: createNumber() throws a StringIndexOutOfBoundsException when argument containing "e" and "E" is passed in.</action>
+ <action type="fix" issue="LANG-607">StringUtils methods do not handle Unicode 2.0+ supplementary characters correctly.</action>
+ <action type="fix" issue="LANG-624">SystemUtils: getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM.</action>
+ <action type="fix" issue="BEANUTILS-381">MemberUtils: getMatchingAccessibleMethod does not correctly handle inheritance and method overloading.</action>
+ <action type="update" issue="LANG-600">Javadoc is incorrect for lastIndexOf() method.</action>
+ <action type="update" issue="LANG-628">Javadoc for HashCodeBuilder.append(boolean) does not match implementation.</action>
+ <action type="update" issue="LANG-643">Javadoc StringUtils.left() claims to throw an exception on negative length, but doesn't.</action>
+ <action type="update" issue="LANG-370">Javadoc - document thread safety.</action>
+ <action type="update" issue="LANG-623">Test for StringUtils replaceChars() icelandic characters.</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-348">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() throws 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 Javadoc 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>
+ <action type="fix" issue="LANG-368">FastDateFormat getDateInstance() and getDateTimeInstance() assume Locale.getDefault() won't change.</action>
+ <action type="add" issue="LANG-402">OSGi-ify Lang.</action>
+ <action type="fix" issue="LANG-412">StrBuilder appendFixedWidth does not handle nulls.</action>
+ <action type="fix" issue="LANG-380">infinite loop in Fraction.reduce when numerator == 0.</action>
+ <action type="fix" issue="LANG-367">FastDateFormat thread safety.</action>
+ <action type="add" issue="LANG-298">ClassUtils.getShortClassName and ClassUtils.getPackageName and class of array.</action>
+ <action type="fix" issue="LANG-328">LocaleUtils.toLocale() rejects strings with only language+variant.</action>
+ <action type="fix" issue="LANG-334">Enum is not thread-safe.</action>
+ <action type="fix" issue="LANG-365">BooleanUtils.toBoolean() - invalid drop-thru in case statement causes StringIndexOutOfBoundsException.</action>
+ <action type="add" issue="LANG-333">ArrayUtils.toClass.</action>
+ <action type="fix" issue="LANG-360">Why does appendIdentityToString return null?.</action>
+ <action type="fix" issue="LANG-381">NumberUtils.min(floatArray) returns wrong value if floatArray[0] happens to be Float.NaN.</action>
+ <action type="fix" issue="LANG-346">Dates.round() behaves incorrectly for minutes and seconds.</action>
+ <action type="add" issue="LANG-407">StringUtils.length(String) returns null-safe length.</action>
+ <action type="add" issue="LANG-180">adding a StringUtils.replace method that takes an array or List of replacement strings.</action>
+ <action type="add" issue="LANG-383">Adding functionality to DateUtils to allow direct setting of various fields.</action>
+ <action type="add" issue="LANG-374">Add escaping for CSV columns to StringEscapeUtils.</action>
+ <action type="add" issue="LANG-326">StringUtils: startsWith / endsWith / startsWithIgnoreCase / endsWithIgnoreCase / removeStartIgnoreCase / removeEndIgnoreCase methods.</action>
+ <action type="add" issue="LANG-351">Extension to ClassUtils: Obtain the primitive class from a wrapper.</action>
+ <action type="fix" issue="LANG-399">Javadoc bugs - cannot find object.</action>
+ <action type="add" issue="LANG-345">Optimize HashCodeBuilder.append(Object).</action>
+ <action type="fix" issue="LANG-385">https://commons.apache.org/proper/commons-lang/developerguide.html "Building" section is incorrect and incomplete.</action>
+ <action type="fix" issue="LANG-410">Ambiguous / confusing names in StringUtils replace* methods.</action>
+ <action type="add" issue="LANG-257">Add new splitByWholeSeparatorPreserveAllTokens() methods to StringUtils.</action>
+ <action type="add" issue="LANG-356">Add getStartTime to StopWatch.</action>
+ <action type="add" issue="LANG-377">Perhaps add containsAny() methods?.</action>
+ <action type="fix" issue="LANG-353">Javadoc Example for EqualsBuilder is questionable.</action>
+ <action type="fix" issue="LANG-393">EqualsBuilder don't compare BigDecimals correctly.</action>
+ <action type="add" issue="LANG-192">Split camel case strings.</action>
+ <action type="add" issue="LANG-404">Add Calendar flavour format methods to DateFormatUtils.</action>
+ <action type="add" issue="LANG-379">Calculating A date fragment in any time-unit.</action>
+ <action type="add" issue="LANG-413">Memory usage improvement for StringUtils#getLevenshteinDistance().</action>
+ <action type="add" issue="LANG-362">Add ExtendedMessageFormat to org.apache.commons.lang.text.</action>
+ <action type="fix" issue="LANG-363">StringEscapeUtils.escapeJavaScript() method did not escape '/' into '\/', it will make IE render page incorrectly.</action>
+ <action type="add" issue="LANG-321">Add toArray() method to IntRange and LongRange classes.</action>
+ <action type="add" issue="LANG-375">add SystemUtils.IS_OS_WINDOWS_VISTA field.</action>
+ <action type="add" issue="LANG-329">Pointless synchronized in ThreadLocal.initialValue should be removed.</action>
+ <action type="add" issue="LANG-371">ToStringStyle Javadoc should show examples of styles.</action>
+ <action type="fix" issue="LANG-364">Documentation bug for ignoreEmptyTokens accessors in StrTokenizer.</action>
+ <action type="fix" issue="LANG-361">BooleanUtils toBooleanObject Javadoc does not match implementation.</action>
+ <action type="add" issue="LANG-338">truncateNicely method which avoids truncating in the middle of a word.</action>
+ </release>
+
+ <release version="2.3" date="2007-02-13" description="">
+ <action type="fix" issue="LANG-262">Use of enum prevents a classloader from being garbage collected resulting in out of memory exceptions.</action>
+ <action type="add" issue="LANG-289">NumberUtils.max(byte[]) and NumberUtils.min(byte[]) are missing.</action>
+ <action type="add" issue="LANG-291">Null-safe comparison methods for finding the most recent / least recent dates.</action>
+ <action type="fix" issue="LANG-315">StopWatch: suspend() acts as split(), if followed by stop().</action>
+ <action type="fix" issue="LANG-294">StrBuilder.replaceAll and StrBuilder.deleteAll can throw ArrayIndexOutOfBoundsException.</action>
+ <action type="fix" issue="LANG-299">Bug in method appendFixedWidthPadRight of class StrBuilder causes an ArrayIndexOutOfBoundsException.</action>
+ <action type="fix" issue="LANG-69"> ToStringBuilder throws StackOverflowError when an Object cycle exists.</action>
+ <action type="add" issue="LANG-282">Create more tests to test out the +=31 replacement code in DurationFormatUtils.</action>
+ <action type="fix" issue="LANG-295">StrBuilder contains usages of thisBuf.length when they should use size.</action>
+ <action type="add" issue="LANG-258">Enum Javadoc: 1) outline 5.0 native Enum migration 2) warn not to use the switch() , 3) point out approaches for persistence and gui.</action>
+ <action type="fix" issue="LANG-313">Wrong behavior of Entities.unescape.</action>
+ <action type="fix" issue="LANG-300">NumberUtils.createNumber throws NumberFormatException for one digit long.</action>
+ <action type="fix" issue="LANG-304">NullPointerException in isAvailableLocale(Locale).</action>
+ <action type="fix" issue="LANG-303">FastDateFormat.mRules is not transient or serializable.</action>
+ <action type="add" issue="LANG-268">StringUtils.join should allow you to pass a range for it (so it only joins a part of the array).</action>
+ <action type="fix" issue="LANG-102">Refactor Entities methods.</action>
+ <action type="fix" issue="LANG-314">Tests fail to pass when building with Maven 2.</action>
+ <action type="fix" issue="LANG-281">DurationFormatUtils returns wrong result.</action>
+ <action type="fix" issue="LANG-292">unescapeXml("&amp;12345678;") should be "&amp;12345678;".</action>
+ <action type="add" issue="LANG-287">Optimize StringEscapeUtils.unescapeXml(String).</action>
+ <action type="add" issue="LANG-310">BooleanUtils isNotTrue/isNotFalse.</action>
+ <action type="add" issue="LANG-306">Extra StrBuilder methods.</action>
+ <action type="add" issue="LANG-275">Add a pair of StringUtils.substringsBetween;String[] methods.</action>
+ <action type="fix" issue="LANG-279">HashCodeBuilder throws java.lang.StackOverflowError when an object contains a cycle.</action>
+ <action type="add" issue="LANG-266">Wish for StringUtils.join(Collection, *).</action>
+ </release>
+
+ <release version="2.2" date="2006-10-04" description="">
+ <action type="fix" issue="LANG-45">StrBuilderTest#testReplaceStringString fails.</action>
+ <action type="fix" issue="LANG-42">EqualsBuilder.append(Object[], Object[]) crashes with a NullPointerException if an element of the first array is null.</action>
+ <action type="fix" issue="LANG-286">Serialization - not backwards compatible.</action>
+ <action type="fix" issue="LANG-50"> Replace Clover with Cobertura.</action>
+ <action type="fix" issue="LANG-259">ValuedEnum.compareTo(Object other) not typesafe - it easily could be...</action>
+ <action type="fix" issue="LANG-271">LocaleUtils test fails under Mustang.</action>
+ <action type="fix" issue="LANG-2">Javadoc example for StringUtils.splitByWholeSeparator incorrect.</action>
+ <action type="fix" issue="LANG-3">PADDING array in StringUtils overflows on '\uffff'.</action>
+ <action type="fix" issue="LANG-10">ClassUtils.primitiveToWrapper and Void.</action>
+ <action type="fix" issue="LANG-37">unit test for org.apache.commons.lang.text.StrBuilder.</action>
+ <action type="fix" issue="LANG-59">DateUtils.truncate method is buggy when dealing with DST switching hours.</action>
+ <action type="fix" issue="LANG-100">RandomStringUtils.random() family of methods create invalid Unicode sequences.</action>
+ <action type="fix" issue="LANG-106">StringUtils#getLevenshteinDistance() performance is sub-optimal.</action>
+ <action type="fix" issue="LANG-112">Wrong length check in StrTokenizer.StringMatcher.</action>
+ <action type="fix" issue="LANG-105">ExceptionUtils goes into infinite loop in getThrowables is throwable.getCause() == throwable.</action>
+ <action type="fix" issue="LANG-117">FastDateFormat: wrong format for date "01.01.1000".</action>
+ <action type="fix" issue="LANG-123">Unclear Javadoc for DateUtils.iterator().</action>
+ <action type="fix" issue="LANG-130">Memory "leak" in StringUtils.</action>
+ <action type="add" issue="LANG-260">StringEscapeUtils should expose escape*() methods taking Writer argument.</action>
+ <action type="fix" issue="LANG-141">Fraction.toProperString() returns -1/1 for -1.</action>
+ <action type="fix" issue="LANG-152">DurationFormatUtils.formatDurationWords "11 &lt;unit&gt;s" gets converted to "11 &lt;unit&gt;".</action>
+ <action type="fix" issue="LANG-148">Performance modifications on StringUtils.replace.</action>
+ <action type="fix" issue="LANG-150">StringEscapeUtils.unescapeHtml skips first entity after standalone ampersand.</action>
+ <action type="fix" issue="LANG-140">DurationFormatUtils.formatPeriod() returns the wrong result.</action>
+ <action type="add" issue="LANG-186">Request for MutableBoolean implementation.</action>
+ <action type="add" issue="LANG-198">New method for EqualsBuilder.</action>
+ <action type="add" issue="LANG-212">New ExceptionUtils method setCause().</action>
+ <action type="add" issue="LANG-217">Add Mutable&lt;Type&gt; to&lt;Type&gt;() methods.</action>
+ <action type="add" issue="LANG-216">Provides a Class.getPublicMethod which returns public invocable Method.</action>
+ <action type="add" issue="LANG-226">Using ReflectionToStringBuilder and excluding secure fields.</action>
+ <action type="add" issue="LANG-194">add generic add method to DateUtils.</action>
+ <action type="add" issue="LANG-220">Tokenizer Enhancements: reset input string, static CSV/TSV factories.</action>
+ <action type="add" issue="LANG-242">Trivial cleanup of Javadoc in various files.</action>
+ <action type="add" issue="LANG-246">CompositeFormat.</action>
+ <action type="add" issue="LANG-250">Performance boost for RandomStringUtils.</action>
+ <action type="add" issue="LANG-254">Enhanced Class.forName version.</action>
+ <action type="add" issue="LANG-263">Add StringUtils.containsIgnoreCase(...).</action>
+ <action type="add" issue="LANG-267">Support char array converters on ArrayUtils.</action>
+ <action type="fix" issue="LANG-25">DurationFormatUtils.formatDurationISO() Javadoc is missing T in duration string between date and time part.</action>
+ <action type="fix" issue="LANG-272">Minor build and checkstyle changes.</action>
+ <action type="fix" issue="LANG-277">Javadoc errors on StringUtils.splitPreserveAllTokens(String, char).</action>
+ <action type="fix" issue="LANG-122">EscapeUtil.escapeHtml() should clarify that it does not escape ' chars to &amp;apos;.</action>
+ <action type="add" issue="LANG-161">Add methods and tests to StrBuilder.</action>
+ <action type="add" issue="LANG-162">replace() length calculation improvement.</action>
+ <action type="add" issue="LANG-166">New interpolation features.</action>
+ <action type="add" issue="LANG-169">Implementation of escape/unescapeHtml methods with Writer.</action>
+ <action type="add" issue="LANG-176">CompareToBuilder excludeFields for reflection method.</action>
+ <action type="add" issue="LANG-159">Add WordUtils.getInitials(String).</action>
+ <action type="fix" issue="LANG-261">Error in an example in the Javadoc of the StringUtils.splitPreserveAllTokens() method.</action>
+ <action type="fix" issue="LANG-264">ToStringBuilder/HashCodeBuilder Javadoc code examples.</action>
+ <action type="fix" issue="LANG-265">Cannot build tests from latest SVN.</action>
+ <action type="add" issue="LANG-270">minor Javadoc improvements for StringUtils.stripXxx() methods.</action>
+ <action type="fix" issue="LANG-278">Javadoc for StringUtils.removeEnd is incorrect.</action>
+ <action type="fix" issue="LANG-127">Minor tweak to fix of bug # 26616.</action>
+ </release>
+
+ <release version="2.1" date="2005-06-13" description="">
+ <action type="fix" issue="LANG-103">make optional parameters in FastDateFormat really optional.</action>
+ <action type="fix" issue="LANG-149">Nestable.indexOfThrowable(Class) uses Class.equals() to match.</action>
+ <action type="fix" issue="LANG-30">buffer under/overrun on Strings.strip, stripStart &amp; stripEnd.</action>
+ <action type="fix" issue="LANG-19">ToStringStyle.setArrayEnd(String) doesn't replace null with empty string.</action>
+ <action type="fix" issue="LANG-80">New class proposal: CharacterEncoding.</action>
+ <action type="fix" issue="LANG-43">SystemUtils fails init on HP-UX.</action>
+ <action type="fix" issue="LANG-134">Javadoc - 'four basic XML entities' should be 5 (apos is missing).</action>
+ <action type="fix" issue="LANG-156">o.a.c.lang.enum.ValuedEnum: 'enum' is a keyword in JDK 1.5.0.</action>
+ <action type="fix" issue="LANG-131">StringEscapeUtils.unescapeHtml() doesn't handle an empty entity.</action>
+ <action type="fix" issue="LANG-6">EqualsBuilder.append(Object[], Object[]) incorrectly checks that rhs[i] is instance of lhs[i]'s class.</action>
+ <action type="fix" issue="LANG-33">Method enums.Enum.equals(Object o) doesn't work correctly.</action>
+ <action type="fix" issue="LANG-31">ExceptionUtils.addCauseMethodName(String) does not check for duplicates.</action>
+ <action type="fix" issue="LANG-136">Make StopWatch validate state transitions.</action>
+ <action type="fix" issue="LANG-124">enum package is not compatible with 1.5 jdk.</action>
+ <action type="fix" issue="LANG-128">WordUtils capitalizeFully() throws a null pointer exception.</action>
+ <action type="fix" issue="LANG-138">ValuedEnum.</action>
+ <action type="fix" issue="LANG-133">parseDate class from HttpClient's DateParser class.</action>
+ <action type="fix" issue="LANG-62">ArrayUtils.isEquals() throws ClassCastException when array1 and array2 are different dimension.</action>
+ <action type="fix" issue="LANG-57">ClassCastException in Enum.equals(Object).</action>
+ <action type="fix" issue="LANG-107">FastDateFormat year bug.</action>
+ <action type="fix" issue="LANG-77">unbalanced ReflectionToStringBuilder.</action>
+ <action type="fix" issue="LANG-86">FastDateFormat.getDateInstance(int, Locale) always uses the pattern from the first invocation.</action>
+ <action type="fix" issue="LANG-79">ReflectionToStringBuilder.toString(null) throws exception by design.</action>
+ <action type="fix" issue="LANG-126">Make ClassUtils methods null-safe and not throw an IAE.</action>
+ <action type="fix" issue="LANG-5">StringUtils.split ignores empty items.</action>
+ <action type="fix" issue="LANG-144">EqualsBuilder.append(Object[], Object[]) throws NPE.</action>
+ <action type="fix" issue="LANG-74">ArrayUtils.addAll doesn't always return new array.</action>
+ <action type="fix" issue="LANG-81">Enum.equals does not handle different class loaders.</action>
+ <action type="fix" issue="LANG-27">Add SystemUtils.AWT_TOOLKIT and others.</action>
+ <action type="fix" issue="LANG-14">Throwable cause for NotImplementedException.</action>
+ <action type="fix" issue="LANG-28">ClassUtils.primitivesToWrappers method.</action>
+ <action type="fix" issue="LANG-120">public static boolean DateUtils.equals(Date dt1, Date dt2) ?.</action>
+ <action type="fix" issue="LANG-7">Documentation error in StringUtils.replace.</action>
+ <action type="fix" issue="LANG-125">DateUtils constants should be long.</action>
+ <action type="fix" issue="LANG-13">DateUtils.truncate() is off by one hour when using a date in DST switch 'zone'.</action>
+ <action type="fix" issue="LANG-118">StringEscapeUtils.unescapeHtml() doesn't handle hex entities.</action>
+ <action type="fix" issue="LANG-99">new StringUtils.replaceChars behaves differently from old CharSetUtils.translate.</action>
+ <action type="fix" issue="LANG-41">last substring returned by StringUtils.split( String, String, int ) is too long.</action>
+ <action type="fix" issue="LANG-119">Can't subclass EqualsBuilder because isEquals is private.</action>
+ <action type="fix" issue="LANG-158">new StringUtils.split methods that split on the whole separator string.</action>
+ <action type="add" issue="LANG-172">New method for converting a primitive Class to its corresponding wrapper Class.</action>
+ <action type="add" issue="LANG-222">Add convenience format(long) methods to FastDateFormat.</action>
+ <action type="fix" issue="LANG-116">Enum's outer class may not be loaded for EnumUtils.</action>
+ <action type="add" issue="LANG-219">WordUtils.capitalizeFully(String str) should take a delimiter.</action>
+ <action type="add" issue="LANG-183">Make Javadoc cross-linking configurable.</action>
+ <action type="fix" issue="LANG-82">Minor Javadoc fixes for StringUtils.contains(String, String).</action>
+ <action type="fix" issue="LANG-32">Error in Javadoc for StringUtils.chomp(String, String).</action>
+ <action type="fix" issue="LANG-95">StringUtils.defaultString: Documentation error.</action>
+ <action type="add" issue="LANG-233">Add hashCode-support to class ObjectUtils.</action>
+ <action type="add" issue="LANG-202">add another "known method" to ExceptionUtils.</action>
+ <action type="add" issue="LANG-235">Enhancement of ExceptionUtils.CAUSE_METHOD_NAMES.</action>
+ <action type="fix" issue="LANG-24">DateUtils.truncate oddity at the far end of the Date spectrum.</action>
+ <action type="add" issue="LANG-232">add getLength() method to ArrayUtils.</action>
+ <action type="add" issue="LANG-171">Validate.java: fixes comment skew, removes unused loop counter.</action>
+ <action type="add" issue="LANG-179">StringUtils.isAsciiPrintable().</action>
+ <action type="add" issue="LANG-167">ExceptionUtils: new getCause() methodname (for tomcat-exception).</action>
+ <action type="fix" issue="LANG-85">fixes 75 typos.</action>
+ <action type="add" issue="LANG-230">mutable numbers.</action>
+ <action type="add" issue="LANG-191">Javadoc fixes for ClassUtils.</action>
+ <action type="add" issue="LANG-184">Add StringUtils.nIndexOf?.</action>
+ <action type="fix" issue="LANG-135">Javadoc fixes for CharSetUtils.</action>
+ <action type="fix" issue="LANG-154">Remove redundant check for null separator in StringUtils#join.</action>
+ <action type="add" issue="LANG-247">Class and Package Comparators for ClassUtils.</action>
+ <action type="add" issue="LANG-256">add remove methods to ArrayUtils.</action>
+ <action type="add" issue="LANG-185">WordUtils capitalize improvement.</action>
+ <action type="add" issue="LANG-173">add isEmpty method to ArrayUtils.</action>
+ <action type="add" issue="LANG-168">lang.math.Fraction class deficiencies.</action>
+ <action type="add" issue="LANG-207">Add methods to ArrayUtils: add at end and insert-like ops.</action>
+ <action type="add" issue="LANG-239">Add SystemUtils methods for directory properties.</action>
+ <action type="add" issue="LANG-189">Add method that validates Collection elements are a certain type.</action>
+ <action type="add" issue="LANG-224">elapsed time formatting utility method.</action>
+ </release>
+
+ <release version="2.0" date="2003-09-02" description="">
+ <action type="fix" issue="LANG-20">Infinite loop in ToStringBuilder.reflectionToString for inner classes.</action>
+ <action type="fix" issue="LANG-75">NumberUtils.createBigDecimal("") NPE in Sun 1.3.1_08.</action>
+ <action type="fix" issue="LANG-38">Rationalize StringUtils slice functions.</action>
+ <action type="fix" issue="LANG-53">SystemUtils.IS_OS_OS2 Javadoc is wrong.</action>
+ <action type="fix" issue="LANG-142">A small, but important Javadoc fix for Fraction proper whole and numerator.</action>
+ <action type="fix" issue="LANG-70">Adding tolerance to double[] search methods in ArrayUtils.</action>
+ <action type="fix" issue="LANG-9">lang.builder classes Javadoc edits (mostly typo fixes).</action>
+ <action type="fix" issue="LANG-63">StringUtils Javadoc and test enhancements.</action>
+ <action type="fix" issue="LANG-132">SystemUtils.IS_OS_*, IS_JAVA_* are always false.</action>
+ <action type="fix" issue="LANG-143">Improve util.Validate tests.</action>
+ <action type="fix" issue="LANG-155">maven-beta10 checkstyle problem.</action>
+ <action type="fix" issue="LANG-147">StringUtils.chopNewLine - StringIndexOutOfBoundsException.</action>
+ <action type="fix" issue="LANG-73">ToStringBuilder doesn't work well in subclasses.</action>
+ <action type="fix" issue="LANG-48">static option for reversing the stacktrace.</action>
+ <action type="fix" issue="LANG-87">NullPointerException in CompareToBuilder.</action>
+ <action type="fix" issue="LANG-84">RandomStringUtils.randomAlpha methods omit 'z'.</action>
+ <action type="fix" issue="LANG-129">test.time fails in Japanese (non-us) locale.</action>
+ <action type="fix" issue="LANG-94">NumberUtils.isNumber allows illegal trailing characters.</action>
+ <action type="fix" issue="LANG-137">Improve Javadoc and overflow behavior of Fraction.</action>
+ <action type="fix" issue="LANG-55">RandomStringUtils infinite loop with length &gt; 1.</action>
+ <action type="fix" issue="LANG-47">test.lang fails if compiled with non iso-8859-1 locales.</action>
+ <action type="fix" issue="LANG-113">SystemUtils does not play nice in an Applet.</action>
+ <action type="fix" issue="LANG-111">time unit tests fail on Sundays.</action>
+ <action type="fix" issue="LANG-90">java.lang.ExceptionInInitializerError thrown by JVMRandom constructor.</action>
+ <action type="fix" issue="LANG-78">StringUtils.chomp does not match Perl.</action>
+ <action type="fix" issue="LANG-36">patch and test case fixing problem with RandomStringUtils.random().</action>
+ <action type="fix" issue="LANG-151">General case: infinite loop: ToStringBuilder.reflectionToString.</action>
+ <action type="fix" issue="LANG-35">Should ToStringBuilder.reflectionToString handle arrays?.</action>
+ <action type="fix" issue="LANG-83">EnumUtils nit: The import java.io.Serializable is never used.</action>
+ <action type="fix" issue="LANG-12">Example in Javadoc for ToStringBuilder wrong for append.</action>
+ <action type="fix" issue="LANG-110">Added class hierarchy support to HashCodeBuilder.reflectionHashCode().</action>
+ <action type="fix" issue="LANG-71">ExceptionUtils new methods.</action>
+ <action type="fix" issue="LANG-15">Infinite loop in StringUtils.replace(text, repl, with) + FIX.</action>
+ <action type="fix" issue="LANG-93">StackOverflow due to ToStringBuilder.</action>
+ <action type="fix" issue="LANG-39">No Javadoc for NestableDelegate.</action>
+ <action type="fix" issue="LANG-49">Specify initial size for Enum's HashMap.</action>
+ <action type="fix" issue="LANG-146">Enum does not support inner sub-classes.</action>
+ <action type="fix" issue="LANG-157">Removed compile warning in ObjectUtils.</action>
+ <action type="fix" issue="LANG-96">SystemUtils.IS_JAVA_1_5 Javadoc is wrong.</action>
+ <action type="fix" issue="LANG-16">NumberRange inaccurate for Long, etc.</action>
+ <action type="fix" issue="LANG-4">Hierarchy support in ToStringBuilder.reflectionToString().</action>
+ <action type="fix" issue="LANG-56">StringUtils.countMatches loops forever if substring empty.</action>
+ <action type="add" issue="LANG-209">Javadoc fixes (remove @links to non-public identifiers).</action>
+ <action type="add" issue="LANG-210">Add Javadoc examples and tests for StringUtils.</action>
+ <action type="add" issue="LANG-170">Make NumberUtils null handling consistent.</action>
+ <action type="fix" issue="LANG-145">Unused field 'startFinal' in DateIterator.</action>
+ <action type="add" issue="LANG-214">reduce object creation in ToStringBuilder.</action>
+ <action type="add" issue="LANG-228">Improved tests, Javadoc for CharSetUtils, StringEscapeUtils.</action>
+ <action type="add" issue="LANG-252">NumberUtils min/max, BooleanUtils.xor, and ArrayUtils toPrimitive and toObject.</action>
+ <action type="add" issue="LANG-208">Javadoc, tests improvements for CharSet, CharSetUtils.</action>
+ <action type="add" issue="LANG-205">StringUtil enhancement.</action>
+ <action type="add" issue="LANG-164">Javadoc nit.</action>
+ <action type="add" issue="LANG-206">Additional Lang Method Suggestions.</action>
+ <action type="add" issue="LANG-178">Make NestableDelegate methods public instead of package private.</action>
+ <action type="add" issue="LANG-174">Missing @since tags.</action>
+ <action type="add" issue="LANG-245">Refactored reflection feature of ToStringBuilder into new ReflectionToStringBuilder.</action>
+ <action type="fix" issue="LANG-51">Typo in documentation.</action>
+ <action type="fix" issue="LANG-1">Patch for Javadoc.</action>
+ <action type="add" issue="LANG-244">Add join(..., char c) to StringUtils (and some performance fixes). Even contains tests!.</action>
+ <action type="add" issue="LANG-231">Resurrect the WordWrapUtils from commons-sandbox/utils.</action>
+ <action type="fix" issue="LANG-139">EnumTest fails on Linux Sun JDK 1.3.0.</action>
+ <action type="add" issue="LANG-234">What to do with FastDateFormat unused private constructors.</action>
+ <action type="add" issue="LANG-240">Added class hierarchy support to CompareToBuilder.reflectionCompare().</action>
+ <action type="add" issue="LANG-190">Removed compile warning in FastDateFormat.</action>
+ <action type="fix" issue="LANG-97">typo in the Javadoc example code.</action>
+ <action type="add" issue="LANG-249">MethodUtils: Removed unused code/unused local vars.</action>
+ <action type="add" issue="LANG-237">Hierarchy support in EqualsBuilder.reflectionEquals().</action>
+ <action type="fix" issue="LANG-91">Javadoc Errata.</action>
+ <action type="add" issue="LANG-215">ArrayUtils.contains().</action>
+ <action type="add" issue="LANG-221">More flexibility for getRootCause in ExceptionUtils.</action>
+ </release>
+
+ <release version="1.0.1" date="2002-11-25" description="Quick bugfix to 1.0">
+ <action type="fix">NumberRange.getMaximum returns minimum.</action>
+ <action type="fix">Enum constructor validations.</action>
+ <action type="fix">NestableException/Delegate is not serializable.</action>
+ <action type="fix">split using null and max less than actual token count adds "null".</action>
+ <action type="add">ExceptionUtils cannot handle J2EE-Exception in a default way.</action>
+ </release>
+
+ <release version="1.0" date="2002-10-04" description="First release of Commons Lang">
+ </release>
+
+ </body>
+</document>