Apache Commons logo Commons Lang

Apache Commons Lang Release Notes

Release History

Version Date Description
3.12.0 2021-02-26 New features and bug fixes.
3.11 2020-07-12 New features and bug fixes.
3.10 2020-03-22 New features and bug fixes. Requires Java 8, supports Java 9, 10, 11.
3.9 2019-04-09 New features and bug fixes. Requires Java 8, supports Java 9, 10, 11.
3.8.1 2018-09-19 This release is a bugfix for Restoring Bundle-SymbolicName in the MANIFEST.mf file.
3.8 2018-08-15 New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.
3.7 2017-11-04 New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.
3.6 2017-06-08 New features and bug fixes. Requires Java 7.
3.5 2016-10-13 New features including Java 9 detection
3.4 2014-04-06 Feature and bugfix release
3.3.2 2014-04-09 Bugfix for a bug in NumberUtils introduced in 3.3.1
3.3.1 2014-03-18 Bugfix release for 3.3
3.3 2014-03-04 Bug fixes and and new features including: DifferenceBuilder, ClassPathUtils, RandomUtils and Jaro-Winkler String distance metric
3.2.1 2014-01-05 Bug fix for 3.2
3.2 2014-01-01 Bug fixes and new features, at least requires Java 6.0
3.1 2011-11-14 November release
3.0.1 2011-08-09 August release
3.0 2011-07-18 Backwards incompatible update of Commons Lang to Java 5
2.6 2011-01-16 Bug Fixes/Enhancements for the 2.6 release (requires minimum of Java 1.3)
2.5 2010-02-25
2.4 2008-03-18
2.3 2007-02-13
2.2 2006-10-04
2.1 2005-06-13
2.0 2003-09-02
1.0.1 2002-11-25 Quick bugfix to 1.0
1.0 2002-10-04 First release of Commons Lang

Release 3.12.0 – 2021-02-26

Type Changes By
Fix Correct implementation of RandomUtils.nextLong(long, long). Fixes LANG-1592. Thanks to Huang Pingcai, Alex Herbert. aherbert
Fix Restore handling of collections for non-JSON ToStringStyle #610. Fixes LANG-1600. Thanks to Michael F. ggregory
Fix ContextedException Javadoc add missing semicolon #581. Thanks to iamchao1129. ggregory
Fix Resolve JUnit pioneer transitive dependencies using JUnit BOM. Fixes LANG-1608. Thanks to Edgar Asatryan. aherbert
Fix NumberUtilsTest - incorrect types in min/max tests #634. Thanks to HubertWo, Gary Gregory. aherbert
Fix Improve StringUtils.stripAccents conversion of remaining accents. Fixes LANG-1579. Thanks to XenoAmess. aherbert
Fix StringUtils.countMatches - clarify Javadoc. Fixes LANG-1606. Thanks to Rustem Galiev. sebb
Fix Remove redundant argument from substring call. Fixes LANG-1591. Thanks to bhawna94. kinow
Fix BigDecimal is created when you pass it the min and max values, #642. Fixes LANG-1613. Thanks to Arturo Bernal, Gary Gregory. ggregory
Fix ArrayUtils.contains() and indexOf() fail to handle Double.NaN #647. Fixes LANG-1541. Thanks to Arturo Bernal, Gary Gregory. ggregory
Fix ArrayUtils contains() and indexOf() fail to handle Float.NaN # #561. Fixes LANG-1615. Thanks to Arturo Bernal, Gary Gregory. ggregory
Fix Fix potential NPE in TypeUtils.isAssignable(Type, ParameterizedType, Map, Type>). Thanks to Gary Gregory. ggregory
Fix TypeUtils.isAssignable returns wrong result for GenericArrayType and ParameterizedType, #643. Fixes LANG-1420. Thanks to Gordon Fraser, Rostislav Krasny, Arturo Bernal, Gary Gregory. ggregory
Fix testGetAllFields and testGetFieldsWithAnnotation sometimes fail. Fixes LANG-1612. Thanks to XinT, Gary Gregory. ggregory
Fix Fix Javadoc for SystemUtils.isJavaVersionAtMost() #638. Thanks to John R. D'Orazio. ggregory
Fix Fix StringUtils.unwrap throws StringIndexOutOfBoundsException #636. Fixes LANG-1610. Thanks to Tony Liang. ggregory
Fix Fix formatting of isAnyBlank() and isAnyEmpty(). #513. Thanks to Isira Seneviratne. ggregory
Fix TypeUtils. containsTypeVariables does not support GenericArrayType #661. Fixes LANG-1618. Thanks to Arturo Bernal. ggregory
Fix Javadoc of some methods incorrectly refers to another method, #667, #668. #670. Fixes LANG-1622. Thanks to Kanak Sony, anomen-s. ggregory
Fix Refine StringUtils.lastIndexOfIgnoreCase #664. Fixes LANG-1620. Thanks to Arturo Bernal. ggregory
Fix Refine StringUtils.abbreviate #663. Fixes LANG-1619. Thanks to Arturo Bernal. ggregory
Fix Refine StringUtils.isNumericSpace #573. Fixes LANG-1584. Thanks to Arturo Bernal. ggregory
Fix Refine StringUtils.deleteWhitespace #569. Fixes LANG-1580. Thanks to Arturo Bernal. ggregory
Fix Correction in Javadoc of some methods. #673. Fixes LANG-1626. Thanks to Kanak Sony. ggregory
Fix Javadoc for RandomStringUtils.random() letters, numbers parameters is wrong. Fixes LANG-1628. Thanks to Jarkko Rantavuori. kinow
Fix Correct markup in Javadoc for unbalanced braces #679. Thanks to Felix Schumacher. ggregory
Fix MethodUtils.invokeMethod NullPointerException in case of null in args list #680. Fixes LANG-1544. Thanks to Peter Nagy, Michael Buck, Gary Gregory. kinow
Fix Fix 2 digit week year formatting #688. Fixes LANG-1637. Thanks to Uri Gonen, Gary Gregory, Michael Osipov. ggregory
Fix Fix broken Javadoc links to commons-text #712. Thanks to Chris Smowton. ggregory
Fix Add and use ThreadUtils.sleep(Duration). Thanks to Gary Gregory. ggregory
Fix Add and use ThreadUtils.join(Thread, Duration). Thanks to Gary Gregory. ggregory
Fix Add ObjectUtils.wait(Duration). Thanks to Gary Gregory. ggregory
Add Add BooleanUtils.booleanValues(). Thanks to Gary Gregory. ggregory
Add Add BooleanUtils.primitiveValues(). Thanks to Gary Gregory. ggregory
Add Add StringUtils.containsAnyIgnoreCase(CharSequence, CharSequence...). Fixes LANG-1535. Thanks to Gary Gregory, Isira Seneviratne. ggregory
Add Add StopWatch.getStopTime(). Fixes LANG-1359. Thanks to Gary Gregory, Keegan Witt. ggregory
Add More test coverage for CharSequenceUtils. #631. Thanks to Edgar Asatryan. ggregory
Update ArrayUtils.toPrimitive(Object) does not support boolean and other types #607. Fixes LANG-1596. Thanks to Richard Eckart de Castilho. aherbert
Add Add fluent-style ArraySorter. Thanks to Gary Gregory. ggregory
Add Add and use LocaleUtils.toLocale(Locale) to avoid NPEs. Thanks to Gary Gregory. ggregory
Add Add FailableShortSupplier, handy for JDBC APIs. Thanks to Gary Gregory. ggregory
Add Add JavaVersion.JAVA_17. Thanks to Gary Gregory. ggregory
Add Add missing boolean[] join method #686. Fixes LANG-1636. ggregory
Add Add StringUtils.substringBefore(String, int). Thanks to Gary Gregory. ggregory
Add Add Range.INTEGER. Thanks to Gary Gregory. ggregory
Add Add DurationUtils. Thanks to Gary Gregory. ggregory
Add Introduce the use of @Nonnull, and @Nullable, and the Objects class as a helper tool. jochen
Add Add and use true and false String constants #714. Thanks to Arturo Bernal, Gary Gregory. ggregory
Add Add and use ObjectUtils.requireNonEmpty() #716. Thanks to Arturo Bernal, Gary Gregory. ggregory
Update Enable Dependabot #587. Thanks to Gary Gregory. ggregory
Update Bump junit-jupiter from 5.6.2 to 5.7.0. chtompki
Update Bump spotbugs from 4.1.2 to 4.2.1, #627, #671, #708. Thanks to chtompki, Dependabot. chtompki
Update Bump spotbugs-maven-plugin from 4.0.0 to 4.2.0, #593, #596, #609, #623, #632, #692. Thanks to Dependabot. ggregory
Update Bump biz.aQute.bndlib from 5.1.1 to 5.3.0 #592, #628, #715. Thanks to Dependabot. ggregory
Update Bump junit-pioneer from 0.6.0 to 1.1.0, #589, #597, #600, #624, #625, #662. Thanks to Dependabot. ggregory
Update Bump checkstyle from 8.34 to 8.40, #594, #614, #637, #665, #706. Thanks to Dependabot. ggregory
Update Bump actions/checkout from v2.3.1 to v2.3.4 #601, #639. Thanks to Dependabot. ggregory
Update Bump actions/setup-java from v1.4.0 to v1.4.2 #612. Thanks to Dependabot. ggregory
Update Update commons.jacoco.version 0.8.5 to 0.8.6 (Fixes Java 15 builds). Thanks to Gary Gregory. ggregory
Update Update maven-surefire-plugin 2.22.2 -> 3.0.0-M5. Thanks to Gary Gregory. ggregory
Update Bump maven-pmd-plugin from 3.13.0 to 3.14.0 #660. Thanks to Dependabot. ggregory
Update Bump jmh.version from 1.21 to 1.27 #674. Thanks to Dependabot. kinow
Update Update commons.japicmp.version 0.14.3 -> 0.15.2. Thanks to Gary Gregory. ggregory
Update Processor.java: check enum equality with == instead of .equals() method #690. Thanks to Ali K. Nouri. ggregory
Update Bump junit-pioneer from 1.1.0 to 1.3.0 #702. Thanks to Dependabot. ggregory
Update Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #705. Thanks to Dependabot. ggregory
Update Bump actions/cache from v2 to v2.1.4 #710. Thanks to Dependabot. ggregory
Update Bump junit-bom from 5.7.0 to 5.7.1 #707. Thanks to Dependabot. ggregory
Update Minor Improvements #701. Thanks to Arturo Bernal. ggregory
Update Minor Improvement: Add final variable.try to make the code read-only #700. Thanks to Arturo Bernal. ggregory
Update Minor Improvement: Remove redundant initializer #699. Thanks to Arturo Bernal. ggregory
Update Use own validator ObjectUtils.anyNull to check null String input #718. Thanks to Arturo Bernal. ggregory

Release 3.11 – 2020-07-12

Type Changes By
Update Refine test output for FastDateParserTest Thanks to Jin Xu. chtompki
Update CharSequenceUtils.lastIndexOf : remake it. Fixes LANG-1549. Thanks to Jin Xu. chtompki
Update remove encoding and docEncoding and use inherited values from commons-parent Thanks to XenoAmess. kinow
Fix Fix Javadoc for StringUtils.appendIfMissingIgnoreCase() #507. Thanks to contextshuffling. kinow
Update Simplify null checks in Pair.hashCode() using Objects.hashCode(). #517. Thanks to Isira Seneviratne, Bruno P. Kinoshita. ggregory
Update Simplify null checks in Triple.hashCode() using Objects.hashCode(). #516. Thanks to Isira Seneviratne, Bruno P. Kinoshita. ggregory
Update Simplify some if statements in StringUtils. #521. Thanks to Isira Seneviratne, Bruno P. Kinoshita. ggregory
Update Simplify a null check in the private replaceEach() method of StringUtils. #514. Fixes LANG-1537. Thanks to Isira Seneviratne, Bruno P. Kinoshita. ggregory
Update Replace some usages of the ternary operator with calls to Math.max() and Math.min() #512. Fixes LANG-1534. Thanks to Isira Seneviratne, Bruno P. Kinoshita. ggregory
Update (Javadoc) Fix return tag for throwableOf*() methods #518. Thanks to Arend v. Reinersdorff, Bruno P. Kinoshita. ggregory
Add Add ArrayUtils.isSameLength() to compare more array types #430. Thanks to XenoAmess, Gary Gregory. ggregory
Update CharSequenceUtils.regionMatches is wrong dealing with Georgian. Fixes LANG-1545. Thanks to XenoAmess, Gary Gregory. ggregory
Add Added the Locks class as a convenient possibility to deal with locked objects. jochen
Add Add to Functions: FailableBooleanSupplier, FailableIntSupplier, FailableLongSupplier, FailableDoubleSupplier, and so on. Fixes LANG-1568. ggregory
Add Add ArrayUtils.get(T[], index, T) to provide an out-of-bounds default value. Fixes LANG-1569. ggregory
Update Optimize ArrayUtils::isArrayIndexValid method. #551. Fixes LANG-1550. Thanks to Edgar Asatryan. ggregory
Update Use List.sort instead of Collection.sort #546. Fixes LANG-1561. Thanks to XenoAmess. ggregory
Update Use StandardCharsets.UTF_8 #548. Fixes LANG-1563. Thanks to XenoAmess. ggregory
Update Use Collections.singletonList insteadof Arrays.asList when there be only one element. #549. Fixes LANG-1564. Thanks to XenoAmess. ggregory
Fix Refine Javadoc #545. Fixes LANG-1560. Thanks to XenoAmess. ggregory
Update Change array style from `int a[]` to `int[] a` #537. Fixes LANG-1553. Thanks to XenoAmess. ggregory
Update Change from addAll to constructors for some List #536. Fixes LANG-1552. Thanks to XenoAmess. ggregory
Fix Fix typos #539. Fixes LANG-1554. Thanks to XenoAmess. ggregory
Fix Ignored exception `ignored`, should not be called so #540. Fixes LANG-1555. Thanks to XenoAmess. ggregory
Update Simplify if as some conditions are covered by others #543. Fixes LANG-1558. Thanks to XenoAmess. ggregory
Fix StringUtils.replaceEachRepeatedly gives IllegalStateException #505. Fixes LANG-1528. Thanks to Edwin Delgado H. ggregory
Add Add JavaVersion enum constants for Java 14 and 15. #553. Fixes LANG-1570. Thanks to Edgar Asatryan. ggregory
Add Add JavaVersion enum constants for Java 16. Thanks to Gary Gregory. ggregory
Add Use Java 8 lambdas and Map operations. Fixes LANG-1556. Thanks to XenoAmess. ggregory
Add Change removeLastFieldSeparator to use endsWith #550. Fixes LANG-1565. Thanks to XenoAmess. ggregory
Add Change a Pattern to a static final field, for not letting it compile each time the function invoked. #542. Fixes LANG-1557. Thanks to XenoAmess, Gary Gregory. ggregory
Add Add ImmutablePair factory methods left() and right(). ggregory
Add Add ObjectUtils.toString(Object, Supplier<String>). ggregory
Update Fixed Javadocs for setTestRecursive() #556. Fixes LANG-1567. Thanks to Miguel Muñoz, Bruno P. Kinoshita, Gary Gregory. ggregory
Update ToStringBuilder.reflectionToString - Wrong JSON format when object has a List of Enum. Fixes LANG-1542. Thanks to Trần Ngọc Khoa, Gary Gregory. ggregory
Fix [JSON string for maps] ToStringBuilder.reflectionToString doesnt render nested maps correctly. Fixes LANG-1543. Thanks to Swaraj Pal, Wander Costa, Gary Gregory. ggregory
Update Make org.apache.commons.lang3.CharSequenceUtils.toCharArray(CharSequence) public. ggregory
Add Add org.apache.commons.lang3.StringUtils.substringAfter(String, int). ggregory
Add Add org.apache.commons.lang3.StringUtils.substringAfterLast(String, int). ggregory
Fix Correct Javadocs of methods that use Validate.notNull() and replace some uses of Validate.isTrue() with Validate.notNull(). #525. Thanks to Isira Seneviratne. ggregory
Fix Add allNull() and anyNull() methods to ObjectUtils. #522. Fixes LANG-1539. Thanks to Isira Seneviratne. ggregory
Update org.apache.commons:commons-parent 50 -> 51. ggregory
Update org.junit-pioneer:junit-pioneer 0.5.4 -> 0.6.0. ggregory
Update org.junit.jupiter:junit-jupiter 5.6.0 -> 5.6.2. ggregory
Update com.github.spotbugs:spotbugs 4.0.0 -> 4.0.6. ggregory
Update com.puppycrawl.tools:checkstyle 8.29 -> 8.34. ggregory
Update commons.surefire.version 3.0.0-M4 -> 3.0.0-M5.. ggregory

Release 3.10 – 2020-03-22

Type Changes By
Fix Make test more stable by wrapping assertions in hashset. Fixes LANG-1514. Thanks to contextshuffling. kinow
Fix Generate Javadoc jar on build. Fixes LANG-1450. chtompki
Add Add ExceptionUtils.throwableOfType(Throwable, Class) and friends. Fixes LANG-1457. ggregory
Add Add EMPTY_ARRAY constants to classes in org.apache.commons.lang3.tuple. Fixes LANG-1458. ggregory
Add Add null-safe StringUtils APIs to wrap String#getBytes([Charset|String]). Fixes LANG-1461. ggregory
Add Add zero arg constructor for org.apache.commons.lang3.NotImplementedException. Fixes LANG-1467. ggregory
Add Add ArrayUtils.addFirst() methods. Fixes LANG-1470. ggregory
Update Remove redundant if statements in join methods #411. Fixes LANG-1437. Thanks to Andrei Troie. ggregory
Fix Trivial: year of release for 3.9 says 2018, should be 2019. Fixes LANG-1460. Thanks to Larry West. kinow
Fix Use synchronize on a set created with Collections.synchronizedSet before iterating. Fixes LANG-1476. Thanks to emopers. kinow
Add Add Range.fit(T) to fit a value into a range. Fixes LANG-1479. ggregory
Update commons.japicmp.version 0.13.1 -> 0.14.1. ggregory
Update junit-jupiter 5.5.0 -> 5.5.1. ggregory
Add Added Functions.as*, and tests thereof, as suggested by Peter Verhas. Fixes LANG-1477. jochen
Fix StringUtils.unwrap incorrect throw StringIndexOutOfBoundsException. Fixes LANG-1475. Thanks to stzx. kinow
Add Add getters for lhs and rhs objects in DiffResult #451. Fixes LANG-1485. Thanks to nicolasbd. ggregory
Add Generify builder classes Diffable, DiffBuilder, and DiffResult #452. Fixes LANG-1486. Thanks to Gary Gregory. ggregory
Add Add ClassLoaderUtils with toString() implementations #453. Fixes LANG-1487. Thanks to Gary Gregory. ggregory
Add Add null-safe APIs as StringUtils.toRootLowerCase(String) and StringUtils.toRootUpperCase(String) #456. Fixes LANG-1489. Thanks to Gary Gregory. ggregory
Fix StringIndexOutOfBoundsException in StringUtils.replaceIgnoreCase #423. Fixes LANG-1406. Thanks to geratorres. ggregory
Fix StringUtils.removeIgnoreCase("İa", "a") throws IndexOutOfBoundsException #423. Fixes LANG-1453. Thanks to geratorres. ggregory
Update junit-jupiter 5.5.1 -> 5.5.2. ggregory
Fix Corrected usage examples in Javadocs #458. Fixes LANG-1426. Thanks to Brower, Mikko Maunu, Suraj Gautam. ggregory
Update Improve Javadoc based on the discussion of the GitHub PR #459. Thanks to Jonathan Leitschuh, Bruno P. Kinoshita, Rob Tompkins, Gary Gregory. ggregory
Update maven-checkstyle-plugin 3.0.0 -> 3.1.0. ggregory
Update Update documentation related to the issue LANG-696 #449. Fixes LANG-696. Thanks to Peter Verhas. ggregory
Update AnnotationUtils little cleanup #467. Thanks to Peter Verhas. ggregory
Add Add org.apache.commons.lang3.time.Calendars. Fixes LANG-1494. Thanks to Gary Gregory. ggregory
Add Add EnumUtils getEnum() methods with default values #475. Fixes LANG-1495. Thanks to Cheong Voon Leong. ggregory
Add Added indexesOf methods and simplified removeAllOccurences #471. Fixes LANG-1177. Thanks to Liel Fridman. ggregory
Add Add support of lambda value evaluation for defaulting methods #416. Fixes LANG-1498. Thanks to Lysergid, Gary Gregory. ggregory
Fix StringUtils abbreviate returns String of length greater than maxWidth #477. Fixes LANG-1463. Thanks to bbeckercscc, Gary Gregory. ggregory
Fix Test may fail due to a different order of fields returned by reflection api #480. Fixes LANG-1500. Thanks to contextshuffling. ggregory
Update Update test dependency: org.easymock:easymock 4.0.2 -> 4.1. Thanks to Gary Gregory. ggregory
Update Update test dependency: org.hamcrest:hamcrest 2.1 -> 2.2. Thanks to Gary Gregory. ggregory
Update Update test dependency: org.junit-pioneer:junit-pioneer 0.3.0 -> 0.4.2. Thanks to Gary Gregory. ggregory
Update Update build dependency: com.puppycrawl.tools:checkstyle 8.18 -> 8.27. Thanks to Gary Gregory. ggregory
Fix Sort fields in ReflectionToStringBuilder for deterministic order #481. Fixes LANG-1501. Thanks to contextshuffling. ggregory
Update Update POM parent: org.apache.commons:commons-parent 48 -> 50. Thanks to Gary Gregory. ggregory
Update BooleanUtils Javadoc #469. Thanks to Peter Verhas. ggregory
Update Functions Javadoc #466. Thanks to Peter Verhas. ggregory
Add Add factory methods to Pair classes with Map.Entry input. #454. Fixes LANG-1503. Thanks to XenoAmess, Gary Gregory. ggregory
Add Add StopWatch convenience APIs to format times and create a simple instance. Fixes LANG-1505. Thanks to Gary Gregory. ggregory
Add Allow a StopWatch to carry an optional message. Fixes LANG-1506. Thanks to Gary Gregory. ggregory
Add Add ComparableUtils #398. Fixes LANG-1507. Thanks to Sam Kruglov, Mark Dacek, Marc Magon, Pascal Schumacher, Rob Tompkins, Bruno P. Kinoshita, Amey Jadiye, Gary Gregory. ggregory
Add Add org.apache.commons.lang3.SystemUtils.getUserName(). Fixes LANG-1508. Thanks to Gary Gregory. ggregory
Add Add ObjectToStringComparator. #483. Fixes LANG-1509. Thanks to Gary Gregory. ggregory
Add Add org.apache.commons.lang3.arch.Processor.Arch.getLabel(). Fixes LANG-1510. Thanks to Gary Gregory. ggregory
Add Add IS_JAVA_14 and IS_JAVA_15 to org.apache.commons.lang3.SystemUtils. Fixes LANG-1512. Thanks to Gary Gregory. ggregory
Add ObjectUtils: Get first non-null supplier value. Fixes LANG-1513. Thanks to Bernhard Bonigl, Gary Gregory. ggregory
Add Added the Streams class, and Functions.stream() as an accessor thereof. jochen
Update org.easymock:easymock 4.1 -> 4.2. Thanks to Gary Gregory. ggregory
Update org.junit-pioneer:junit-pioneer 0.4.2 -> 0.5.4. Thanks to Gary Gregory. ggregory
Update org.junit.jupiter:junit-jupiter 5.5.2 -> 5.6.0. Thanks to Gary Gregory. ggregory
Update Use Javadoc {@code} instead of pre tags. #490. Thanks to Peter Verhas. ggregory
Update ExceptionUtilsTest to 100% #486. Thanks to Peter Verhas. ggregory
Fix MethodUtils will throw a NPE if invokeMethod() is called for a var-args method #407. Fixes LANG-1433. Thanks to Christian Franzen. ggregory
Update Reuse own code in Functions.java #493. Thanks to Peter Verhas. ggregory
Fix MethodUtils.getAnnotation() with searchSupers = true does not work if super is generic #494. Fixes LANG-1518. Thanks to Michele Preti, Bruno P. Kinoshita, Gary Gregory. ggregory
Update Avoid unnecessary allocation in StringUtils.wrapIfMissing. #496. Fixes LANG-1523. Thanks to Edgar Asatryan, Bruno P. Kinoshita, Gary Gregory. ggregory
Update Internally use Validate.notNull(foo, ...) instead of Validate.isTrue(foo != null, ...). Fixes LANG-1525. Thanks to Edgar Asatryan, Bruno P. Kinoshita, Gary Gregory. ggregory
Update Add 1 and 0 in toBooleanObject(final String str) #502. Fixes LANG-1526. Thanks to Dominik Schramm. ggregory
Update Remove an redundant argument check in NumberUtils #504. Fixes LANG-1527. Thanks to Pengyu Nie. ggregory
Update Deprecate org.apache.commons.lang3.ArrayUtils.removeAllOccurences(*) for org.apache.commons.lang3.ArrayUtils.removeAllOccurrences(*). Fixes LANG-1529. Thanks to Gary Gregory, BillCindy, Bruno P. Kinoshita. ggregory

Release 3.9 – 2019-04-09

Type Changes By
Update FieldUtils.removeFinalModifier(Field, boolean), in java 12 throw exception because the final modifier is no longer mutable. Fixes LANG-1447. chtompki
Add Switch coverage from cobertura to jacoco. Fixes LANG-1446. chtompki
Add Javadoc pointing to Commons RNG. Fixes LANG-1442. chtompki
Update Add more SystemUtils.IS_JAVA_XX variants. Fixes LANG-1416. britter
Add Adding the Functions class. jochen
Update Update to JUnit 5. Fixes LANG-1416. britter
Update Add @FunctionalInterface to ThreadPredicate and ThreadGroupPredicate. Fixes LANG-1417. britter
Update Update Java Language requirement to 1.8. Fixes LANG-1415. britter
Add Add isEmpty method to ObjectUtils. Fixes LANG-1411. Thanks to Alexander Tsvetkov. britter
Add Add null-safe StringUtils.valueOf(char[]) to delegate to String.valueOf(char[]). Fixes LANG-1422. ggregory
Add Add API org.apache.commons.lang3.SystemUtils.isJavaVersionAtMost(JavaVersion). Fixes LANG-1427. ggregory
Update Consolidate the StringUtils equals and equalsIgnoreCase Javadoc and implementation. Fixes LANG-1436. aherbert
Update (doc) Fix javadoc for 'startIndex' parameter of StringUtils.join() methods. GitHub PR #412. Thanks to Andrei Troie aft90. ggregory

Release 3.8.1 – 2018-09-19

Type Changes By
Fix Restore BundleSymbolicName for OSGi. Fixes LANG-1419. chtompki

Release 3.8 – 2018-08-15

Type Changes By
Fix FastDateParser too strict on abbreviated short month symbols. Fixes LANG-1380. Thanks to Markus Jelsma. chas
Fix JsonToStringStyle does not escape string names. Fixes LANG-1396. sebb
Fix JsonToStringStyle does not escape double quote in a string value. Fixes LANG-1395. Thanks to Jim Gan. sebb
Fix New Java version ("11") must be handled. Fixes LANG-1384. Thanks to Ian Young. erans
Fix ExceptionUtils#getRootCause(Throwable t) should return t if no lower level cause exists. Fixes LANG-1364. Thanks to Zheng Xie. pschumacher
Fix NumberUtils.isNumber assumes number starting with Zero. Fixes LANG-1060. Thanks to Piotr Kosmala. pschumacher
Fix defaultString(final String str) in StringUtils to reuse defaultString(final String str, final String defaultStr). Fixes LANG-1375. Thanks to Jerry Zhao. kinow
Fix Parsing Json Array failed. Fixes LANG-1374. Thanks to Jaswanth Bala. kinow
Fix Fix TypeUtils#parameterize to work correctly with narrower-typed array. Fixes LANG-1371. Thanks to Dmitry Ovchinnikov. pschumacher
Fix Fix EventCountCircuitBreaker increment batch. Fixes LANG-1370. Thanks to Andre Dieb. kinow
Fix NumberUtils.createNumber() throws StringIndexOutOfBoundsException instead of NumberFormatException. Fixes LANG-1385. Thanks to Rohan Padhye. ggregory
Fix WordUtils.wrap throws StringIndexOutOfBoundsException when wrapLength is Integer.MAX_VALUE. Fixes LANG-1397. Thanks to Takanobu Asanuma. ggregory
Fix Typo in JavaDoc for lastIndexOf. Fixes LANG-1401. Thanks to Roman Golyshev, Alex Mamedov. pschumacher
Update ObjectUtils.identityToString(Object) and friends should allocate builders and buffers with a size. Fixes LANG-1367. Thanks to Gary Gregory. ggregory
Add EnumUtils.getEnumIgnoreCase and isValidEnumIgnoreCase methods added. Fixes LANG-1352. Thanks to Ruslan Sibgatullin. pschumacher
Add Add ToStringSummary annotation. Fixes LANG-1372. Thanks to Sérgio Ozaki. pschumacher
Add Add bypass option for classes to recursive and reflective EqualsBuilder. Fixes LANG-1356. Thanks to Yathos UG. pschumacher
Add Improve Javadoc for StringUtils.isAnyEmpty(null). Fixes LANG-1391. Thanks to Sauro Matulli, Oleg Chubaryov. ggregory
Add Add API SystemUtils.String getEnvironmentVariable(final String name, final String defaultValue). Fixes LANG-1393. Thanks to Gary Gregory. ggregory
Add org.apache.commons.lang3.SystemUtils should not write to System.err. Fixes LANG-1394. Thanks to Sebb, Gary Gregory. ggregory
Add Add RegexUtils class instead of overloading methods in StringUtils that take a regex to take precompiled Pattern. Fixes LANG-1238. Thanks to Christopher Cordeiro, Gary Gregory, Bruno P. Kinoshita, Oleg Chubaryov. ggregory
Add StringUtils.join() with support for List<?> with configurable start/end indices. Fixes LANG-1390. Thanks to Jochen Schalanda. ggregory
Add Methods for getting first non empty or non blank value. Fixes LANG-1392. Thanks to Jeff Nelson. pschumacher
Update Remove checks for java versions below the minimum supported one. Fixes LANG-1405. Thanks to Lars Grefer. ggregory
Update Null/index safe get methods for ArrayUtils. Fixes LANG-1402. Thanks to Mark Dacek. chtompki
Add Rounding utilities for converting to BigDecimal. Fixes LANG-1408. chtompki

Release 3.7 – 2017-11-04

Type Changes By
Fix Fix tests DateUtilsTest for Java 9 with en_GB locale. Fixes LANG-1362. Thanks to Stephen Colebourne. ggregory
Fix Fix NullPointerException in isJavaVersionAtLeast on Java 10, add SystemUtils.IS_JAVA_10, add JavaVersion.JAVA_10. Fixes LANG-1365. Thanks to Gary Gregory. ggregory
Fix StackOverflowError on TypeUtils.toString(...) for a generic return type of Enum.valueOf. Fixes LANG-1348. Thanks to mbusso. pschumacher
Fix ConstructorUtils.invokeConstructor(Class, Object...) regression. Fixes LANG-1350. Thanks to Brett Kail. ggregory
Fix EqualsBuilder#isRegistered: swappedPair construction bug. Fixes LANG-1349. Thanks to Naman Nigam. pschumacher
Fix org.apache.commons.lang3.time.FastDateParser should use toUpperCase(Locale). Fixes LANG-1357. Thanks to BruceKuiLiu. ggregory
Update Improve StringUtils#replace throughput. Fixes LANG-1358. Thanks to Stephane Landelle. pschumacher
Update Remove deprecation from RandomStringUtils. Fixes LANG-1346. pschumacher
Update ExceptionUtils.getThrowableList() is using deprecated ExceptionUtils.getCause(). Fixes LANG-1361. Thanks to Ana. ggregory
Add TimeZone.getTimeZone() in FastDateParser causes resource contention (PR #296.). Fixes LANG-1355. Thanks to Chas Honton. ggregory
Add Add methods to ObjectUtils to get various forms of class names in a null-safe manner. Fixes LANG-1360. Thanks to Gary Gregory. ggregory

Release 3.6 – 2017-06-08

Type Changes By
Update Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility. Fixes LANG-1338. britter
Add Add NUL Byte To CharUtils. Fixes LANG-1336. Thanks to Beluga Behr. britter
Fix Fix test failures in IBM JDK 8 for ToStringBuilderTest. Fixes LANG-1337. kinow
Add Add method in StringUtils to determine if string contains both mixed cased characters. Fixes LANG-1304. Thanks to Andy Klimczak. pschumacher
Update Deprecate CharEncoding in favour of java.nio.charset.StandardCharsets. Fixes LANG-1334. djones
Fix MultilineRecursiveToStringStyle StackOverflowError when object is an array. Fixes LANG-1319. djones
Add Increase test coverage of ToStringBuilder class to 100%. Fixes LANG-1325. Thanks to Arshad Basha. kinow
Add Add a method in StringUtils to extract only digits out of input string. Fixes LANG-1307. Thanks to Arshad Basha. pschumacher
Update Implement HashSetvBitSetTest using JMH. Fixes LANG-1110. Thanks to Bruno P. Kinoshita. pschumacher
Add Add JMH maven dependencies. Fixes LANG-1256. Thanks to C0rWin. pschumacher
Add Add null filter to ReflectionToStringBuilder. Fixes LANG-1167. Thanks to Mark Dacek. chtompki
Fix LocaleUtils#toLocale does not support language followed by UN M.49 numeric-3 area code followed by variant. Fixes LANG-1320. britter
Fix Clarify or improve behavior of int-based indexOf methods in StringUtils. Fixes LANG-1300. Thanks to Mark Dacek. chtompki
Add Add method for converting string to an array of code points. Fixes LANG-1299. djones
Fix RandomStringUtils random method can overflow and return characters outside of specified range. Fixes LANG-1286. djones
Add Add methods to insert arrays into arrays at an index. Fixes LANG-660. djones
Fix WordUtils.wrap throws StringIndexOutOfBoundsException. Fixes LANG-1292. djones
Fix RandomStringUtils#random can enter infinite loop if end parameter is to small. Fixes LANG-1287. Thanks to Ivan Morozov. pschumacher
Fix NullPointerException in FastDateParser$TimeZoneStrategy. Fixes LANG-1285. Thanks to Francesco Chicchiriccò. pschumacher
Fix Javadoc of StringUtils.ordinalIndexOf is contradictory. Fixes LANG-1281. Thanks to Andreas Lundblad. pschumacher
Fix StringUtils#join(T...): warning: [unchecked] Possible heap pollution from parameterized vararg type T. Fixes LANG-1188. pschumacher
Fix Multiple calls of org.apache.commons.lang3.concurrent.LazyInitializer.initialize() are possible. Fixes LANG-1144. Thanks to Waldemar Maier, Gary Gregory. ggregory
Fix StrBuilder#replaceAll ArrayIndexOutOfBoundsException. Fixes LANG-1276. Thanks to Andy Klimczak. pschumacher
Fix BooleanUtils javadoc issues. Fixes LANG-1278. Thanks to Duke Yin. pschumacher
Fix ArrayUtils#add confusing example in javadoc. Fixes LANG-1070. Thanks to Paul Pogonyshev. pschumacher
Fix StringUtils#isAnyEmpty and #isAnyBlank should return false for an empty array. Fixes LANG-1271. Thanks to Pierre Templier. pschumacher
Fix Add StringUtils#unwrap. Fixes LANG-1155. Thanks to Saif Asif, Thiago Andrade. pschumacher
Add Add support for recursive comparison to EqualsBuilder#reflectionEquals. Fixes LANG-1034. Thanks to Yathos UG. pschumacher
Add Add a reflection-based variant of DiffBuilder. Fixes LANG-1067. pschumacher
Add Implementation of a Memomizer. Fixes LANG-740. Thanks to James Sawle. pschumacher
Add Add ArrayUtils#toStringArray method. Fixes LANG-1258. Thanks to IG, Grzegorz Rożniecki. pschumacher
Add StringUtils#abbreviate should support 'custom ellipses' parameter. Fixes LANG-1160. kinow
Add Add StringUtils#isAllEmpty and #isAllBlank methods. Fixes LANG-1293. Thanks to Pierre Templier, Martin Tarjanyi. pschumacher
Update Increase test coverage of org.apache.commons.lang3.ArrayUtils. Fixes LANG-1290. Thanks to Andrii Abramov. pschumacher
Update StrSubstitutor should state its thread safety. Fixes LANG-1274. pschumacher
Update StringUtils#getLevenshteinDistance reduce memory consumption. Fixes LANG-1277. Thanks to yufcuy. pschumacher
Update Update Java requirement from Java 6 to 7. Fixes LANG-1279. ggregory
Update StringUtils should use toXxxxCase(int) rather than toXxxxCase(char). Fixes LANG-1143. Thanks to sebb. pschumacher
Update Add SystemUtils.getHostName() API. Fixes LANG-1297. ggregory
Update Moving apache-rat-plugin configuration into pluginManagement. Fixes LANG-1301. Thanks to Karl Heinz Marbaise. pschumacher
Fix TypeUtils.toString() doesn't handle primitive and Object arrays correctly. Fixes LANG-1311. Thanks to Aaron Digulla. pschumacher
Fix LocaleUtils#toLocale does not support language followed by UN M.49 numeric-3 area code. Fixes LANG-1312. pschumacher
Fix Build failures when building with Java 9 EA. Fixes LANG-1265. pschumacher
Fix javadoc creation broken with Java 8. Fixes LANG-1314. Thanks to Allon Murienik. pschumacher
Update Deprecate classes/methods moved to commons-text. Fixes LANG-1316. pschumacher
Fix MethodUtils.invokeMethod throws ArrayStoreException if using varargs arguments and smaller types than the method defines. Fixes LANG-1310. Thanks to Don Jeba. pschumacher
Add Add ArchUtils - An utility class for the "os.arch" system property. Fixes LANG-1313. Thanks to Tomschi. pschumacher
Add Add shuffle methods to ArrayUtils. Fixes LANG-1272. ebourg
Add Add MethodUtils#findAnnotation and extend MethodUtils#getMethodsWithAnnotation for non-public, super-class and interface methods. Fixes LANG-1317. Thanks to Yasser Zamani. pschumacher
Add Add ImmutablePair.nullPair(). Fixes LANG-1331. ggregory
Add Add ImmutableTriple.nullTriple(). Fixes LANG-1332. ggregory

Release 3.5 – 2016-10-13

Type Changes By
Add Added a tryAcquire() method to TimedSemaphore. Fixes LANG-1275. oheger
Add Added a new property IS_OS_MAC_OSX_EL_CAPITAN in SystemUtils. Fixes LANG-1273. Thanks to Jake Wang. ebourg
Add Add DateUtils.toCalendar(Date, TimeZone). Fixes LANG-1255. Thanks to Kaiyuan Wang. britter
Add Add WordUtils.wrap overload with customizable breakable character. Fixes LANG-1023. Thanks to Marko Bekhta. britter
Add Add method removeIgnoreCase(String, String) to StringUtils. Fixes LANG-787. Thanks to Gokul Nanthakumar C. pschumacher
Fix ArrayUtils.contains returns false for instances of subtypes. Fixes LANG-1261. pschumacher
Update Prepare Java 9 detection. Fixes LANG-1197. pschumacher
Fix Rename NumberUtils.isNumber, isCreatable to better reflect createNumber. Also, accommodated for "+" symbol as prefix in isCreatable and isNumber. Fixes LANG-1252. Thanks to Rob Tompkins. chtompki
Update CompareToBuilder.append(Object, Object, Comparator) method is too big to be inlined. Fixes LANG-1262. Thanks to Ruslan Cheremin. pschumacher
Fix Remove unnecessary synchronization from registry lookup in EqualsBuilder and HashCodeBuilder. Fixes LANG-1230. Thanks to Philippe Marschall. pschumacher
Add Extend RandomStringUtils with methods that generate strings between a min and max length. Fixes LANG-1224. Thanks to Caleb Cushing. pschumacher
Fix Handle "void" in ClassUtils.getClass(). Fixes LANG-1214. Thanks to Henry Tung. pschumacher
Fix SerializationUtils#deserialize has unnecessary code and a comment for that. Fixes LANG-1250. Thanks to Glease Wang. pschumacher
Update Javadoc for ArrayUtils.isNotEmpty() is slightly misleading. Fixes LANG-1259. Thanks to Dominik Stadler. britter
Add Add APIs StringUtils.wrapIfMissing(String, char|String). Fixes LANG-1257. Thanks to Gary Gregory. ggregory
Fix TypeUtils.isAssignable throws NullPointerException when fromType has type variables and toType generic superclass specifies type variable. Fixes LANG-1190. Thanks to pschumacher. pschumacher
Fix StringUtils#normalizeSpace does not trim the string anymore. Fixes LANG-1226. Thanks to pschumacher. pschumacher
Fix SerializationUtils.ClassLoaderAwareObjectInputStream should use static initializer to initialize primitiveTypes map. Fixes LANG-1251. Thanks to Takuya Ueshin. pschumacher
Add [GitHub issue #170] Add RandomUtils#nextBoolean() method. Fixes LANG-1253. Thanks to adilek. ggregory
Fix FastDatePrinter Memory allocation regression. Fixes LANG-1248. Thanks to Benoit Wiart. chas
Update FastDatePrinter generates extra Date objects. Fixes LANG-1247. Thanks to Benoit Wiart. chas
Fix Fix precision loss on NumberUtils.createNumber(String). Fixes LANG-1018. Thanks to Nick Manley. pschumacher
Update HashCodeBuilder.append(Object,Object) is too big to be inlined, which prevents whole builder to be scalarized. Fixes LANG-1229. Thanks to Ruslan Cheremin. pschumacher
Add Add a circuit breaker implementation. Fixes LANG-1085. Thanks to oheger / kinow. oheger
Add Add StringUtils.truncate(). Fixes LANG-1013. Thanks to Thiago Andrade. pschumacher
Add Enhance MethodUtils to allow invocation of private methods. Fixes LANG-1195. Thanks to Derek C. Ashmore. pschumacher
Fix Fix implementation of StringUtils.getJaroWinklerDistance(). Fixes LANG-1199. Thanks to M. Steiger. pschumacher
Fix Fix dead links in StringUtils.getLevenshteinDistance() javadoc. Fixes LANG-1244. Thanks to jjbankert. pschumacher
Fix "\u2284":"nsub" mapping missing from EntityArrays#HTML40_EXTENDED_ESCAPE. Fixes LANG-1242. Thanks to Neal Stewart. pschumacher
Update Simplify ArrayUtils removeElements by using new decrementAndGet() method. Fixes LANG-1243. sebb
Add Add getAndIncrement/getAndDecrement/getAndAdd/incrementAndGet/decrementAndGet/addAndGet in Mutable* classes. Fixes LANG-1189. Thanks to haiyang li / Matthew Bartenschlag. sebb
Update Optimize BitField constructor implementation. Fixes LANG-1240. Thanks to zhanhb. pschumacher
Update Improve CharSetUtils.squeeze() performance. Fixes LANG-1206. Thanks to Mohammed Alfallaj. pschumacher
Add Add RandomStringUtils#randomGraph and #randomPrint which match corresponding regular expression class. Fixes LANG-1225. Thanks to Caleb Cushing. pschumacher
Fix StringUtils#startsWithAny/endsWithAny is case sensitive - documented as case insensitive. Fixes LANG-901. Thanks to Matthew Bartenschlag. pschumacher
Add Add StopWatch#getTime(TimeUnit). Fixes LANG-1223. Thanks to Nick Manley. pschumacher
Add Add methods to ObjectUtils class to check for null elements in the array. Fixes LANG-781. Thanks to Krzysztof Wolny. pschumacher
Add Prefer Throwable.getCause() in ExceptionUtils.getCause(). Fixes LANG-1228. Thanks to Brad Hess. pschumacher
Add DiffBuilder add method to allow appending from a DiffResult. Fixes LANG-1233. Thanks to Nick Manley. pschumacher
Update Improve ArrayUtils removeElements time complexity to O(n). Fixes LANG-1176. Thanks to Jeffery Yuan. pschumacher
Update getLevenshteinDistance with a threshold: optimize implementation if the strings lengths differ more than the threshold. Fixes LANG-1234. Thanks to Jonatan Jönsson. pschumacher
Add Add SystemUtils.IS_OS_WINDOWS_10 property. Fixes LANG-1168. Thanks to pschumacher. pschumacher
Fix DiffBuilder: Add null check on fieldName when appending Object or Object[]. Fixes LANG-1232. Thanks to Nick Manley. pschumacher
Fix ArrayUtils.removeAll(Object array, int... indices) should do the clone, not its callers. Fixes LANG-1178. Thanks to Henri Yandell. pschumacher
Update Performance improvements for NumberUtils.isParsable. Fixes LANG-1151. Thanks to Juan Pablo Santos Rodríguez. pschumacher
Fix StringUtils.stripAccents should remove accents from "Ł" and "ł". Fixes LANG-1120. Thanks to kaching88. pschumacher
Update EqualsBuilder.append(Object,Object) is too big to be inlined, which prevents whole builder to be scalarized. Fixes LANG-1218. Thanks to Ruslan Cheremin. ggregory
Fix NumberUtils.createNumber() behaves inconsistently with NumberUtils.isNumber(). Fixes LANG-1205. Thanks to pbrose. chas
Add Add support for varargs in ConstructorUtils, MemberUtils, and MethodUtils. Fixes LANG-1115. Thanks to Jim Lloyd, Joe Ferner. chas
Add Add methods to check numbers against NaN and inifinite to Validate. Fixes LANG-1134. Thanks to Alan Smithee. chas
Fix Fix for incorrect comment on StringUtils.containsIgnoreCase method. Fixes LANG-1222. Thanks to Adam J.. ggregory
Fix Fix typo on appendIfMissing javadoc. Fixes LANG-1221. Thanks to Pierre Templier. ggregory
Add Add tests for missed branches in DateUtils. Fixes LANG-1220. Thanks to Casey Scarborough. kinow
Fix parseDateStrictly does't pass specified locale. Fixes LANG-1202. Thanks to Markus Jelsma. chas
Fix FastDateFormat doesn't respect summer daylight in some localized strings. Fixes LANG-1219. Thanks to Jarek. chas
Add z/OS identification in SystemUtils. Fixes LANG-1146. Thanks to Gabor Liptak. ggregory
Update StringUtils#startsWithAny has error in Javadoc. Fixes LANG-1210. Thanks to Matthias Niehoff. ggregory
Update StrSubstitutor can preserve escapes. Fixes LANG-1208. Thanks to Samuel Karp. bayard
Fix Remove Ant-based build. Fixes LANG-1175. Thanks to Benedikt Ritter. wikier
Add FastDateFormat support of the week-year component (uppercase 'Y'). Fixes LANG-1192. Thanks to Dominik Stadler. chas
Fix Limit max heap memory for consistent Travis CI build. Fixes LANG-1194. chas
Fix Fix NullPointerException in FastDateParser$TimeZoneStrategy. Fixes LANG-1186. Thanks to NickManley. chas
Fix ordinalIndexOf("abc", "ab", 1) gives incorrect answer of -1 (correct answer should be 0); revert fix for LANG-1077. Fixes LANG-1193. Thanks to Qin Li. sebb
Update Clarify Javadoc of StringUtils.containsAny(). Fixes LANG-1182. Thanks to Larry West, Pascal Schumacher. britter
Add Add StringUtils methods to compare a string to multiple strings. Fixes LANG-1169. Thanks to Rafal Glowinski, Robert Parr, Arman Sharif. lguibert
Add Add remove by regular expression methods in StringUtils. Fixes LANG-1185. lguibert
Update Making replacePattern/removePattern methods null safe in StringUtils. Fixes LANG-1183. lguibert
Add Add replace by regular expression methods in StringUtils. Fixes LANG-1139. lguibert
Add Add compare methods in StringUtils. Fixes LANG-1171. lguibert
Add Add sugar to RandomUtils. Fixes LANG-1174. Thanks to Punkratz312. britter
Update Replace StringBuilder with String concatenation for better optimization. Fixes LANG-1057. Thanks to Otávio Santana. chas
Update Deprecate SystemUtils.FILE_SEPARATOR and SystemUtils.PATH_SEPARATOR. Fixes LANG-1075. chas
Add FastDateFormat APIs that use a StringBuilder. Fixes LANG-1154. Thanks to Gary Gregory. chas
Add Ability to throw checked exceptions without declaring them. Fixes LANG-1149. Thanks to Gregory Zak. chas
Fix Several predefined ISO FastDateFormats in DateFormatUtils are incorrect. Fixes LANG-1002. Thanks to Michael Osipov. chas
Fix StringIndexOutOfBoundsException or field over-write for large year fields in FastDateParser. Fixes LANG-1152. Thanks to Pas Filip. chas
Add Implement ParsePosition api for FastDateParser. Fixes LANG-1153. chas
Fix StrLookup.systemPropertiesLookup() no longer reacts on changes on system properties. Fixes LANG-1141. oheger
Fix EnumUtils *BitVector issue with more than 32 values Enum. Fixes LANG-1147. Thanks to Loic Guibert. sebb
Fix Capitalize javadoc is incorrect. Fixes LANG-1059. Thanks to Colin Casey. sebb
Add Add check for duplicate event listener in EventListenerSupport. Fixes LANG-1137. Thanks to Matthew Aguirre. britter
Fix FastDateParser_TimeZoneStrategyTest#testTimeZoneStrategyPattern fails on Windows with German Locale. Fixes LANG-1133. Thanks to Pascal Schumacher. chas
Add Add method containsAllWords to WordUtils. Fixes LANG-1135. Thanks to Eduardo Martins. britter
Add ReflectionToStringBuilder doesn't throw IllegalArgumentException when the constructor's object param is null. Fixes LANG-1132. Thanks to Jack Tan. britter
Fix Inconsistent behavior of swap for malformed inputs. Fixes LANG-1122. Thanks to Adrian Ber. britter
Add StringUtils join with var args. Fixes LANG-701. Thanks to James Sawle. britter
Fix Fix critical issues reported by SonarQube. Fixes LANG-1130. britter
Fix StrBuilder.equals(StrBuilder) doesn't check for null inputs. Fixes LANG-1131. britter
Add Add ThreadUtils - A utility class which provides helper methods related to java.lang.Thread. Fixes LANG-1105. Thanks to Hendrik Saly. britter
Add Add annotations to exclude fields from ReflectionEqualsBuilder, ReflectionToStringBuilder and ReflectionHashCodeBuilder. Fixes LANG-1031. Thanks to Felipe Adorno. britter
Add Use JUnit rules to set and reset the default Locale and TimeZone. Fixes LANG-1127. chas, britter
Fix JsonToStringStyle doesn't handle chars and objects correctly. Fixes LANG-1128. Thanks to Jack Tan. britter
Fix DateFormatUtilsTest.testSMTP depends on the default Locale. Fixes LANG-1126. britter
Fix Unit test FastDatePrinterTimeZonesTest needs a timezone set. Fixes LANG-1123. Thanks to Christian P. Momon. chas
Fix CLONE - DateFormatUtils.format does not correctly change Calendar TimeZone in certain situations. Fixes LANG-916. Thanks to Christian P. Momon. chas
Fix DateUtilsTest.testLang530 fails for some timezones. Fixes LANG-1116. Thanks to Aaron Sheldon. chas
Fix TypeUtils.ParameterizedType#equals doesn't work with wildcard types. Fixes LANG-1114. Thanks to Andy Coates. britter
Add Add rotate(string, int) method to StringUtils. Fixes LANG-1119. Thanks to Loic Guibert. britter
Fix StringUtils.repeat('z', -1) throws NegativeArraySizeException. Fixes LANG-1118. Thanks to Loic Guibert. britter
Add Add swap and shift operations for arrays to ArrayUtils. Fixes LANG-1099. Thanks to Adrian Ber. britter
Update TypeUtils.parameterizeWithOwner - wrong format descriptor for "invalid number of type parameters". Fixes LANG-979. Thanks to Bruno P. Kinoshita. britter
Update MultilineRecursiveToStringStyle largely unusable due to being package-private. Fixes LANG-1112. britter
Update StringUtils.uncapitalize performance improvement. Fixes LANG-1058. Thanks to Leo Wang. djones
Update CharSet.getInstance documentation does not clearly explain how to include negation character in set. Fixes LANG-1069. Thanks to Arno Noordover. djones
Add Change nullToEmpty methods to generics. Fixes LANG-1050. Thanks to James Sawle. djones
Fix Fix FindBugs warnings in DurationFormatUtils. Fixes LANG-1111. chas
Add Add a method to ArrayUtils for removing all occurrences of a given element. Fixes LANG-1074. Thanks to Haiyang Li. djones
Update Fix parsing edge cases in FastDateParser. Fixes LANG-1107. chas
Fix StringUtils#equals fails with Index OOBE on non-Strings with identical leading prefix. Fixes LANG-1162. sebb
Fix There are no tests for CharSequenceUtils.regionMatches. Fixes LANG-1163. sebb
Fix StringUtils.ordinalIndexOf: Add missing right parenthesis in Javadoc example. Fixes LANG-1200. Thanks to BarkZhang. ggregory
Fix Incorrect Javadoc StringUtils.containsAny(CharSequence, CharSequence...). Fixes LANG-1191. Thanks to qed, Brent Worden, Gary Gregory. ggregory
Update Added new property IS_OS_MAC_OSX_EL_CAPITAN in SystemUtils Thanks to Jake Wang. ebourg

Release 3.4 – 2014-04-06

Type Changes By
Add Support OS X versions in SystemUtils. Fixes LANG-821. Thanks to Timo Kockert. britter
Fix SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect. Fixes LANG-794. Thanks to Timo Kockert. britter
Fix Parse test fails for TimeZone America/Sao_Paulo. Fixes LANG-1104. chas
Add Add SystemUtils.IS_JAVA_1_9. Fixes LANG-1103. britter
Update Make logic for comparing OS versions in SystemUtils smarter. Fixes LANG-1102. britter
Update Shutdown thread pools in test cases. Fixes LANG-1091. Thanks to Fabian Lange. britter
Update FastDateParser and FastDatePrinter support 'X' format. Fixes LANG-1101. chas
Update Avoid memory allocation when using date formating to StringBuffer. Fixes LANG-1100. Thanks to mbracher. chas
Update Possible performance improvement on string escape functions. Fixes LANG-935. Thanks to Fabian Lange, Thomas Neidhart. britter
Fix Exception while using ExtendedMessageFormat and escaping braces. Fixes LANG-948. Thanks to Andrey Khobnya. britter
Update Avoid String allocation in StrBuilder.append(CharSequence). Fixes LANG-1098. Thanks to Mikhail Mazurskiy, Fabian Lange. britter
Update Update maven-checkstyle-plugin to 2.14. Fixes LANG-1098. Thanks to Michał Kordas. britter
Update Update org.easymock:easymock to 3.3.1. Fixes LANG-1097. Thanks to Michał Kordas. britter
Update Update maven-pmd-plugin to 3.4. Fixes LANG-1096. Thanks to Michał Kordas. britter
Update Update maven-antrun-plugin to 1.8. Fixes LANG-1095. Thanks to Michał Kordas. britter
Fix Wrong formating of time zones with daylight saving time in FastDatePrinter. Fixes LANG-1092. britter
Update Performance improvements for StringEscapeUtils. Fixes LANG-877. Thanks to Fabian Lange. britter
Add Add ClassUtils.getAbbreviatedName(). Fixes LANG-1093. Thanks to Fabian Lange. britter
Fix FastDateParser does not set error indication in ParsePosition. Fixes LANG-1090. sebb
Fix FastDateParser does not handle excess hours as per SimpleDateFormat. Fixes LANG-1089. sebb
Fix FastDateParser error - timezones not handled correctly. Fixes LANG-1061. Thanks to dmeneses. sebb
Fix NumberUtils#createNumber() returns positive BigDecimal when negative Float is expected. Fixes LANG-1087. Thanks to Renat Zhilkibaev. britter
Fix DiffBuilder.append(String, Object left, Object right) does not do a left.equals(right) check. Fixes LANG-1081. Thanks to Jonathan Baker. britter
Fix StrSubstitutor.replaceSystemProperties does not work consistently. Fixes LANG-1055. Thanks to Jonathan Baker. britter
Add Add option to disable the "objectsTriviallyEqual" test in DiffBuilder. Fixes LANG-1082. Thanks to Jonathan Baker. britter
Fix Add (T) casts to get unit tests to pass in old JDK. Fixes LANG-1083. Thanks to Jonathan Baker. britter
Add Add JsonToStringStyle implementation to ToStringStyle. Fixes LANG-1015. Thanks to Thiago Andrade. britter
Add Add NoClassNameToStringStyle implementation of ToStringStyle. Fixes LANG-1080. Thanks to Innokenty Shuvalov. britter
Update Fix wrong examples in Javadoc of StringUtils.replaceEachRepeatedly(...), StringUtils.replaceEach(...). Fixes LANG-1071. Thanks to Arno Noordover. britter
Add Add StringUtils.containsAny(CharSequence, CharSequence...) method. Fixes LANG-883. Thanks to Daniel Stewart. britter
Fix Read wrong component type of array in add in ArrayUtils. Fixes LANG-1073. Thanks to haiyang li. kinow
Fix StringUtils.ordinalIndexOf("aaaaaa", "aa", 2) != 3 in StringUtils. Fixes LANG-1077. Thanks to haiyang li. kinow
Fix Duplicated "0x" check in createBigInteger in NumberUtils. Fixes LANG-1072. Thanks to haiyang li. sebb
Fix StringUtils.abbreviate description doesn't agree with the examples. Fixes LANG-1064. Thanks to B.J. Herbison. djones
Add Multiline recursive to string style. Fixes LANG-1052. Thanks to Jan Matèrne. britter
Add Add isSorted() to ArrayUtils. Fixes LANG-536. Thanks to James Sawle. djones
Fix Fix MethodUtilsTest so it does not depend on JDK method ordering. Fixes LANG-1041. Thanks to Alexandre Bartel. britter
Update CompareToBuilder's doc doesn't specify precedence of fields it uses in performing comparisons. Fixes LANG-827. djones
Fix ParseException when trying to parse UTC dates with Z as zone designator using DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT. Fixes LANG-1000. djones
Fix Javadoc for EqualsBuilder.reflectionEquals() is unclear. Fixes LANG-1035. djones
Update Improve performance of normalize space. Fixes LANG-1020. Thanks to Libor Ondrusek. britter
Add Add StringUtils.countMatches(CharSequence, char). Fixes LANG-1033. ggregory
Update org.apache.commons.lang3.SystemUtils#isJavaVersionAtLeast should return true by default. Fixes LANG-1027. rmannibucau
Add Provide methods to retrieve all fields/methods annotated with a specific type. Fixes LANG-1021. Thanks to Alexander Müller. britter
Update Bring static method references in StringUtils to consistent style. Fixes LANG-1026. Thanks to Alex Yursha. britter
Add NumberUtils#isParsable method(s). Fixes LANG-1016. Thanks to Juan Pablo Santos Rodríguez. britter
Update Use non-ASCII digits in Javadoc examples for StringUtils.isNumeric. Fixes LANG-1017. Thanks to Christoph Schneegans. britter
Update Change min/max methods in NumberUtils/IEEE754rUtils from array input parameters to varargs. Fixes LANG-1008. Thanks to Thiago Andrade. britter
Add Add fuzzy String matching logic to StringUtils. Fixes LANG-999. Thanks to Ben Ripkens. britter
Update Add wrap (with String or char) to StringUtils. Fixes LANG-1006. Thanks to Thiago Andrade. britter
Update Extend DurationFormatUtils#formatDurationISO default pattern to match #formatDurationHMS. Fixes LANG-1005. Thanks to Michael Osipov. britter
Update Fixing NumberUtils JAVADoc comments for max methods. Fixes LANG-1007. Thanks to Thiago Andrade. britter
Update Better Javadoc for BitField class. Fixes LANG-731. djones
Update DurationFormatUtils#formatDurationHMS implementation does not correspond to Javadoc and vice versa. Fixes LANG-1004. Thanks to Michael Osipov. britter
Update DurationFormatUtils are not able to handle negative durations/periods. Fixes LANG-1003. britter
Fix ISO 8601 misspelled throughout the Javadocs. Fixes LANG-1001. Thanks to Michael Osipov. ggregory
Add Add zero copy read method to StrBuilder. Fixes LANG-994. Thanks to Mikhail Mazursky. britter
Add Add zero copy write method to StrBuilder. Fixes LANG-993. Thanks to Mikhail Mazursky. britter
Update Javadoc is not clear on preferred pattern to instantiate FastDateParser / FastDatePrinter. Fixes LANG-998. chas
Fix FastDateParser should be case insensitive. Fixes LANG-1088. chas
Fix Fix bug with stripping spaces on last line in WordUtils.wrap(). Fixes LANG-995. Thanks to Andrey Khobnya. britter
Add Add method org.apache.commons.lang3.reflect.MethodUtils.invokeExactMethod(Object, String). Fixes LANG-1044. ggregory
Add Add method org.apache.commons.lang3.reflect.MethodUtils.invokeMethod(Object, String). Fixes LANG-1045. ggregory

Release 3.3.2 – 2014-04-09

Type Changes By
Fix NumberUtils#isNumber() returns false for "0.0", "0.4790", et al. Fixes LANG-992. niallp
Add Add org.apache.commons.lang3.SystemUtils.IS_JAVA_1_8. Fixes LANG-989. ggregory

Release 3.3.1 – 2014-03-18

Type Changes By
Fix DateUtils.getFragmentInDays(Date, Calendar.MONTH) returns wrong days. Fixes LANG-987. djones
Fix DurationFormatUtils does not describe format string fully. Fixes LANG-983. sebb
Fix DurationFormatUtils#lexx does not detect unmatched quote char. Fixes LANG-981. sebb
Fix DurationFormatUtils does not handle large durations correctly. Fixes LANG-984. sebb
Fix DurationFormatUtils.formatDuration(61999, "s.SSSS") - ms field size should be 4 digits. Fixes LANG-982. sebb
Fix Failing tests with Java 8 b128. Fixes LANG-978. sebb

Release 3.3 – 2014-03-04

Type Changes By
Fix ReflectionToStringBuilder.toString does not debug 3rd party object fields within 3rd party object. Fixes LANG-621. Thanks to Philip Hodges, Thomas Neidhart. kinow
Add Add methods for removing all invalid characters according to XML 1.0 and XML 1.1 in an input string to StringEscapeUtils. Fixes LANG-955. Thanks to Adam Hooper. britter
Fix NumericEntityEscaper incorrectly encodes supplementary characters. Fixes LANG-977. Thanks to Chris Karcher. britter
Fix Make some private fields final. Fixes LANG-973. sebb
Fix NumberUtils#isNumber(String) fails to reject invalid Octal numbers. Fixes LANG-971. sebb
Fix NumberUtils#isNumber does not allow for hex 0XABCD. Fixes LANG-972. sebb
Fix StringUtils.toEncodedString(byte[], Charset) needlessly throws UnsupportedEncodingException. Fixes LANG-969. Thanks to Matt Bishop. ggregory
Add Add APIs MutableBoolean setTrue() and setFalse(). Fixes LANG-970. ggregory
Fix ConstantInitializerTest fails when building with IBM JDK 7. Fixes LANG-946. britter
Add Add SerializationUtils.roundtrip(T extends Serializable) to serialize then deserialize. Fixes LANG-962. ggregory
Update org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field) does not clean up after itself. Fixes LANG-961. ggregory
Update FastDateParser javadoc incorrectly states that SimpleDateFormat is used internally. Fixes LANG-958. chas
Add There should be a DifferenceBuilder with a ReflectionDifferenceBuilder implementation. Fixes LANG-637. djones
Fix uncaught PatternSyntaxException in FastDateFormat on Android. Fixes LANG-954. Thanks to Michael Keppler. sebb
Update Improve Javadoc of WordUtils.wrap methods. Fixes LANG-956. britter
Add Add the Jaro-Winkler string distance algorithm to StringUtils. Fixes LANG-944. Thanks to Rekha Joshi. britter
Fix StringUtils.getLevenshteinDistance with too big of a threshold returns wrong result. Fixes LANG-936. Thanks to Yaniv Kunda, Eli Lindsey. bayard
Fix Test DurationFormatUtilsTest.testEdgeDuration fails in JDK 1.6, 1.7 and 1.8, BRST time zone. Fixes LANG-943. kinow
Fix ConstructorUtils.getAccessibleConstructor() Does Not Check the Accessibility of Enclosing Classes. Fixes LANG-613. mbenson
Fix Fragments are wrong by 1 day when using fragment YEAR or MONTH. Fixes LANG-951. Thanks to Sebastian Götz. britter
Add New class ClassPathUtils with methods for turning FQN into resource path. Fixes LANG-417. britter
Update Move Documentation from user guide to package-info files. Fixes LANG-939. britter
Update Convert package.html files to package-info.java files. Fixes LANG-953. britter
Fix FastDateParser does not handle two digit year parsing like SimpleDateFormat. Fixes LANG-950. chas
Fix FastDateParserTest.testParses does not test FastDateParser. Fixes LANG-949. chas
Update Fix deprecation warnings. Fixes LANG-940. britter
Update EnumUtils.generateBitVector needs a "? extends". Fixes LANG-819. mbenson
Add Validate: add inclusiveBetween and exclusiveBetween overloads for primitive types. Fixes LANG-834. britter
Add New RandomUtils class. Fixes LANG-900. Thanks to Duncan Jones. britter
Fix Wrong locale handling in LocaleUtils.toLocale(). Fixes LANG-915. Thanks to Sergio Fernández. britter
Add Add IBM OS/400 detection. Fixes LANG-966. ggregory

Release 3.2.1 – 2014-01-05

Type Changes By
Fix Fix missing Hamcrest dependency in Ant Build. Fixes LANG-937. britter
Fix Test failure in LocaleUtilsTest when building with JDK 8. Fixes LANG-941. britter
Fix Test failure in FastDateParserTest and FastDateFormat_ParserTest when building with JDK8. Fixes LANG-942. Thanks to Bruno P. Kinoshita, Henri Yandell. britter
Fix Build fails with test failures when building with JDK 8. Fixes LANG-938.

Release 3.2 – 2014-01-01

Type Changes By
Add Add removeFinalModifier to FieldUtils. Fixes LANG-934. mcucchiara
Add Method returns number of inheritance hops between parent and subclass. Fixes LANG-863. Thanks to Daneel S. Yaitskov. sebb
Fix Spelling fixes. Fixes LANG-932. Thanks to Ville Skyttä. sebb
Update Misleading Javadoc comment in StrBuilderReader class. Fixes LANG-931. Thanks to Christoph Schneegans. britter
Fix OctalUnescaper tried to parse all of \279. Fixes LANG-929.
Fix OctalUnescaper had bugs when parsing octals starting with a zero. Fixes LANG-928.
Fix EqualsBuilder returned true when comparing arrays, even when the elements are different. Fixes LANG-905.
Add Added isStarted, isSuspended and isStopped to StopWatch. Fixes LANG-774. Thanks to Erhan Bagdemir.
Fix Fixed exception when combining custom and choice format in ExtendedMessageFormat. Fixes LANG-917. Thanks to Arne Burmeister.
Add Added StringUtils.isBlank/isEmpty CharSequence... methods. Fixes LANG-848. Thanks to Alexander Muthmann.
Add Added ArrayUtils.reverse(array, from, to) methods. Fixes LANG-926. ggregory
Add StringUtils.toString(byte[], String) deprecated in favour of a new StringUtils.toString(byte[], CharSet). Fixes LANG-795. Thanks to Aaron Digulla.
Fix RandomStringUtils.random javadoc was incorrectly promising letters and numbers would, as opposed to may, appear. Fixes LANG-902. Thanks to Andrzej Winnicki.
Fix BooleanUtils.xor(boolean...) produces wrong results. Fixes LANG-921. britter
Update StringUtils.normalizeSpace now handles non-breaking spaces (Unicode 00A0). Fixes LANG-910. Thanks to Timur Yarosh.
Update Redundant check for zero in HashCodeBuilder ctor. Fixes LANG-804. Thanks to Allon Mureinik. britter
Add StrSubstitutor now supports default values for variables. Fixes LANG-893. Thanks to Woonsan Ko. oheger
Add Adding .gitignore to commons-lang. Fixes LANG-913. Thanks to Allon Mureinik. britter
Add Add ObjectUtils.toIdentityString methods that support StringBuilder, StrBuilder, and Appendable. Fixes LANG-837.
Fix BooleanUtils.toBoolean(String str) javadoc is not updated. Fixes LANG-896. Thanks to Mark Bryan Yu.
Fix LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese" of JDK7. Fixes LANG-879.
Fix StrSubstitutor does not support StringBuilder or CharSequence. Fixes LANG-836. Thanks to Arnaud Brunet.
Fix Method createNumber from NumberUtils doesn't work for floating point numbers other than Float. Fixes LANG-693. Thanks to Calvin Echols.
Fix FastDateFormat does not use the locale specific cache correctly. Fixes LANG-887.
Update Simplify FastDateFormat; eliminate boxing. Fixes LANG-884.
Update LookupTranslator now works with implementations of CharSequence other than String. Fixes LANG-882.
Fix ClassUtils.getShortName(String) will now only do a reverse lookup for array types. Fixes LANG-754.
Add Added CharSetUtils.containsAny(String, String). Fixes LANG-886.
Update Provide CharSequenceUtils.regionMatches with a proper green implementation instead of inefficiently converting to Strings. Fixes LANG-846.
Add Added escape/unescapeJson to StringEscapeUtils. Fixes LANG-797.
Add Added appendIfMissing and prependIfMissing methods to StringUtils. Fixes LANG-875.
Fix NumberUtils.createNumber() Javadoc says it does not work for octal numbers. Fixes LANG-881.
Fix Fixed URLs in javadoc to point to new oracle.com pages
Add Add StringUtils.LF and StringUtils.CR values. Fixes LANG-870.
Add Add FieldUtils getAllFields() to return all the fields defined in the given class and super classes. Fixes LANG-873.
Fix LocaleUtils.toLocale does not parse strings starting with an underscore. Fixes LANG-865.
Add StrBuilder should support StringBuilder as an input parameter. Fixes LANG-835.
Fix StringEscapeUtils.escapeJava() and escapeEcmaScript() do not output the escaped surrogate pairs that are Java parsable. Fixes LANG-858.
Add StringIndexOutOfBoundsException in CharSequenceTranslator. Fixes LANG-857.
Add Code refactoring in NumberUtils. Fixes LANG-856.
Add NumberUtils#createBigInteger does not allow for hex and octal numbers. Fixes LANG-855.
Add NumberUtils#createNumber - does not allow for hex numbers to be larger than Long. Fixes LANG-854.
Add StringUtils join APIs for primitives. Fixes LANG-853.
Fix FastDateFormat and FastDatePrinter generates Date objects wastefully. Fixes LANG-849.
Fix Spelling fixes. Fixes LANG-845.
Fix Fix examples contained in javadoc of StringUtils.center methods. Fixes LANG-844.
Add Add StringUtils API to call String.replaceAll in DOTALL a.k.a. single-line mode. Fixes LANG-841.
Update ArrayUtils removeElements methods use unnecessary HashSet. Fixes LANG-839.
Update ArrayUtils removeElements methods clone temporary index arrays unnecessarily. Fixes LANG-838.
Fix FastDateParser does not handle unterminated quotes correctly. Fixes LANG-832.
Fix FastDateParser does not handle white-space properly. Fixes LANG-831.
Fix FastDateParser could use \Q \E to quote regexes. Fixes LANG-830.
Fix FastDateParser does not handle non-Gregorian calendars properly. Fixes LANG-828.
Fix FastDateParser does not handle non-ASCII digits correctly. Fixes LANG-826.
Add Create StrBuilder APIs similar to String.format(String, Object...). Fixes LANG-825.
Fix NumberUtils#createNumber - bad behavior for leading "--". Fixes LANG-822.
Fix FastDateFormat's "z" pattern does not respect timezone of Calendar instances passed to format(). Fixes LANG-818.
Fix Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8. Fixes LANG-817.
Fix StringUtils.equalsIgnoreCase doesn't check string reference equality. Fixes LANG-813.
Fix StringUtils.join() endIndex, bugged for loop. Fixes LANG-810.
Fix RandomStringUtils throws confusing IAE when end <= start. Fixes LANG-807.
Fix RandomStringUtils.random(count, 0, 0, false, false, universe, random) always throws java.lang.ArrayIndexOutOfBoundsException. Fixes LANG-805.
Fix LocaleUtils - unnecessary recursive call in SyncAvoid class. Fixes LANG-802.
Fix Javadoc bug in DateUtils#ceiling for Calendar and Object versions. Fixes LANG-800.
Update DateUtils#parseDate uses default locale; add Locale support. Fixes LANG-799.
Update Use generics in SerializationUtils. Fixes LANG-798.
Fix SerializationUtils throws ClassNotFoundException when cloning primitive classes. Fixes LANG-788.
Fix StringUtils equals() relies on undefined behavior. Fixes LANG-786.
Fix Documentation bug: StringUtils.split. Fixes LANG-783.
Fix jar contains velocity template of release notes. Fixes LANG-777.
Fix TypeUtilsTest contains incorrect type assignability assertion. Fixes LANG-776.
Fix TypeUtils.getTypeArguments() misses type arguments for partially-assigned classes. Fixes LANG-775.
Fix ImmutablePair doc contains nonsense text. Fixes LANG-773.
Fix ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text. Fixes LANG-772.
Fix EventListenerSupport.ProxyInvocationHandler no longer defines serialVersionUID. Fixes LANG-765.
Fix StrBuilder is now serializable. Fixes LANG-764.
Fix Fix Javadoc Ant warnings. Fixes LANG-761.
Fix NumberUtils does not handle Long Hex numbers. Fixes LANG-747.
Fix Javadoc bug in static inner class DateIterator. Fixes LANG-743.
Add Add Triple class (ternary version of Pair). Fixes LANG-675.
Add FastDateFormat supports parse methods. Fixes LANG-462.

Release 3.1 – 2011-11-14

Type Changes By
Add Add API StringUtils.toString(byte[] intput, String charsetName). Fixes LANG-760.
Update Add an example with whitespace in StringUtils.defaultIfEmpty. Fixes LANG-758.
Add Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and isPrimitiveOrWrapper(Class<?>). Fixes LANG-756.
Update Fix createLong() so it behaves like createInteger(). Fixes LANG-752.
Update Include the actual type in the Validate.isInstance and isAssignableFrom exception messages. Fixes LANG-751.
Fix Incorrect Bundle-SymbolicName in Manifest. Fixes LANG-749.
Update Deprecating chomp(String, String). Fixes LANG-748.
Fix NumberUtils does not handle upper-case hex: 0X and -0X. Fixes LANG-746.
Fix StringUtils throws java.security.AccessControlException on Google App Engine. Fixes LANG-744.
Fix Ant build has wrong component.name. Fixes LANG-741.
Update CharUtils static final array CHAR_STRING is not needed to compute CHAR_STRING_ARRAY. Fixes LANG-736.
Fix Document that the Mutable numbers don't work as expected with String.format. Fixes LANG-698.
Add SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system. Fixes LANG-695.

Release 3.0.1 – 2011-08-09

Type Changes By
Fix SerializationUtils.clone: Fallback to context classloader if class not found in current classloader. Fixes LANG-626.
Fix ToStringBuilderTest.testReflectionHierarchyArrayList fails with IBM JDK 6. Fixes LANG-727.
Fix StringEscapeUtils.escapeXml(input) wrong when input contains characters in Supplementary Planes. Fixes LANG-720.
Fix StringEscapeUtils.escapeEcmaScript from lang3 cuts off long unicode string. Fixes LANG-708.
Update Improve exception message when StringUtils.replaceEachRepeatedly detects recursion. Fixes LANG-686.
Update Specify source encoding for Ant build. Fixes LANG-717.
Add Complement ArrayUtils.addAll() variants with by-index and by-value removal methods. Fixes LANG-721.
Add Add Range<T> Range<T>.intersectionWith(Range<T>). Fixes LANG-726.
Add Add mode and median Comparable... methods to ObjectUtils. Fixes LANG-723.
Add Add BooleanUtils.and + or varargs methods. Fixes LANG-722.
Add EnumSet -> bit vector. Fixes LANG-730.
Fix The CHAR_ARRAY cache in CharUtils duplicates the cache in java.lang.Character. Fixes LANG-734.
Update Deprecate CharUtils.toCharacterObject(char) in favor of java.lang.Character.valueOf(char). Fixes LANG-735.
Add Missing method getRawMessage for ContextedException and ContextedRuntimeException. Fixes LANG-737.
Fix Use internal Java's Number caches instead creating new objects. Fixes LANG-738.

Release 3.0 – 2011-07-18

Type Changes By
Fix StringEscapeUtils.escapeXml(input) outputs wrong results when an input contains characters in Supplementary Planes. Fixes LANG-720.
Update build.xml Java 1.5+ updates. Fixes LANG-718.
Fix swapCase and *capitalize speedups. Fixes LANG-716.
Fix CharSetUtils.squeeze() speedup. Fixes LANG-715.
Fix StringUtils doc/comment spelling fixes. Fixes LANG-714.
Update Increase test coverage of FieldUtils read methods and tweak Javadoc. Fixes LANG-713.
Fix Add includeantruntime=false to javac targets to quell warnings in ant 1.8.1 and better (and modest performance gain). Fixes LANG-711.
Fix StringIndexOutOfBoundsException when calling unescapeHtml4(""). Fixes LANG-710.
Fix StringEscapeUtils.escapeEcmaScript from lang3 cuts off long Unicode string. Fixes LANG-708.
Fix StringUtils.join throws NPE when toString returns null for one of objects in collection. Fixes LANG-703.
Add Add FormattableUtils class. Fixes LANG-697.
Add Add ClassUtils.getSimpleName() methods.
Add Add hashCodeMulti varargs method. Fixes LANG-692.
Remove Removed DateUtils.UTC_TIME_ZONE. Fixes LANG-691.
Update Convert more of the StringUtils API to take CharSequence.
Fix EqualsBuilder synchronizes on HashCodeBuilder. Fixes LANG-685.
Fix StringUtils.isAlpha, isAlphanumeric and isNumeric now return false for "". Fixes LANG-428.
Add Add support for ConcurrentMap.putIfAbsent(). Fixes LANG-678.
Add Documented potential NPE if auto-boxing occurs for some BooleanUtils methods. Fixes LANG-676.
Fix DateUtils.isSameLocalTime compares using 12 hour clock and not 24 hour. Fixes LANG-677.
Add Extend exception handling in ConcurrentUtils to runtime exceptions. Fixes LANG-610.
Fix SystemUtils.getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM. Fixes LANG-624.
Remove WordUtils.abbreviate() removed. Fixes LANG-673.
Fix Doc bug in DateUtils#ceiling. Fixes LANG-672.
Fix StringEscapeUtils.unescapeJava doesn't handle octal escapes and Unicode with extra u. Fixes LANG-646.
Fix org.apache.commons.lang3.math.Fraction does not reduce (Integer.MIN_VALUE, 2^k). Fixes LANG-662.
Fix org.apache.commons.lang3.math.Fraction does not always succeed in multiplyBy and divideBy. Fixes LANG-663.
Update Change ObjectUtils min() & max() functions to use varargs rather than just two parameters. Fixes LANG-668.
Add Add a Null-safe compare() method to ObjectUtils. Fixes LANG-667.
Fix NumberUtils.isNumber(String) is not right when the String is "1.1L". Fixes LANG-664.
Fix EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212 ISOtech. Fixes LANG-659.
Fix Some Entitys like &Ouml; are not matched properly against its ISO8859-1 representation. Fixes LANG-658.
Fix Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect. Fixes LANG-656.
Add Add StringUtils.defaultIfBlank(). Fixes LANG-655.
Add Provide a very basic ConcurrentInitializer implementation. Fixes LANG-653.
Add Support lazy initialization using atomic variables. Fixes LANG-609.
Add Enhance StrSubstitutor to support nested ${var-${subvr}} expansion. Fixes LANG-482.
Add Provide documentation about the new concurrent package. Fixes LANG-644.
Fix Charset may not be threadsafe, because the HashSet is not synch. Fixes LANG-629.
Fix StringEscapeUtils.escapeXML() can't process UTF-16 supplementary characters. Fixes LANG-617.
Add StringUtils.endsWithAny method. Fixes LANG-614.
Add Add AnnotationUtils. Fixes LANG-651.
Add BooleanUtils.toBooleanObject to support single character input. Fixes LANG-649.
Fix FastDateFormat.format() outputs incorrect week of year because locale isn't respected. Fixes LANG-645.
Fix StrSubstitutor should also handle the default properties of a java.util.Properties class. Fixes LANG-596.
Fix Javadoc StringUtils.left() claims to throw on negative len, but doesn't. Fixes LANG-643.
Add Add normalizeSpace to StringUtils. Fixes LANG-640.
Fix NumberUtils createNumber throws a StringIndexOutOfBoundsException when argument containing "e" and "E" is passed in. Fixes LANG-638.
Unknown NOTE: The below were included in the Commons Lang 3.0-beta release.
Update Convert StringUtils API to take CharSequence.
Update Push down WordUtils to "text" sub-package.
Add Extend exception handling in ConcurrentUtils to runtime exceptions. Fixes LANG-610.
Fix Some StringUtils methods should take an int character instead of char to use String API features. Fixes LANG-608.
Fix EqualsBuilder causes StackOverflowException. Fixes LANG-606.
Update DefaultExceptionContext overwrites values in recursive situations. Fixes LANG-605.
Fix ContextedRuntimeException no longer an 'unchecked' exception. Fixes LANG-602.
Add Add Builder Interface / Update Builders to Implement It. Fixes LANG-601.
Fix Javadoc is incorrect for public static int lastIndexOf(String str, String searchStr). Fixes LANG-600.
Update ClassUtils.getClass(): Allow Dots as Inner Class Separators. Fixes LANG-599.
Add DateUtils equal & compare functions up to most significant field. Fixes LANG-594.
Remove Remove JDK 1.2/1.3 bug handling in StringUtils.indexOf(String, String, int). Fixes LANG-590.
Add Create a basic Pair<L, R> class. Fixes LANG-588.
Fix exception.DefaultExceptionContext.getFormattedExceptionMessage catches Throwable. Fixes LANG-585.
Add Provide an implementation of the ThreadFactory interface. Fixes LANG-582.
Update Add new Validate methods. Fixes LANG-579.
Fix ArrayUtils.add(T[] array, T element) can create unexpected ClassCastException. Fixes LANG-571.
Update Do the test cases really still require main() and suite() methods?. Fixes LANG-570.
Fix @SuppressWarnings("unchecked") is used too generally. Fixes LANG-568.
Fix Improve StrLookup API documentation. Fixes LANG-564.
Update Change Java package name. Fixes LANG-563.
Update Change Maven groupId. Fixes LANG-562.
Add New TimedSemaphore class. Fixes LANG-560.
Add Added validState validation method. Fixes LANG-559.
Add Added isAssignableFrom and isInstanceOf validation methods. Fixes LANG-559.
Add Add TypeUtils class to provide utility code for working with generic types. Fixes LANG-553.
Update Replace Range classes with generic version. Fixes LANG-551.
Update Use Iterable on API instead of Collection. Fixes LANG-548.
Add Add methods to Validate to check whether the index is valid for the array/list/string. Fixes LANG-546.
Add Add ability to create a Future for a constant. Fixes LANG-545.
Update Replace StringBuffer with StringBuilder. Fixes LANG-541.
Update Make NumericEntityEscaper immutable. Fixes LANG-540.
Update Compile commons.lang for CDC 1.1/Foundation 1.1. Fixes LANG-539.
Add Add ArrayUtils.toArray to create generic arrays. Fixes LANG-537.
Add Validate: support for validating blank strings. Fixes LANG-533.
Add Add a concurrent package. Fixes LANG-529.
Update Mutable classes should implement an appropriately typed Mutable interface. Fixes LANG-528.
Update Better EnumUtils. Fixes LANG-513.
Update StringEscapeUtils.unescapeJava should support \u+ notation. Fixes LANG-507.
Update Rewrite StringEscapeUtils. Fixes LANG-505.
Update bring ArrayUtils.isEmpty to the generics world. Fixes LANG-504.
Add Add support for background initialization. Fixes LANG-501.
Add Add support for the handling of ExecutionExceptions. Fixes LANG-499.
Add Add StringEscapeUtils.escapeText() methods. Fixes LANG-498.
Add Addition of ContextedException and ContextedRuntimeException. Fixes LANG-497.
Add A generic implementation of the Lazy initialization pattern. Fixes LANG-496.
Remove Remove code that does not hold enough value to remain. Fixes LANG-493.
Remove Remove code handled now by the JDK. Fixes LANG-492.
Add StrSubstitutor now supports substitution in variable names. Fixes LANG-482.
Fix Possible race-conditions in hashCode of the range classes. Fixes LANG-481.
Fix StringEscapeUtils.escapeHtml incorrectly converts Unicode characters above U+00FFFF into 2 characters. Fixes LANG-480.
Update Document where in SVN trunk is. Fixes LANG-479.
Fix StopWatch does not resist to system time changes. Fixes LANG-478.
Fix Fixes for thread safety. Fixes LANG-474.
Update Refactor Validate.java to eliminate code redundancy. Fixes LANG-458.
Fix Lower Ascii Characters don't get encoded by Entities.java. Fixes LANG-448.
Add StringUtils.emptyToNull. Fixes LANG-444.
Fix StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20). Fixes LANG-439.
Remove Remove @deprecateds. Fixes LANG-438.
Add Add ClassUtils.isAssignable() variants with autoboxing. Fixes LANG-435.
Update Improve Javadoc for StringUtils class. Fixes LANG-424.
Fix Javadoc incorrect for StringUtils.endsWithIgnoreCase. Fixes LANG-418.
Update Investigate for vararg usages. Fixes LANG-396.
Fix JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder). Fixes LANG-468.
Add LeftOf/RightOfNumber in Range convenience methods necessary. Fixes LANG-386.
Fix ExceptionUtils not thread-safe. Fixes LANG-369.
Add ObjectUtils.coalesce. Fixes LANG-358.
Update StrBuilder should implement CharSequence and Appendable. Fixes LANG-355.
Fix StringEscapeUtils.escapeHtml() escapes multibyte characters like Chinese, Japanese, etc. Fixes LANG-339.
Update Finally start using generics. Fixes LANG-336.
Fix StrBuilder does not implement clone(). Fixes LANG-302.
Update EnumUtils for JDK 5.0. Fixes LANG-290.
Add Wish : method unaccent. Fixes LANG-285.
Add MutableBigDecimal and MutableBigInteger. Fixes LANG-276.
Fix StringEscaper.escapeXml() escapes characters > 0x7f. Fixes LANG-66.
Fix Depend on JDK 1.5+. Fixes LANG-11.

Release 2.6 – 2011-01-16

Type Changes By
Update BooleanUtils: use same optimization in toBooleanObject(String) as in toBoolean(String). Fixes LANG-633.
Update ClassUtils: allow Dots as Inner Class Separators in getClass(). Fixes LANG-599.
Add DateUtils: equal and compare functions up to most significant field. Fixes LANG-594.
Add DateUtils: provide a Date to Calendar convenience method. Fixes LANG-632.
Add ObjectUtils: add clone methods to ObjectUtils. Fixes LANG-576.
Add ObjectUtils: add a Null-safe compare() method. Fixes LANG-667.
Add ObjectUtils: add notEqual() method. Fixes LANG-670.
Add StrBuilder: implement clone() method. Fixes LANG-302.
Add StringUtils: add a normalizeSpace() method. Fixes LANG-640.
Add StringUtils: add endsWithAny() method. Fixes LANG-614.
Add StringUtils: add defaultIfBlank() method. Fixes LANG-655.
Add StrSubstitutor: add a replace(String, Properties) variant. Fixes LANG-596.
Add StrSubstitutor: support substitution in variable names. Fixes LANG-482.
Update Use StrBuilder instead of StringBuffer to improve performance where sync. is not an issue. Fixes LANG-669.
Fix CharSet: make the underlying set synchronized. Fixes LANG-629.
Fix CompareToBuilder: fix passing along compareTransients to the reflectionCompare method. Fixes LANG-635.
Fix ExtendedMessageFormat doesn't override equals(Object). Fixes LANG-636.
Fix FastDateFormat: fix to properly include the locale when formatting a Date. Fixes LANG-645.
Fix NumberUtils: createNumber() throws a StringIndexOutOfBoundsException when argument containing "e" and "E" is passed in. Fixes LANG-638.
Fix StringUtils methods do not handle Unicode 2.0+ supplementary characters correctly. Fixes LANG-607.
Fix SystemUtils: getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM. Fixes LANG-624.
Fix MemberUtils: getMatchingAccessibleMethod does not correctly handle inheritance and method overloading. Fixes BEANUTILS-381.
Update Javadoc is incorrect for lastIndexOf() method. Fixes LANG-600.
Update Javadoc for HashCodeBuilder.append(boolean) does not match implementation. Fixes LANG-628.
Update Javadoc StringUtils.left() claims to throw an exception on negative lenth, but doesn't. Fixes LANG-643.
Update Javadoc - document thread safety. Fixes LANG-370.
Update Test for StringUtils replaceChars() icelandic characters. Fixes LANG-623.

Release 2.5 – 2010-02-25

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

Release 2.4 – 2008-03-18

Type Changes By
Add ClassUtils.getShortClassName(String) inefficient. Fixes LANG-322.
Add Shouldn't Commons Lang's StringUtils have a "common" string method?. Fixes LANG-269.
Fix FastDateFormat getDateInstance() and getDateTimeInstance() assume Locale.getDefault() won't change. Fixes LANG-368.
Add OSGi-ify Lang. Fixes LANG-402.
Fix StrBuilder appendFixedWidth does not handle nulls. Fixes LANG-412.
Fix infinite loop in Fraction.reduce when numerator == 0. Fixes LANG-380.
Fix FastDateFormat thread safety. Fixes LANG-367.
Add ClassUtils.getShortClassName and ClassUtils.getPackageName and class of array. Fixes LANG-298.
Fix LocaleUtils.toLocale() rejects strings with only language+variant. Fixes LANG-328.
Fix Enum is not thread-safe. Fixes LANG-334.
Fix BooleanUtils.toBoolean() - invalid drop-thru in case statement causes StringIndexOutOfBoundsException. Fixes LANG-365.
Add ArrayUtils.toClass. Fixes LANG-333.
Fix Why does appendIdentityToString return null?. Fixes LANG-360.
Fix NumberUtils.min(floatArray) returns wrong value if floatArray[0] happens to be Float.NaN. Fixes LANG-381.
Fix Dates.round() behaves incorrectly for minutes and seconds. Fixes LANG-346.
Add StringUtils.length(String) returns null-safe length. Fixes LANG-407.
Add adding a StringUtils.replace method that takes an array or List of replacement strings. Fixes LANG-180.
Add Adding functionality to DateUtils to allow direct setting of various fields. Fixes LANG-383.
Add Add escaping for CSV columns to StringEscapeUtils. Fixes LANG-374.
Add StringUtils: startsWith / endsWith / startsWithIgnoreCase / endsWithIgnoreCase / removeStartIgnoreCase / removeEndIgnoreCase methods. Fixes LANG-326.
Add Extension to ClassUtils: Obtain the primitive class from a wrapper. Fixes LANG-351.
Fix Javadoc bugs - cannot find object. Fixes LANG-399.
Add Optimize HashCodeBuilder.append(Object). Fixes LANG-345.
Fix https://commons.apache.org/lang/developerguide.html "Building" section is incorrect and incomplete. Fixes LANG-385.
Fix Ambiguous / confusing names in StringUtils replace* methods. Fixes LANG-410.
Add Add new splitByWholeSeparatorPreserveAllTokens() methods to StringUtils. Fixes LANG-257.
Add Add getStartTime to StopWatch. Fixes LANG-356.
Add Perhaps add containsAny() methods?. Fixes LANG-377.
Fix Javadoc Example for EqualsBuilder is questionable. Fixes LANG-353.
Fix EqualsBuilder don't compare BigDecimals correctly. Fixes LANG-393.
Add Split camel case strings. Fixes LANG-192.
Add Add Calendar flavour format methods to DateFormatUtils. Fixes LANG-404.
Add Calculating A date fragment in any time-unit. Fixes LANG-379.
Add Memory usage improvement for StringUtils#getLevenshteinDistance(). Fixes LANG-413.
Add Add ExtendedMessageFormat to org.apache.commons.lang.text. Fixes LANG-362.
Fix StringEscapeUtils.escapeJavaScript() method did not escape '/' into '\/', it will make IE render page uncorrectly. Fixes LANG-363.
Add Add toArray() method to IntRange and LongRange classes. Fixes LANG-321.
Add add SystemUtils.IS_OS_WINDOWS_VISTA field. Fixes LANG-375.
Add Pointless synchronized in ThreadLocal.initialValue should be removed. Fixes LANG-329.
Add ToStringStyle Javadoc should show examples of styles. Fixes LANG-371.
Fix Documentation bug for ignoreEmptyTokens accessors in StrTokenizer. Fixes LANG-364.
Fix BooleanUtils toBooleanObject Javadoc does not match implementation. Fixes LANG-361.
Add truncateNicely method which avoids truncating in the middle of a word. Fixes LANG-338.

Release 2.3 – 2007-02-13

Type Changes By
Fix Use of enum prevents a classloader from being garbage collected resuling in out of memory exceptions. Fixes LANG-262.
Add NumberUtils.max(byte[]) and NumberUtils.min(byte[]) are missing. Fixes LANG-289.
Add Null-safe comparison methods for finding most recent / least recent dates. Fixes LANG-291.
Fix StopWatch: suspend() acts as split(), if followed by stop(). Fixes LANG-315.
Fix StrBuilder.replaceAll and StrBuilder.deleteAll can throw ArrayIndexOutOfBoundsException. Fixes LANG-294.
Fix Bug in method appendFixedWidthPadRight of class StrBuilder causes an ArrayIndexOutOfBoundsException. Fixes LANG-299.
Fix ToStringBuilder throws StackOverflowError when an Object cycle exists. Fixes LANG-69.
Add Create more tests to test out the +=31 replacement code in DurationFormatUtils. Fixes LANG-282.
Fix StrBuilder contains usages of thisBuf.length when they should use size. Fixes LANG-295.
Add Enum Javadoc: 1) outline 5.0 native Enum migration 2) warn not to use the switch() , 3) point out approaches for persistence and gui. Fixes LANG-258.
Fix Wrong behavior of Entities.unescape. Fixes LANG-313.
Fix NumberUtils.createNumber throws NumberFormatException for one digit long. Fixes LANG-300.
Fix NullPointerException in isAvailableLocale(Locale). Fixes LANG-304.
Fix FastDateFormat.mRules is not transient or serializable. Fixes LANG-303.
Add StringUtils.join should allow you to pass a range for it (so it only joins a part of the array). Fixes LANG-268.
Fix Refactor Entities methods. Fixes LANG-102.
Fix Tests fail to pass when building with Maven 2. Fixes LANG-314.
Fix DurationFormatUtils returns wrong result. Fixes LANG-281.
Fix unescapeXml("&12345678;") should be "&12345678;". Fixes LANG-292.
Add Optimize StringEscapeUtils.unescapeXml(String). Fixes LANG-287.
Add BooleanUtils isNotTrue/isNotFalse. Fixes LANG-310.
Add Extra StrBuilder methods. Fixes LANG-306.
Add Add a pair of StringUtils.substringsBetween;String[] methods. Fixes LANG-275.
Fix HashCodeBuilder throws java.lang.StackOverflowError when an object contains a cycle. Fixes LANG-279.
Add Wish for StringUtils.join(Collection, *). Fixes LANG-266.

Release 2.2 – 2006-10-04

Type Changes By
Fix StrBuilderTest#testReplaceStringString fails. Fixes LANG-45.
Fix EqualsBuilder.append(Object[], Object[]) crashes with a NullPointerException if an element of the first array is null. Fixes LANG-42.
Fix Serialization - not backwards compatible. Fixes LANG-286.
Fix Replace Clover with Cobertura. Fixes LANG-50.
Fix ValuedEnum.compareTo(Object other) not typesafe - it easily could be... Fixes LANG-259.
Fix LocaleUtils test fails under Mustang. Fixes LANG-271.
Fix Javadoc example for StringUtils.splitByWholeSeparator incorrect. Fixes LANG-2.
Fix PADDING array in StringUtils overflows on '\uffff'. Fixes LANG-3.
Fix ClassUtils.primitiveToWrapper and Void. Fixes LANG-10.
Fix unit test for org.apache.commons.lang.text.StrBuilder. Fixes LANG-37.
Fix DateUtils.truncate method is buggy when dealing with DST switching hours. Fixes LANG-59.
Fix RandomStringUtils.random() family of methods create invalid Unicode sequences. Fixes LANG-100.
Fix StringUtils#getLevenshteinDistance() performance is sub-optimal. Fixes LANG-106.
Fix Wrong length check in StrTokenizer.StringMatcher. Fixes LANG-112.
Fix ExceptionUtils goes into infinite loop in getThrowables is throwable.getCause() == throwable. Fixes LANG-105.
Fix FastDateFormat: wrong format for date "01.01.1000". Fixes LANG-117.
Fix Unclear Javadoc for DateUtils.iterator(). Fixes LANG-123.
Fix Memory "leak" in StringUtils. Fixes LANG-130.
Add StringEscapeUtils should expose escape*() methods taking Writer argument. Fixes LANG-260.
Fix Fraction.toProperString() returns -1/1 for -1. Fixes LANG-141.
Fix DurationFormatUtils.formatDurationWords "11 <unit>s" gets converted to "11 <unit>". Fixes LANG-152.
Fix Performance modifications on StringUtils.replace. Fixes LANG-148.
Fix StringEscapeUtils.unescapeHtml skips first entity after standalone ampersand. Fixes LANG-150.
Fix DurationFormatUtils.formatPeriod() returns the wrong result. Fixes LANG-140.
Add Request for MutableBoolean implementation. Fixes LANG-186.
Add New method for EqualsBuilder. Fixes LANG-198.
Add New ExceptionUtils method setCause(). Fixes LANG-212.
Add Add Mutable<Type> to<Type>() methods. Fixes LANG-217.
Add Provides a Class.getPublicMethod which returns public invocable Method. Fixes LANG-216.
Add Using ReflectionToStringBuilder and excluding secure fields. Fixes LANG-226.
Add add generic add method to DateUtils. Fixes LANG-194.
Add Tokenizer Enhancements: reset input string, static CSV/TSV factories. Fixes LANG-220.
Add Trivial cleanup of Javadoc in various files. Fixes LANG-242.
Add CompositeFormat. Fixes LANG-246.
Add Performance boost for RandomStringUtils. Fixes LANG-250.
Add Enhanced Class.forName version. Fixes LANG-254.
Add Add StringUtils.containsIgnoreCase(...). Fixes LANG-263.
Add Support char array converters on ArrayUtils. Fixes LANG-267.
Fix DurationFormatUtils.formatDurationISO() Javadoc is missing T in duration string between date and time part. Fixes LANG-25.
Fix Minor build and checkstyle changes. Fixes LANG-272.
Fix Javadoc errors on StringUtils.splitPreserveAllTokens(String, char). Fixes LANG-277.
Fix EscapeUtil.escapeHtml() should clarify that it does not escape ' chars to &apos;. Fixes LANG-122.
Add Add methods and tests to StrBuilder. Fixes LANG-161.
Add replace() length calculation improvement. Fixes LANG-162.
Add New interpolation features. Fixes LANG-166.
Add Implementation of escape/unescapeHtml methods with Writer. Fixes LANG-169.
Add CompareToBuilder excludeFields for reflection method. Fixes LANG-176.
Add Add WordUtils.getInitials(String). Fixes LANG-159.
Fix Error in an example in the Javadoc of the StringUtils.splitPreserveAllTokens() method. Fixes LANG-261.
Fix ToStringBuilder/HashCodeBuilder Javadoc code examples. Fixes LANG-264.
Fix Cannot build tests from latest SVN. Fixes LANG-265.
Add minor Javadoc improvements for StringUtils.stripXxx() methods. Fixes LANG-270.
Fix Javadoc for StringUtils.removeEnd is incorrect. Fixes LANG-278.
Fix Minor tweak to fix of bug # 26616. Fixes LANG-127.

Release 2.1 – 2005-06-13

Type Changes By
Fix make optional parameters in FastDateFormat really optional. Fixes LANG-103.
Fix Nestable.indexOfThrowable(Class) uses Class.equals() to match. Fixes LANG-149.
Fix buffer under/overrun on Strings.strip, stripStart & stripEnd. Fixes LANG-30.
Fix ToStringStyle.setArrayEnd(String) doesn't replace null with empty string. Fixes LANG-19.
Fix New class proposal: CharacterEncoding. Fixes LANG-80.
Fix SystemUtils fails init on HP-UX. Fixes LANG-43.
Fix Javadoc - 'four basic XML entities' should be 5 (apos is missing). Fixes LANG-134.
Fix o.a.c.lang.enum.ValuedEnum: 'enum'is a keyword in JDK1.5.0. Fixes LANG-156.
Fix StringEscapeUtils.unescapeHtml() doesn't handle an empty entity. Fixes LANG-131.
Fix EqualsBuilder.append(Object[], Object[]) incorrectly checks that rhs[i] is instance of lhs[i]'s class. Fixes LANG-6.
Fix Method enums.Enum.equals(Object o) doesn't work correctly. Fixes LANG-33.
Fix ExceptionUtils.addCauseMethodName(String) does not check for duplicates. Fixes LANG-31.
Fix Make StopWatch validate state transitions. Fixes LANG-136.
Fix enum package is not compatible with 1.5 jdk. Fixes LANG-124.
Fix WordUtils capitalizeFully() throws a null pointer exception. Fixes LANG-128.
Fix ValuedEnum. Fixes LANG-138.
Fix parseDate class from HttpClient's DateParser class. Fixes LANG-133.
Fix ArrayUtils.isEquals() throws ClassCastException when array1 and array2 are different dimension. Fixes LANG-62.
Fix ClassCastException in Enum.equals(Object). Fixes LANG-57.
Fix FastDateFormat year bug. Fixes LANG-107.
Fix unbalanced ReflectionToStringBuilder. Fixes LANG-77.
Fix FastDateFormat.getDateInstance(int, Locale) always uses the pattern from the first invocation. Fixes LANG-86.
Fix ReflectionToStringBuilder.toString(null) throws exception by design. Fixes LANG-79.
Fix Make ClassUtils methods null-safe and not throw an IAE. Fixes LANG-126.
Fix StringUtils.split ignores empty items. Fixes LANG-5.
Fix EqualsBuilder.append(Object[], Object[]) throws NPE. Fixes LANG-144.
Fix ArrayUtils.addAll doesn't always return new array. Fixes LANG-74.
Fix Enum.equals does not handle different class loaders. Fixes LANG-81.
Fix Add SystemUtils.AWT_TOOLKIT and others. Fixes LANG-27.
Fix Throwable cause for NotImplementedException. Fixes LANG-14.
Fix ClassUtils.primitivesToWrappers method. Fixes LANG-28.
Fix public static boolean DateUtils.equals(Date dt1, Date dt2) ?. Fixes LANG-120.
Fix Documentation error in StringUtils.replace. Fixes LANG-7.
Fix DateUtils constants should be long. Fixes LANG-125.
Fix DateUtils.truncate() is off by one hour when using a date in DST switch 'zone'. Fixes LANG-13.
Fix StringEscapeUtils.unescapeHtml() doesn't handle hex entities. Fixes LANG-118.
Fix new StringUtils.replaceChars behaves differently from old CharSetUtils.translate. Fixes LANG-99.
Fix last substring returned by StringUtils.split( String, String, int ) is too long. Fixes LANG-41.
Fix Can't subclass EqualsBuilder because isEquals is private. Fixes LANG-119.
Fix new StringUtils.split methods that split on the whole separator string. Fixes LANG-158.
Add New method for converting a primitive Class to its corresponding wrapper Class. Fixes LANG-172.
Add Add convenience format(long) methods to FastDateFormat. Fixes LANG-222.
Fix Enum's outer class may not be loaded for EnumUtils. Fixes LANG-116.
Add WordUtils.capitalizeFully(String str) should take a delimiter. Fixes LANG-219.
Add Make Javadoc crosslinking configurable. Fixes LANG-183.
Fix Minor Javadoc fixes for StringUtils.contains(String, String). Fixes LANG-82.
Fix Error in Javadoc for StringUtils.chomp(String, String). Fixes LANG-32.
Fix StringUtils.defaultString: Documentation error. Fixes LANG-95.
Add Add hashCode-support to class ObjectUtils. Fixes LANG-233.
Add add another "known method" to ExceptionUtils. Fixes LANG-202.
Add Enhancement of ExceptionUtils.CAUSE_METHOD_NAMES. Fixes LANG-235.
Fix DateUtils.truncate oddity at the far end of the Date spectrum. Fixes LANG-24.
Add add getLength() method to ArrayUtils. Fixes LANG-232.
Add Validate.java: fixes comment skew, removes unused loop counter. Fixes LANG-171.
Add StringUtils.isAsciiPrintable(). Fixes LANG-179.
Add ExceptionUtils: new getCause() methodname (for tomcat-exception). Fixes LANG-167.
Fix fixes 75 typos. Fixes LANG-85.
Add mutable numbers. Fixes LANG-230.
Add Javadoc fixes for ClassUtils. Fixes LANG-191.
Add Add StringUtils.nIndexOf?. Fixes LANG-184.
Fix Javadoc fixes for CharSetUtils. Fixes LANG-135.
Fix Remove redundant check for null separator in StringUtils#join. Fixes LANG-154.
Add Class and Package Comparators for ClassUtils. Fixes LANG-247.
Add add remove methods to ArrayUtils. Fixes LANG-256.
Add WordUtils capitalize improvement. Fixes LANG-185.
Add add isEmpty method to ArrayUtils. Fixes LANG-173.
Add lang.math.Fraction class deficiencies. Fixes LANG-168.
Add Add methods to ArrayUtils: add at end and insert-like ops. Fixes LANG-207.
Add Add SystemUtils methods for directory properties. Fixes LANG-239.
Add Add method that validates Collection elements are a certain type. Fixes LANG-189.
Add elapsed time formatting utility method. Fixes LANG-224.

Release 2.0 – 2003-09-02

Type Changes By
Fix Infinite loop in ToStringBuilder.reflectionToString for inner classes. Fixes LANG-20.
Fix NumberUtils.createBigDecimal("") NPE in Sun 1.3.1_08. Fixes LANG-75.
Fix Rationalize StringUtils slice functions. Fixes LANG-38.
Fix SystemUtils.IS_OS_OS2 Javadoc is wrong. Fixes LANG-53.
Fix A small, but important Javadoc fix for Fraction proper whole and numerator. Fixes LANG-142.
Fix Adding tolerance to double[] search methods in ArrayUtils. Fixes LANG-70.
Fix lang.builder classes Javadoc edits (mostly typo fixes). Fixes LANG-9.
Fix StringUtils Javadoc and test enhancements. Fixes LANG-63.
Fix SystemUtils.IS_OS_*, IS_JAVA_* are always false. Fixes LANG-132.
Fix Improve util.Validate tests. Fixes LANG-143.
Fix maven-beta10 checkstyle problem. Fixes LANG-155.
Fix StringUtils.chopNewLine - StringIndexOutOfBoundsException. Fixes LANG-147.
Fix ToStringBuilder doesn't work well in subclasses. Fixes LANG-73.
Fix static option for reversing the stacktrace. Fixes LANG-48.
Fix NullPointerException in CompareToBuilder. Fixes LANG-87.
Fix RandomStringUtils.randomAlpha methods omit 'z'. Fixes LANG-84.
Fix test.time fails in Japanese (non-us) locale. Fixes LANG-129.
Fix NumberUtils.isNumber allows illegal trailing characters. Fixes LANG-94.
Fix Improve Javadoc and overflow behavior of Fraction. Fixes LANG-137.
Fix RandomStringUtils infloops with length > 1. Fixes LANG-55.
Fix test.lang fails if compiled with non iso-8859-1 locales. Fixes LANG-47.
Fix SystemUtils does not play nice in an Applet. Fixes LANG-113.
Fix time unit tests fail on Sundays. Fixes LANG-111.
Fix java.lang.ExceptionInInitializerError thrown by JVMRandom constructor. Fixes LANG-90.
Fix StringUtils.chomp does not match Perl. Fixes LANG-78.
Fix patch and test case fixing problem with RandomStringUtils.random(). Fixes LANG-36.
Fix General case: infinite loop: ToStringBuilder.reflectionToString. Fixes LANG-151.
Fix Should ToStringBuilder.reflectionToString handle arrays?. Fixes LANG-35.
Fix EnumUtils nit: The import java.io.Serializable is never used. Fixes LANG-83.
Fix Example in Javadoc for ToStringBuilder wrong for append. Fixes LANG-12.
Fix Added class hierarchy support to HashCodeBuilder.reflectionHashCode(). Fixes LANG-110.
Fix ExceptionUtils new methods. Fixes LANG-71.
Fix Infinite loop in StringUtils.replace(text, repl, with) + FIX. Fixes LANG-15.
Fix StackOverflow due to ToStringBuilder. Fixes LANG-93.
Fix No Javadoc for NestableDelegate. Fixes LANG-39.
Fix Specify initial size for Enum's HashMap. Fixes LANG-49.
Fix Enum does not support inner sub-classes. Fixes LANG-146.
Fix Removed compile warning in ObjectUtils. Fixes LANG-157.
Fix SystemUtils.IS_JAVA_1_5 Javadoc is wrong. Fixes LANG-96.
Fix NumberRange inaccurate for Long, etc. Fixes LANG-16.
Fix Hierarchy support in ToStringBuilder.reflectionToString(). Fixes LANG-4.
Fix StringUtils.countMatches loops forever if substring empty. Fixes LANG-56.
Add Javadoc fixes (remove @links to non-public identifiers). Fixes LANG-209.
Add Add Javadoc examples and tests for StringUtils. Fixes LANG-210.
Add Make NumberUtils null handling consistent. Fixes LANG-170.
Fix Unused field 'startFinal' in DateIterator. Fixes LANG-145.
Add reduce object creation in ToStringBuilder. Fixes LANG-214.
Add Improved tests, Javadoc for CharSetUtils, StringEscapeUtils. Fixes LANG-228.
Add NumberUtils min/max, BooleanUtils.xor, and ArrayUtils toPrimitive and toObject. Fixes LANG-252.
Add Javadoc, tests improvements for CharSet, CharSetUtils. Fixes LANG-208.
Add StringUtil enhancement. Fixes LANG-205.
Add Javadoc nit. Fixes LANG-164.
Add Additional Lang Method Suggestions. Fixes LANG-206.
Add Make NestableDelegate methods public instead of package private. Fixes LANG-178.
Add Missing @since tags. Fixes LANG-174.
Add Refactored reflection feature of ToStringBuilder into new ReflectionToStringBuilder. Fixes LANG-245.
Fix Typo in documentation. Fixes LANG-51.
Fix Patch for Javadoc. Fixes LANG-1.
Add Add join(..., char c) to StringUtils (and some performance fixes). Even contains tests!. Fixes LANG-244.
Add Resurrect the WordWrapUtils from commons-sandbox/utils. Fixes LANG-231.
Fix EnumTest fails on Linux Sun JDK 1.3.0. Fixes LANG-139.
Add What to do with FastDateFormat unused private constructors. Fixes LANG-234.
Add Added class hierarchy support to CompareToBuilder.reflectionCompare(). Fixes LANG-240.
Add Removed compile warning in FastDateFormat. Fixes LANG-190.
Fix typo in the Javadoc example code. Fixes LANG-97.
Add MethodUtils: Removed unused code/unused local vars. Fixes LANG-249.
Add Hierarchy support in EqualsBuilder.reflectionEquals(). Fixes LANG-237.
Fix Javadoc Errata. Fixes LANG-91.
Add ArrayUtils.contains(). Fixes LANG-215.
Add More flexibility for getRootCause in ExceptionUtils. Fixes LANG-221.

Release 1.0.1 – 2002-11-25

Type Changes By
Fix NumberRange.getMaximum returns minimum.
Fix Enum constructor validations.
Fix NestableException/Delegate is not serializable.
Fix split using null and max less than actual token count adds "null".
Add ExceptionUtils cannot handle J2EE-Exception in a default way.

Release 1.0 – 2002-10-04

No changes in this release.