aboutsummaryrefslogtreecommitdiff
path: root/src/site
diff options
context:
space:
mode:
Diffstat (limited to 'src/site')
-rw-r--r--src/site/resources/.htaccess16
-rw-r--r--src/site/resources/checkstyle/checkstyle-suppressions.xml27
-rw-r--r--src/site/resources/checkstyle/checkstyle.xml60
-rwxr-xr-xsrc/site/resources/download_lang.cgi4
-rw-r--r--src/site/resources/images/logo.pngbin0 -> 11862 bytes
-rw-r--r--src/site/resources/lang2-lang3-clirr-report.html265
-rw-r--r--src/site/resources/profile.jacoco0
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-1.0.1.txt63
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-1.0.txt161
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-2.0.txt676
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-2.1.txt150
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-2.2.txt127
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-2.3.txt105
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-2.4.txt139
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-2.5.txt98
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-2.6.txt74
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.0.1.txt57
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.0.txt170
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.1.txt55
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.10.txt121
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.2.1.txt417
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.2.txt405
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.3.1.txt496
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.3.2.txt509
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.3.txt482
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.4.txt642
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.5.txt940
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.6.txt1124
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.7.txt1176
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.8.1.txt1270
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.8.txt1237
-rw-r--r--src/site/resources/release-notes/RELEASE-NOTES-3.9.txt1293
-rw-r--r--src/site/site.xml46
-rw-r--r--src/site/xdoc/article2_4.xml195
-rw-r--r--src/site/xdoc/article2_5.xml135
-rw-r--r--src/site/xdoc/article3_0.xml208
-rw-r--r--src/site/xdoc/building.xml72
-rw-r--r--src/site/xdoc/developerguide.xml150
-rw-r--r--src/site/xdoc/download_lang.xml186
-rw-r--r--src/site/xdoc/index.xml106
-rw-r--r--src/site/xdoc/issue-tracking.xml102
-rw-r--r--src/site/xdoc/mail-lists.xml205
-rw-r--r--src/site/xdoc/proposal.xml97
-rw-r--r--src/site/xdoc/upgradeto2_0.xml688
-rw-r--r--src/site/xdoc/upgradeto2_1.xml163
-rw-r--r--src/site/xdoc/upgradeto2_2.xml110
-rw-r--r--src/site/xdoc/upgradeto2_3.xml118
-rw-r--r--src/site/xdoc/upgradeto2_4.xml153
-rw-r--r--src/site/xdoc/upgradeto2_5.xml105
-rw-r--r--src/site/xdoc/upgradeto2_6.xml87
-rw-r--r--src/site/xdoc/upgradeto3_0.xml172
-rw-r--r--src/site/xdoc/userguide.xml33
52 files changed, 15490 insertions, 0 deletions
diff --git a/src/site/resources/.htaccess b/src/site/resources/.htaccess
new file mode 100644
index 000000000..750861987
--- /dev/null
+++ b/src/site/resources/.htaccess
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+AddCharset utf-8 .txt .html
diff --git a/src/site/resources/checkstyle/checkstyle-suppressions.xml b/src/site/resources/checkstyle/checkstyle-suppressions.xml
new file mode 100644
index 000000000..e62645c4f
--- /dev/null
+++ b/src/site/resources/checkstyle/checkstyle-suppressions.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<!DOCTYPE suppressions PUBLIC "-//Checkstyle//DTD SuppressionFilter Configuration 1.0//EN" "https://checkstyle.org/dtds/suppressions_1_0.dtd">
+<suppressions>
+ <suppress checks="JavadocMethod" files=".*[/\\]test[/\\].*"/>
+ <suppress checks="JavadocPackage" files=".*[/\\]test[/\\].*"/>
+ <!-- exclude generated JMH classes from all checks -->
+ <suppress checks="[a-zA-Z0-9]*" files=".*[/\\]generated-test-sources[/\\].*"/>
+ <suppress checks="RedundantModifier" files="ConstructorUtilsTest" lines="0-99999"/>
+ <!-- Windows-only workaround -->
+ <suppress checks="NewlineAtEndOfFile" files="target[/\\]maven-archiver[/\\]pom.properties"/>
+</suppressions>
diff --git a/src/site/resources/checkstyle/checkstyle.xml b/src/site/resources/checkstyle/checkstyle.xml
new file mode 100644
index 000000000..ea572b9ed
--- /dev/null
+++ b/src/site/resources/checkstyle/checkstyle.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<!DOCTYPE module PUBLIC
+ "-//Checkstyle//DTD Checkstyle Configuration 1.2//EN"
+ "https://checkstyle.org/dtds/configuration_1_2.dtd">
+
+<!-- Apache Commons Lang customization of default Checkstyle behavior -->
+<module name="Checker">
+ <property name="localeLanguage" value="en"/>
+ <module name="JavadocPackage"/>
+ <module name="NewlineAtEndOfFile">
+ <property name="lineSeparator" value="lf" />
+ </module>
+ <module name="FileTabCharacter">
+ <property name="fileExtensions" value="java,xml"/>
+ </module>
+ <module name="RegexpSingleline">
+ <!-- \s matches whitespace character, $ matches end of line. -->
+ <property name="format" value="\s+$"/>
+ <property name="message" value="Line has trailing spaces."/>
+ </module>
+ <module name="SuppressionFilter">
+ <property name="file" value="src/site/resources/checkstyle/checkstyle-suppressions.xml"/>
+ </module>
+ <module name="TreeWalker">
+ <module name="AvoidStarImport"/>
+ <module name="IllegalImport"/>
+ <module name="RedundantImport"/>
+ <module name="UnusedImports"/>
+ <module name="NeedBraces"/>
+ <module name="JavadocMethod">
+ <property name="accessModifiers" value="public" />
+ </module>
+ <module name="ModifierOrder"/>
+ <module name="RedundantModifier"/>
+ <module name="UpperEll" />
+ <module name="LeftCurly"/>
+ <module name="NeedBraces"/>
+ <module name="RightCurly"/>
+ <module name="GenericWhitespace"/>
+ <module name="WhitespaceAfter"/>
+ <module name="NoWhitespaceBefore"/>
+ </module>
+</module>
diff --git a/src/site/resources/download_lang.cgi b/src/site/resources/download_lang.cgi
new file mode 100755
index 000000000..495cde12d
--- /dev/null
+++ b/src/site/resources/download_lang.cgi
@@ -0,0 +1,4 @@
+#!/bin/sh
+# Just call the standard mirrors.cgi script. It will use download.html
+# as the input template.
+exec /www/www.apache.org/dyn/mirrors/mirrors.cgi $* \ No newline at end of file
diff --git a/src/site/resources/images/logo.png b/src/site/resources/images/logo.png
new file mode 100644
index 000000000..847238bc6
--- /dev/null
+++ b/src/site/resources/images/logo.png
Binary files differ
diff --git a/src/site/resources/lang2-lang3-clirr-report.html b/src/site/resources/lang2-lang3-clirr-report.html
new file mode 100644
index 000000000..783077600
--- /dev/null
+++ b/src/site/resources/lang2-lang3-clirr-report.html
@@ -0,0 +1,265 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<!-- Generated by Apache Maven Doxia at Jul 13, 2011 ( $Revision: 1080083 $ ) -->
+<!-- $HeadURL: https://svn.apache.org/repos/asf/commons/proper/commons-skin/trunk/src/main/resources/META-INF/maven/site.vm $ -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Lang - Clirr Results</title>
+ <style type="text/css" media="all">
+ @import url("./css/maven-base.css");
+ @import url("./css/maven-theme.css");
+ @import url("./css/site.css");
+ </style>
+ <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
+ <meta name="Date-Revision-yyyymmdd" content="20110713" />
+ <meta http-equiv="Content-Language" content="en" />
+
+<link rel="stylesheet" type="text/css" href="./css/prettify.css" media="all"/>
+<script src="./js/prettify.js" type="text/javascript"></script>
+<script type="text/javascript">window.onload=function() {
+ prettyPrint();
+ }</script>
+ </head>
+ <body class="composite">
+ <div id="banner">
+ <div id="bannerLeft">
+ <a href="https://commons.apache.org/" title="Apache Commons logo">
+ <img src="./images/commons-logo.png" alt="Apache Commons logo"/>
+ </a>
+ </div><!-- id="bannerLeft" -->
+ <div id="bannerRight">
+ <a href="index.html">
+ <img src="images/logo.png" alt="Commons Lang"/>
+ </a>
+ </div><!-- id="bannerRight" -->
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="breadcrumbs">
+
+
+ <div class="xleft">
+ <span id="publishDate">Last Published: 13 July 2011</span>
+ &nbsp;| <span id="projectVersion">Version: 3.0</span>
+ </div>
+ <div class="xright"> <a href="https://www.apachecon.com/" class="externalLink" title="ApacheCon">ApacheCon</a>
+ |
+ <a href="https://www.apache.org" class="externalLink" title="Apache">Apache</a>
+ |
+ <a href="../" title="Commons">Commons</a>
+
+
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="leftColumn">
+ <div id="navcolumn">
+
+
+ <h5>Lang</h5>
+ <ul>
+ <li class="none">
+ <a href="index.html" title="Overview">Overview</a>
+ </li>
+ <li class="none">
+ <a href="download_lang.cgi" title="Download">Download</a>
+ </li>
+ <li class="none">
+ <a href="userguide.html" title="Users guide">Users guide</a>
+ </li>
+ <li class="none">
+ <a href="changes-report.html" title="Release History">Release History</a>
+ </li>
+ <li class="none">
+ <a href="api-release/index.html" title="Javadoc (3.0 release)">Javadoc (3.0 release)</a>
+ </li>
+ </ul>
+ <h5>Development</h5>
+ <ul>
+ <li class="none">
+ <a href="building.html" title="Building">Building</a>
+ </li>
+ <li class="none">
+ <a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
+ </li>
+ <li class="none">
+ <a href="issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
+ </li>
+ <li class="none">
+ <a href="proposal.html" title="Proposal">Proposal</a>
+ </li>
+ <li class="none">
+ <a href="developerguide.html" title="Developer guide">Developer guide</a>
+ </li>
+ <li class="none">
+ <a href="scm.html" title="Source Repository">Source Repository</a>
+ </li>
+ <li class="none">
+ <a href="apidocs/index.html" title="Javadoc (SVN latest)">Javadoc (SVN latest)</a>
+ </li>
+ </ul>
+ <h5>Project Documentation</h5>
+ <ul>
+ <li class="collapsed">
+ <a href="project-info.html" title="Project Information">Project Information</a>
+ </li>
+ <li class="expanded">
+ <a href="project-reports.html" title="Project Reports">Project Reports</a>
+ <ul>
+ <li class="none">
+ <a href="changes-report.html" title="Changes Report">Changes Report</a>
+ </li>
+ <li class="none">
+ <a href="checkstyle.html" title="Checkstyle">Checkstyle</a>
+ </li>
+ <li class="none">
+ <strong>Clirr</strong>
+ </li>
+ <li class="none">
+ <a href="cobertura/index.html" title="Cobertura Test Coverage">Cobertura Test Coverage</a>
+ </li>
+ <li class="none">
+ <a href="cpd.html" title="CPD Report">CPD Report</a>
+ </li>
+ <li class="none">
+ <a href="findbugs.html" title="FindBugs Report">FindBugs Report</a>
+ </li>
+ <li class="none">
+ <a href="apidocs/index.html" title="Javadocs">Javadocs</a>
+ </li>
+ <li class="none">
+ <a href="javancss.html" title="JavaNCSS Report">JavaNCSS Report</a>
+ </li>
+ <li class="none">
+ <a href="jdepend-report.html" title="JDepend">JDepend</a>
+ </li>
+ <li class="none">
+ <a href="pmd.html" title="PMD Report">PMD Report</a>
+ </li>
+ <li class="none">
+ <a href="rat-report.html" title="RAT Report">RAT Report</a>
+ </li>
+ <li class="none">
+ <a href="xref/index.html" title="Source Xref">Source Xref</a>
+ </li>
+ <li class="none">
+ <a href="surefire-report.html" title="Surefire Report">Surefire Report</a>
+ </li>
+ <li class="none">
+ <a href="taglist.html" title="Tag List">Tag List</a>
+ </li>
+ <li class="none">
+ <a href="testapidocs/index.html" title="Test Javadocs">Test Javadocs</a>
+ </li>
+ <li class="none">
+ <a href="xref-test/index.html" title="Test Source Xref">Test Source Xref</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <h5>Commons</h5>
+ <ul>
+ <li class="none">
+ <a href="../" title="Home">Home</a>
+ </li>
+ <li class="none">
+ <a href="https://www.apache.org/licenses/" class="externalLink" title="License">License</a>
+ </li>
+ <li class="collapsed">
+ <a href="../components.html" title="Components">Components</a>
+ </li>
+ <li class="collapsed">
+ <a href="../sandbox/index.html" title="Sandbox">Sandbox</a>
+ </li>
+ <li class="collapsed">
+ <a href="../dormant/index.html" title="Dormant">Dormant</a>
+ </li>
+ </ul>
+ <h5>General Information</h5>
+ <ul>
+ <li class="none">
+ <a href="../volunteering.html" title="Volunteering">Volunteering</a>
+ </li>
+ <li class="none">
+ <a href="../patches.html" title="Contributing Patches">Contributing Patches</a>
+ </li>
+ <li class="none">
+ <a href="../building.html" title="Building Components">Building Components</a>
+ </li>
+ <li class="none">
+ <a href="../releases/index.html" title="Releasing Components">Releasing Components</a>
+ </li>
+ <li class="none">
+ <a href="https://cwiki.apache.org/confluence/display/commons/FrontPage" class="externalLink" title="Wiki">Wiki</a>
+ </li>
+ </ul>
+ <h5>ASF</h5>
+ <ul>
+ <li class="none">
+ <a href="https://www.apache.org/foundation/how-it-works.html" class="externalLink" title="How the ASF works">How the ASF works</a>
+ </li>
+ <li class="none">
+ <a href="https://www.apache.org/foundation/getinvolved.html" class="externalLink" title="Get Involved">Get Involved</a>
+ </li>
+ <li class="none">
+ <a href="https://www.apache.org/dev/" class="externalLink" title="Developer Resources">Developer Resources</a>
+ </li>
+ <li class="none">
+ <a href="https://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a>
+ </li>
+ <li class="none">
+ <a href="https://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a>
+ </li>
+ </ul>
+ <a href="https://apachecon.com/" title="ApacheCon" class="poweredBy">
+ <img class="poweredBy" alt="ApacheCon" src="https://www.apache.org/events/current-event-125x125.png" />
+ </a>
+ <a href="https://maven.apache.org/" title="Maven" class="poweredBy">
+ <img class="poweredBy" alt="Maven" src="https://maven.apache.org/images/logos/maven-feather.png" />
+ </a>
+
+
+ </div>
+ </div>
+ <div id="bodyColumn">
+ <div id="contentBox">
+ <div class="section"><h2>Clirr Results<a name="Clirr_Results"></a></h2><p>The following document contains the results of <a class="externalLink" href="http://clirr.sourceforge.net/">Clirr</a>.</p><ul><li>Current Version: 3.0</li><li>Comparison Version: (2.6,3.0)</li></ul><div class="section"><h2>Summary<a name="Summary"></a></h2><table border="0" class="bodyTable"><tr class="a"><th>Severity</th><th>Number</th></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" />&#160;Error</td><td>268</td></tr><tr class="a"><td><img alt="Warning" src="images/icon_warning_sml.gif" />&#160;Warning</td><td>0</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" />&#160;Info</td><td>146</td></tr></table></div><div class="section"><h2>Details<a name="Details"></a></h2><table border="0" class="bodyTable"><tr class="a"><th>Severity</th><th>Message</th><th>Class</th><th>Method / Field</th></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.Boolean toBooleanObject(boolean)' has been removed</td><td><a href="./xref/org/apache/commons/lang/BooleanUtils.html">org.apache.commons.lang.BooleanUtils</a></td><td>public java.lang.Boolean toBooleanObject(boolean)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Decreased visibility of class from public to package</td><td><a href="./xref/org/apache/commons/lang/CharRange.html">org.apache.commons.lang.CharRange</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'protected CharSet(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/CharSet.html">org.apache.commons.lang.CharSet</a></td><td>protected CharSet(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Accessibility of method 'public org.apache.commons.lang.CharRange[] getCharRanges()' has been decreased from public to package</td><td><a href="./xref/org/apache/commons/lang/CharSet.html">org.apache.commons.lang.CharSet</a></td><td>public org.apache.commons.lang.CharRange[] getCharRanges()</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public org.apache.commons.lang.CharSet getInstance(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/CharSet.html">org.apache.commons.lang.CharSet</a></td><td>public org.apache.commons.lang.CharSet getInstance(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public int count(java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/CharSetUtils.html">org.apache.commons.lang.CharSetUtils</a></td><td>public int count(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String delete(java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/CharSetUtils.html">org.apache.commons.lang.CharSetUtils</a></td><td>public java.lang.String delete(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public org.apache.commons.lang.CharSet evaluateSet(java.lang.String[])' has been removed</td><td><a href="./xref/org/apache/commons/lang/CharSetUtils.html">org.apache.commons.lang.CharSetUtils</a></td><td>public org.apache.commons.lang.CharSet evaluateSet(java.lang.String[])</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String keep(java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/CharSetUtils.html">org.apache.commons.lang.CharSetUtils</a></td><td>public java.lang.String keep(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String squeeze(java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/CharSetUtils.html">org.apache.commons.lang.CharSetUtils</a></td><td>public java.lang.String squeeze(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String translate(java.lang.String, java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/CharSetUtils.html">org.apache.commons.lang.CharSetUtils</a></td><td>public java.lang.String translate(java.lang.String, java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.IllegalClassException removed</td><td><a href="./xref/org/apache/commons/lang/IllegalClassException.html">org.apache.commons.lang.IllegalClassException</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.IncompleteArgumentException removed</td><td><a href="./xref/org/apache/commons/lang/IncompleteArgumentException.html">org.apache.commons.lang.IncompleteArgumentException</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.NotImplementedException removed</td><td><a href="./xref/org/apache/commons/lang/NotImplementedException.html">org.apache.commons.lang.NotImplementedException</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.NullArgumentException removed</td><td><a href="./xref/org/apache/commons/lang/NullArgumentException.html">org.apache.commons.lang.NullArgumentException</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.NumberRange removed</td><td><a href="./xref/org/apache/commons/lang/NumberRange.html">org.apache.commons.lang.NumberRange</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.NumberUtils removed</td><td><a href="./xref/org/apache/commons/lang/NumberUtils.html">org.apache.commons.lang.NumberUtils</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.StringBuffer appendIdentityToString(java.lang.StringBuffer, java.lang.Object)' has been removed</td><td><a href="./xref/org/apache/commons/lang/ObjectUtils.html">org.apache.commons.lang.ObjectUtils</a></td><td>public java.lang.StringBuffer appendIdentityToString(java.lang.StringBuffer, java.lang.Object)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>In method 'public java.lang.Object max(java.lang.Comparable, java.lang.Comparable)' the number of arguments has changed</td><td><a href="./xref/org/apache/commons/lang/ObjectUtils.html">org.apache.commons.lang.ObjectUtils</a></td><td>public java.lang.Object max(java.lang.Comparable, java.lang.Comparable)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object max(java.lang.Comparable, java.lang.Comparable)' has been changed to java.lang.Comparable</td><td><a href="./xref/org/apache/commons/lang/ObjectUtils.html">org.apache.commons.lang.ObjectUtils</a></td><td>public java.lang.Object max(java.lang.Comparable, java.lang.Comparable)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>In method 'public java.lang.Object min(java.lang.Comparable, java.lang.Comparable)' the number of arguments has changed</td><td><a href="./xref/org/apache/commons/lang/ObjectUtils.html">org.apache.commons.lang.ObjectUtils</a></td><td>public java.lang.Object min(java.lang.Comparable, java.lang.Comparable)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object min(java.lang.Comparable, java.lang.Comparable)' has been changed to java.lang.Comparable</td><td><a href="./xref/org/apache/commons/lang/ObjectUtils.html">org.apache.commons.lang.ObjectUtils</a></td><td>public java.lang.Object min(java.lang.Comparable, java.lang.Comparable)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Removed org.apache.commons.lang.exception.Nestable from the set of implemented interfaces</td><td><a href="./xref/org/apache/commons/lang/SerializationException.html">org.apache.commons.lang.SerializationException</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Removed org.apache.commons.lang.exception.NestableRuntimeException from the list of superclasses</td><td><a href="./xref/org/apache/commons/lang/SerializationException.html">org.apache.commons.lang.SerializationException</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object clone(java.io.Serializable)' has been changed to java.io.Serializable</td><td><a href="./xref/org/apache/commons/lang/SerializationUtils.html">org.apache.commons.lang.SerializationUtils</a></td><td>public java.lang.Object clone(java.io.Serializable)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String escapeCsv(java.lang.String)' is now final</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String escapeCsv(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void escapeCsv(java.io.Writer, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public void escapeCsv(java.io.Writer, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String escapeHtml(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String escapeHtml(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void escapeHtml(java.io.Writer, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public void escapeHtml(java.io.Writer, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String escapeJava(java.lang.String)' is now final</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String escapeJava(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void escapeJava(java.io.Writer, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public void escapeJava(java.io.Writer, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String escapeJavaScript(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String escapeJavaScript(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void escapeJavaScript(java.io.Writer, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public void escapeJavaScript(java.io.Writer, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String escapeSql(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String escapeSql(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String escapeXml(java.lang.String)' is now final</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String escapeXml(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void escapeXml(java.io.Writer, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public void escapeXml(java.io.Writer, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String unescapeCsv(java.lang.String)' is now final</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String unescapeCsv(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void unescapeCsv(java.io.Writer, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public void unescapeCsv(java.io.Writer, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String unescapeHtml(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String unescapeHtml(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void unescapeHtml(java.io.Writer, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public void unescapeHtml(java.io.Writer, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String unescapeJava(java.lang.String)' is now final</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String unescapeJava(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void unescapeJava(java.io.Writer, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public void unescapeJava(java.io.Writer, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String unescapeJavaScript(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String unescapeJavaScript(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void unescapeJavaScript(java.io.Writer, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public void unescapeJavaScript(java.io.Writer, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String unescapeXml(java.lang.String)' is now final</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String unescapeXml(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void unescapeXml(java.io.Writer, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public void unescapeXml(java.io.Writer, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String capitalise(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String capitalise(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String capitaliseAllWords(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String capitaliseAllWords(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String chompLast(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String chompLast(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String chompLast(java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String chompLast(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String chopNewline(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String chopNewline(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String clean(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String clean(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String concatenate(java.lang.Object[])' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String concatenate(java.lang.Object[])</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean contains(java.lang.String, char)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean contains(java.lang.String, char)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean contains(java.lang.String, char)' has changed its type to int</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean contains(java.lang.String, char)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean contains(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean contains(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean contains(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean contains(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean containsAny(java.lang.String, char[])' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean containsAny(java.lang.String, char[])</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean containsAny(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean containsAny(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean containsAny(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean containsAny(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean containsIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean containsIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean containsIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean containsIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean containsNone(java.lang.String, char[])' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean containsNone(java.lang.String, char[])</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean containsNone(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean containsNone(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean containsOnly(java.lang.String, char[])' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean containsOnly(java.lang.String, char[])</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean containsOnly(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean containsOnly(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int countMatches(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int countMatches(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int countMatches(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int countMatches(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public java.lang.String defaultIfBlank(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String defaultIfBlank(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public java.lang.String defaultIfBlank(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String defaultIfBlank(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.String defaultIfBlank(java.lang.String, java.lang.String)' has been changed to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String defaultIfBlank(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public java.lang.String defaultIfEmpty(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String defaultIfEmpty(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public java.lang.String defaultIfEmpty(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String defaultIfEmpty(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.String defaultIfEmpty(java.lang.String, java.lang.String)' has been changed to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String defaultIfEmpty(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String deleteSpaces(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String deleteSpaces(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean endsWith(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean endsWith(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean endsWith(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean endsWith(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean endsWithAny(java.lang.String, java.lang.String[])' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean endsWithAny(java.lang.String, java.lang.String[])</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean endsWithAny(java.lang.String, java.lang.String[])' has changed its type to java.lang.CharSequence[]</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean endsWithAny(java.lang.String, java.lang.String[])</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean endsWithIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean endsWithIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean endsWithIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean endsWithIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean equals(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean equals(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean equals(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean equals(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean equalsIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean equalsIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean equalsIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean equalsIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String escape(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String escape(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String getChomp(java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String getChomp(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int getLevenshteinDistance(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int getLevenshteinDistance(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int getLevenshteinDistance(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int getLevenshteinDistance(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String getNestedString(java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String getNestedString(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String getNestedString(java.lang.String, java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String getNestedString(java.lang.String, java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String getPrechomp(java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String getPrechomp(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOf(java.lang.String, char)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOf(java.lang.String, char)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int indexOf(java.lang.String, char)' has changed its type to int</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOf(java.lang.String, char)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOf(java.lang.String, char, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOf(java.lang.String, char, int)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int indexOf(java.lang.String, char, int)' has changed its type to int</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOf(java.lang.String, char, int)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOf(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOf(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int indexOf(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOf(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOf(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOf(java.lang.String, java.lang.String, int)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int indexOf(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOf(java.lang.String, java.lang.String, int)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOfAny(java.lang.String, char[])' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfAny(java.lang.String, char[])</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOfAny(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfAny(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOfAny(java.lang.String, java.lang.String[])' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfAny(java.lang.String, java.lang.String[])</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int indexOfAny(java.lang.String, java.lang.String[])' has changed its type to java.lang.CharSequence[]</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfAny(java.lang.String, java.lang.String[])</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOfAnyBut(java.lang.String, char[])' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfAnyBut(java.lang.String, char[])</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOfAnyBut(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfAnyBut(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int indexOfAnyBut(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfAnyBut(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOfDifference(java.lang.String[])' has changed its type to java.lang.CharSequence[]</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfDifference(java.lang.String[])</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOfDifference(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfDifference(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int indexOfDifference(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfDifference(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOfIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int indexOfIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int indexOfIgnoreCase(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfIgnoreCase(java.lang.String, java.lang.String, int)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int indexOfIgnoreCase(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int indexOfIgnoreCase(java.lang.String, java.lang.String, int)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isAllLowerCase(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isAllLowerCase(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isAllUpperCase(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isAllUpperCase(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isAlpha(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isAlpha(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isAlphaSpace(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isAlphaSpace(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isAlphanumeric(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isAlphanumeric(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isAlphanumericSpace(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isAlphanumericSpace(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isAsciiPrintable(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isAsciiPrintable(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isBlank(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isBlank(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isEmpty(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isEmpty(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isNotBlank(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isNotBlank(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isNotEmpty(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isNotEmpty(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isNumeric(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isNumeric(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isNumericSpace(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isNumericSpace(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isWhitespace(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean isWhitespace(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public java.lang.String join(java.util.Collection, char)' has changed its type to java.lang.Iterable</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String join(java.util.Collection, char)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public java.lang.String join(java.util.Collection, java.lang.String)' has changed its type to java.lang.Iterable</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String join(java.util.Collection, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int lastIndexOf(java.lang.String, char)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOf(java.lang.String, char)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int lastIndexOf(java.lang.String, char)' has changed its type to int</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOf(java.lang.String, char)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int lastIndexOf(java.lang.String, char, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOf(java.lang.String, char, int)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int lastIndexOf(java.lang.String, char, int)' has changed its type to int</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOf(java.lang.String, char, int)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int lastIndexOf(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOf(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int lastIndexOf(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOf(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int lastIndexOf(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOf(java.lang.String, java.lang.String, int)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int lastIndexOf(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOf(java.lang.String, java.lang.String, int)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int lastIndexOfAny(java.lang.String, java.lang.String[])' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOfAny(java.lang.String, java.lang.String[])</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int lastIndexOfAny(java.lang.String, java.lang.String[])' has changed its type to java.lang.CharSequence[]</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOfAny(java.lang.String, java.lang.String[])</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int lastIndexOfIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOfIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int lastIndexOfIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOfIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int lastIndexOfIgnoreCase(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOfIgnoreCase(java.lang.String, java.lang.String, int)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int lastIndexOfIgnoreCase(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastIndexOfIgnoreCase(java.lang.String, java.lang.String, int)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int lastOrdinalIndexOf(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastOrdinalIndexOf(java.lang.String, java.lang.String, int)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int lastOrdinalIndexOf(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int lastOrdinalIndexOf(java.lang.String, java.lang.String, int)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int length(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int length(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public int ordinalIndexOf(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int ordinalIndexOf(java.lang.String, java.lang.String, int)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public int ordinalIndexOf(java.lang.String, java.lang.String, int)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int ordinalIndexOf(java.lang.String, java.lang.String, int)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String overlayString(java.lang.String, java.lang.String, int, int)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String overlayString(java.lang.String, java.lang.String, int, int)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String prechomp(java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String prechomp(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String reverseDelimitedString(java.lang.String, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String reverseDelimitedString(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean startsWith(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean startsWith(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean startsWith(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean startsWith(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean startsWithAny(java.lang.String, java.lang.String[])' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean startsWithAny(java.lang.String, java.lang.String[])</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean startsWithAny(java.lang.String, java.lang.String[])' has changed its type to java.lang.CharSequence[]</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean startsWithAny(java.lang.String, java.lang.String[])</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean startsWithIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean startsWithIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 2 of 'public boolean startsWithIgnoreCase(java.lang.String, java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean startsWithIgnoreCase(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String uncapitalise(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String uncapitalise(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Removed field JAVA_VERSION_FLOAT</td><td><a href="./xref/org/apache/commons/lang/SystemUtils.html">org.apache.commons.lang.SystemUtils</a></td><td>JAVA_VERSION_FLOAT</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Removed field JAVA_VERSION_INT</td><td><a href="./xref/org/apache/commons/lang/SystemUtils.html">org.apache.commons.lang.SystemUtils</a></td><td>JAVA_VERSION_INT</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Removed field JAVA_VERSION_TRIMMED</td><td><a href="./xref/org/apache/commons/lang/SystemUtils.html">org.apache.commons.lang.SystemUtils</a></td><td>JAVA_VERSION_TRIMMED</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public float getJavaVersion()' has been removed</td><td><a href="./xref/org/apache/commons/lang/SystemUtils.html">org.apache.commons.lang.SystemUtils</a></td><td>public float getJavaVersion()</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public boolean isJavaVersionAtLeast(float)' has changed its type to org.apache.commons.lang.JavaVersion</td><td><a href="./xref/org/apache/commons/lang/SystemUtils.html">org.apache.commons.lang.SystemUtils</a></td><td>public boolean isJavaVersionAtLeast(float)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public boolean isJavaVersionAtLeast(int)' has been removed</td><td><a href="./xref/org/apache/commons/lang/SystemUtils.html">org.apache.commons.lang.SystemUtils</a></td><td>public boolean isJavaVersionAtLeast(int)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.UnhandledException removed</td><td><a href="./xref/org/apache/commons/lang/UnhandledException.html">org.apache.commons.lang.UnhandledException</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void allElementsOfType(java.util.Collection, java.lang.Class, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void allElementsOfType(java.util.Collection, java.lang.Class, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void allElementsOfType(java.util.Collection, java.lang.Class)' has been removed</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void allElementsOfType(java.util.Collection, java.lang.Class)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 3 of 'public void isTrue(boolean, java.lang.String, java.lang.Object)' has changed its type to java.lang.Object[]</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void isTrue(boolean, java.lang.String, java.lang.Object)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void isTrue(boolean, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void isTrue(boolean, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void noNullElements(java.lang.Object[])' has been changed to java.lang.Object[]</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void noNullElements(java.lang.Object[])</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public void noNullElements(java.util.Collection)' has changed its type to java.lang.Iterable</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void noNullElements(java.util.Collection)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void noNullElements(java.util.Collection)' has been changed to java.lang.Iterable</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void noNullElements(java.util.Collection)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>In method 'public void noNullElements(java.lang.Object[], java.lang.String)' the number of arguments has changed</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void noNullElements(java.lang.Object[], java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void noNullElements(java.lang.Object[], java.lang.String)' has been changed to java.lang.Object[]</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void noNullElements(java.lang.Object[], java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>In method 'public void noNullElements(java.util.Collection, java.lang.String)' the number of arguments has changed</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void noNullElements(java.util.Collection, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void noNullElements(java.util.Collection, java.lang.String)' has been changed to java.lang.Iterable</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void noNullElements(java.util.Collection, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void notEmpty(java.lang.Object[])' has been changed to java.lang.Object[]</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.lang.Object[])</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void notEmpty(java.util.Collection)' has been changed to java.util.Collection</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.util.Collection)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void notEmpty(java.util.Map)' has been changed to java.util.Map</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.util.Map)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public void notEmpty(java.lang.String)' has changed its type to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void notEmpty(java.lang.String)' has been changed to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>In method 'public void notEmpty(java.lang.Object[], java.lang.String)' the number of arguments has changed</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.lang.Object[], java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void notEmpty(java.lang.Object[], java.lang.String)' has been changed to java.lang.Object[]</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.lang.Object[], java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>In method 'public void notEmpty(java.util.Collection, java.lang.String)' the number of arguments has changed</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.util.Collection, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void notEmpty(java.util.Collection, java.lang.String)' has been changed to java.util.Collection</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.util.Collection, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>In method 'public void notEmpty(java.util.Map, java.lang.String)' the number of arguments has changed</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.util.Map, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void notEmpty(java.util.Map, java.lang.String)' has been changed to java.util.Map</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.util.Map, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>In method 'public void notEmpty(java.lang.String, java.lang.String)' the number of arguments has changed</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.lang.String, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void notEmpty(java.lang.String, java.lang.String)' has been changed to java.lang.CharSequence</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notEmpty(java.lang.String, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void notNull(java.lang.Object)' has been changed to java.lang.Object</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notNull(java.lang.Object)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>In method 'public void notNull(java.lang.Object, java.lang.String)' the number of arguments has changed</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notNull(java.lang.Object, java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public void notNull(java.lang.Object, java.lang.String)' has been changed to java.lang.Object</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void notNull(java.lang.Object, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.WordUtils removed</td><td><a href="./xref/org/apache/commons/lang/WordUtils.html">org.apache.commons.lang.WordUtils</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public int reflectionCompare(java.lang.Object, java.lang.Object, boolean, java.lang.Class)' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/CompareToBuilder.html">org.apache.commons.lang.builder.CompareToBuilder</a></td><td>public int reflectionCompare(java.lang.Object, java.lang.Object, boolean, java.lang.Class)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public boolean reflectionEquals(java.lang.Object, java.lang.Object)' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/EqualsBuilder.html">org.apache.commons.lang.builder.EqualsBuilder</a></td><td>public boolean reflectionEquals(java.lang.Object, java.lang.Object)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public boolean reflectionEquals(java.lang.Object, java.lang.Object, boolean, java.lang.Class)' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/EqualsBuilder.html">org.apache.commons.lang.builder.EqualsBuilder</a></td><td>public boolean reflectionEquals(java.lang.Object, java.lang.Object, boolean, java.lang.Class)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public int reflectionHashCode(int, int, java.lang.Object, boolean, java.lang.Class)' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/HashCodeBuilder.html">org.apache.commons.lang.builder.HashCodeBuilder</a></td><td>public int reflectionHashCode(int, int, java.lang.Object, boolean, java.lang.Class)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public int reflectionHashCode(java.lang.Object)' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/HashCodeBuilder.html">org.apache.commons.lang.builder.HashCodeBuilder</a></td><td>public int reflectionHashCode(java.lang.Object)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public ReflectionToStringBuilder(java.lang.Object, org.apache.commons.lang.builder.ToStringStyle, java.lang.StringBuffer, java.lang.Class, boolean)' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/ReflectionToStringBuilder.html">org.apache.commons.lang.builder.ReflectionToStringBuilder</a></td><td>public ReflectionToStringBuilder(java.lang.Object, org.apache.commons.lang.builder.ToStringStyle, java.lang.StringBuffer, java.lang.Class, boolean)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public org.apache.commons.lang.builder.ToStringBuilder reflectionAppendArray(java.lang.Object)' has been changed to org.apache.commons.lang.builder.ReflectionToStringBuilder</td><td><a href="./xref/org/apache/commons/lang/builder/ReflectionToStringBuilder.html">org.apache.commons.lang.builder.ReflectionToStringBuilder</a></td><td>public org.apache.commons.lang.builder.ToStringBuilder reflectionAppendArray(java.lang.Object)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String toString(java.lang.Object, org.apache.commons.lang.builder.ToStringStyle, boolean, java.lang.Class)' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/ReflectionToStringBuilder.html">org.apache.commons.lang.builder.ReflectionToStringBuilder</a></td><td>public java.lang.String toString(java.lang.Object, org.apache.commons.lang.builder.ToStringStyle, boolean, java.lang.Class)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String toStringExclude(java.lang.Object, java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/ReflectionToStringBuilder.html">org.apache.commons.lang.builder.ReflectionToStringBuilder</a></td><td>public java.lang.String toStringExclude(java.lang.Object, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public boolean isShortClassName()' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/StandardToStringStyle.html">org.apache.commons.lang.builder.StandardToStringStyle</a></td><td>public boolean isShortClassName()</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void setShortClassName(boolean)' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/StandardToStringStyle.html">org.apache.commons.lang.builder.StandardToStringStyle</a></td><td>public void setShortClassName(boolean)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'protected boolean isShortClassName()' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/ToStringStyle.html">org.apache.commons.lang.builder.ToStringStyle</a></td><td>protected boolean isShortClassName()</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'protected void setShortClassName(boolean)' has been removed</td><td><a href="./xref/org/apache/commons/lang/builder/ToStringStyle.html">org.apache.commons.lang.builder.ToStringStyle</a></td><td>protected void setShortClassName(boolean)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.enum.Enum removed</td><td><a href="./xref/org/apache/commons/lang/enum/Enum.html">org.apache.commons.lang.enum.Enum</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.enum.EnumUtils removed</td><td><a href="./xref/org/apache/commons/lang/enum/EnumUtils.html">org.apache.commons.lang.enum.EnumUtils</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.enum.ValuedEnum removed</td><td><a href="./xref/org/apache/commons/lang/enum/ValuedEnum.html">org.apache.commons.lang.enum.ValuedEnum</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.enums.Enum removed</td><td><a href="./xref/org/apache/commons/lang/enums/Enum.html">org.apache.commons.lang.enums.Enum</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.enums.EnumUtils removed</td><td><a href="./xref/org/apache/commons/lang/enums/EnumUtils.html">org.apache.commons.lang.enums.EnumUtils</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.enums.ValuedEnum removed</td><td><a href="./xref/org/apache/commons/lang/enums/ValuedEnum.html">org.apache.commons.lang.enums.ValuedEnum</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Removed org.apache.commons.lang.exception.Nestable from the set of implemented interfaces</td><td><a href="./xref/org/apache/commons/lang/exception/CloneFailedException.html">org.apache.commons.lang.exception.CloneFailedException</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Removed org.apache.commons.lang.exception.NestableRuntimeException from the list of superclasses</td><td><a href="./xref/org/apache/commons/lang/exception/CloneFailedException.html">org.apache.commons.lang.exception.CloneFailedException</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void addCauseMethodName(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/exception/ExceptionUtils.html">org.apache.commons.lang.exception.ExceptionUtils</a></td><td>public void addCauseMethodName(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.String getFullStackTrace(java.lang.Throwable)' has been removed</td><td><a href="./xref/org/apache/commons/lang/exception/ExceptionUtils.html">org.apache.commons.lang.exception.ExceptionUtils</a></td><td>public java.lang.String getFullStackTrace(java.lang.Throwable)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public boolean isCauseMethodName(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/exception/ExceptionUtils.html">org.apache.commons.lang.exception.ExceptionUtils</a></td><td>public boolean isCauseMethodName(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public boolean isNestedThrowable(java.lang.Throwable)' has been removed</td><td><a href="./xref/org/apache/commons/lang/exception/ExceptionUtils.html">org.apache.commons.lang.exception.ExceptionUtils</a></td><td>public boolean isNestedThrowable(java.lang.Throwable)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public boolean isThrowableNested()' has been removed</td><td><a href="./xref/org/apache/commons/lang/exception/ExceptionUtils.html">org.apache.commons.lang.exception.ExceptionUtils</a></td><td>public boolean isThrowableNested()</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public void removeCauseMethodName(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/exception/ExceptionUtils.html">org.apache.commons.lang.exception.ExceptionUtils</a></td><td>public void removeCauseMethodName(java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public boolean setCause(java.lang.Throwable, java.lang.Throwable)' has been removed</td><td><a href="./xref/org/apache/commons/lang/exception/ExceptionUtils.html">org.apache.commons.lang.exception.ExceptionUtils</a></td><td>public boolean setCause(java.lang.Throwable, java.lang.Throwable)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.exception.Nestable removed</td><td><a href="./xref/org/apache/commons/lang/exception/Nestable.html">org.apache.commons.lang.exception.Nestable</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.exception.NestableDelegate removed</td><td><a href="./xref/org/apache/commons/lang/exception/NestableDelegate.html">org.apache.commons.lang.exception.NestableDelegate</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.exception.NestableError removed</td><td><a href="./xref/org/apache/commons/lang/exception/NestableError.html">org.apache.commons.lang.exception.NestableError</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.exception.NestableException removed</td><td><a href="./xref/org/apache/commons/lang/exception/NestableException.html">org.apache.commons.lang.exception.NestableException</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.exception.NestableRuntimeException removed</td><td><a href="./xref/org/apache/commons/lang/exception/NestableRuntimeException.html">org.apache.commons.lang.exception.NestableRuntimeException</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.math.DoubleRange removed</td><td><a href="./xref/org/apache/commons/lang/math/DoubleRange.html">org.apache.commons.lang.math.DoubleRange</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.math.FloatRange removed</td><td><a href="./xref/org/apache/commons/lang/math/FloatRange.html">org.apache.commons.lang.math.FloatRange</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.math.IntRange removed</td><td><a href="./xref/org/apache/commons/lang/math/IntRange.html">org.apache.commons.lang.math.IntRange</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.math.JVMRandom removed</td><td><a href="./xref/org/apache/commons/lang/math/JVMRandom.html">org.apache.commons.lang.math.JVMRandom</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.math.LongRange removed</td><td><a href="./xref/org/apache/commons/lang/math/LongRange.html">org.apache.commons.lang.math.LongRange</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.math.NumberRange removed</td><td><a href="./xref/org/apache/commons/lang/math/NumberRange.html">org.apache.commons.lang.math.NumberRange</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public int compare(double, double)' has been removed</td><td><a href="./xref/org/apache/commons/lang/math/NumberUtils.html">org.apache.commons.lang.math.NumberUtils</a></td><td>public int compare(double, double)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public int compare(float, float)' has been removed</td><td><a href="./xref/org/apache/commons/lang/math/NumberUtils.html">org.apache.commons.lang.math.NumberUtils</a></td><td>public int compare(float, float)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public int stringToInt(java.lang.String)' has been removed</td><td><a href="./xref/org/apache/commons/lang/math/NumberUtils.html">org.apache.commons.lang.math.NumberUtils</a></td><td>public int stringToInt(java.lang.String)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public int stringToInt(java.lang.String, int)' has been removed</td><td><a href="./xref/org/apache/commons/lang/math/NumberUtils.html">org.apache.commons.lang.math.NumberUtils</a></td><td>public int stringToInt(java.lang.String, int)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.math.RandomUtils removed</td><td><a href="./xref/org/apache/commons/lang/math/RandomUtils.html">org.apache.commons.lang.math.RandomUtils</a></td><td></td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Class org.apache.commons.lang.math.Range removed</td><td><a href="./xref/org/apache/commons/lang/math/Range.html">org.apache.commons.lang.math.Range</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object getValue()' has been changed to java.lang.Boolean</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableBoolean.html">org.apache.commons.lang.mutable.MutableBoolean</a></td><td>public java.lang.Object getValue()</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object getValue()' has been changed to java.lang.Byte</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableByte.html">org.apache.commons.lang.mutable.MutableByte</a></td><td>public java.lang.Object getValue()</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object getValue()' has been changed to java.lang.Double</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableDouble.html">org.apache.commons.lang.mutable.MutableDouble</a></td><td>public java.lang.Object getValue()</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object getValue()' has been changed to java.lang.Float</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableFloat.html">org.apache.commons.lang.mutable.MutableFloat</a></td><td>public java.lang.Object getValue()</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object getValue()' has been changed to java.lang.Integer</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableInt.html">org.apache.commons.lang.mutable.MutableInt</a></td><td>public java.lang.Object getValue()</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object getValue()' has been changed to java.lang.Long</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableLong.html">org.apache.commons.lang.mutable.MutableLong</a></td><td>public java.lang.Object getValue()</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object getValue()' has been changed to java.lang.Short</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableShort.html">org.apache.commons.lang.mutable.MutableShort</a></td><td>public java.lang.Object getValue()</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.reflect.Constructor getAccessibleConstructor(java.lang.Class, java.lang.Class)' has been removed</td><td><a href="./xref/org/apache/commons/lang/reflect/ConstructorUtils.html">org.apache.commons.lang.reflect.ConstructorUtils</a></td><td>public java.lang.reflect.Constructor getAccessibleConstructor(java.lang.Class, java.lang.Class)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.Object invokeConstructor(java.lang.Class, java.lang.Object)' has been removed</td><td><a href="./xref/org/apache/commons/lang/reflect/ConstructorUtils.html">org.apache.commons.lang.reflect.ConstructorUtils</a></td><td>public java.lang.Object invokeConstructor(java.lang.Class, java.lang.Object)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.Object invokeExactConstructor(java.lang.Class, java.lang.Object)' has been removed</td><td><a href="./xref/org/apache/commons/lang/reflect/ConstructorUtils.html">org.apache.commons.lang.reflect.ConstructorUtils</a></td><td>public java.lang.Object invokeExactConstructor(java.lang.Class, java.lang.Object)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.reflect.Method getAccessibleMethod(java.lang.Class, java.lang.String, java.lang.Class)' has been removed</td><td><a href="./xref/org/apache/commons/lang/reflect/MethodUtils.html">org.apache.commons.lang.reflect.MethodUtils</a></td><td>public java.lang.reflect.Method getAccessibleMethod(java.lang.Class, java.lang.String, java.lang.Class)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.Object invokeExactMethod(java.lang.Object, java.lang.String, java.lang.Object)' has been removed</td><td><a href="./xref/org/apache/commons/lang/reflect/MethodUtils.html">org.apache.commons.lang.reflect.MethodUtils</a></td><td>public java.lang.Object invokeExactMethod(java.lang.Object, java.lang.String, java.lang.Object)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.Object invokeExactStaticMethod(java.lang.Class, java.lang.String, java.lang.Object)' has been removed</td><td><a href="./xref/org/apache/commons/lang/reflect/MethodUtils.html">org.apache.commons.lang.reflect.MethodUtils</a></td><td>public java.lang.Object invokeExactStaticMethod(java.lang.Class, java.lang.String, java.lang.Object)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.Object invokeMethod(java.lang.Object, java.lang.String, java.lang.Object)' has been removed</td><td><a href="./xref/org/apache/commons/lang/reflect/MethodUtils.html">org.apache.commons.lang.reflect.MethodUtils</a></td><td>public java.lang.Object invokeMethod(java.lang.Object, java.lang.String, java.lang.Object)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.Object invokeStaticMethod(java.lang.Class, java.lang.String, java.lang.Object)' has been removed</td><td><a href="./xref/org/apache/commons/lang/reflect/MethodUtils.html">org.apache.commons.lang.reflect.MethodUtils</a></td><td>public java.lang.Object invokeStaticMethod(java.lang.Class, java.lang.String, java.lang.Object)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Removed java.lang.Cloneable from the set of implemented interfaces</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td></td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public org.apache.commons.lang.text.StrBuilder appendAll(java.util.Collection)' has changed its type to java.lang.Iterable</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td>public org.apache.commons.lang.text.StrBuilder appendAll(java.util.Collection)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Parameter 1 of 'public org.apache.commons.lang.text.StrBuilder appendWithSeparators(java.util.Collection, java.lang.String)' has changed its type to java.lang.Iterable</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td>public org.apache.commons.lang.text.StrBuilder appendWithSeparators(java.util.Collection, java.lang.String)</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public java.lang.Object clone()' has been removed</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td>public java.lang.Object clone()</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object next()' has been changed to java.lang.String</td><td><a href="./xref/org/apache/commons/lang/text/StrTokenizer.html">org.apache.commons.lang.text.StrTokenizer</a></td><td>public java.lang.Object next()</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Return type of method 'public java.lang.Object previous()' has been changed to java.lang.String</td><td><a href="./xref/org/apache/commons/lang/text/StrTokenizer.html">org.apache.commons.lang.text.StrTokenizer</a></td><td>public java.lang.Object previous()</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Field MILLIS_IN_DAY has been removed, but it was previously a constant</td><td><a href="./xref/org/apache/commons/lang/time/DateUtils.html">org.apache.commons.lang.time.DateUtils</a></td><td>MILLIS_IN_DAY</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Field MILLIS_IN_HOUR has been removed, but it was previously a constant</td><td><a href="./xref/org/apache/commons/lang/time/DateUtils.html">org.apache.commons.lang.time.DateUtils</a></td><td>MILLIS_IN_HOUR</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Field MILLIS_IN_MINUTE has been removed, but it was previously a constant</td><td><a href="./xref/org/apache/commons/lang/time/DateUtils.html">org.apache.commons.lang.time.DateUtils</a></td><td>MILLIS_IN_MINUTE</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Field MILLIS_IN_SECOND has been removed, but it was previously a constant</td><td><a href="./xref/org/apache/commons/lang/time/DateUtils.html">org.apache.commons.lang.time.DateUtils</a></td><td>MILLIS_IN_SECOND</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Removed field UTC_TIME_ZONE</td><td><a href="./xref/org/apache/commons/lang/time/DateUtils.html">org.apache.commons.lang.time.DateUtils</a></td><td>UTC_TIME_ZONE</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Accessibility of method 'public java.util.Date add(java.util.Date, int, int)' has been decreased from public to private</td><td><a href="./xref/org/apache/commons/lang/time/DateUtils.html">org.apache.commons.lang.time.DateUtils</a></td><td>public java.util.Date add(java.util.Date, int, int)</td></tr><tr class="b"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Method 'public boolean getTimeZoneOverridesCalendar()' has been removed</td><td><a href="./xref/org/apache/commons/lang/time/FastDateFormat.html">org.apache.commons.lang.time.FastDateFormat</a></td><td>public boolean getTimeZoneOverridesCalendar()</td></tr><tr class="a"><td><img alt="Error" src="images/icon_error_sml.gif" /></td><td>Accessibility of method 'protected void init()' has been decreased from protected to private</td><td><a href="./xref/org/apache/commons/lang/time/FastDateFormat.html">org.apache.commons.lang.time.FastDateFormat</a></td><td>protected void init()</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.AnnotationUtils added</td><td><a href="./xref/org/apache/commons/lang/AnnotationUtils.html">org.apache.commons.lang.AnnotationUtils</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object[] toArray(java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/ArrayUtils.html">org.apache.commons.lang.ArrayUtils</a></td><td>public java.lang.Object[] toArray(java.lang.Object[])</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.CharSequenceUtils added</td><td><a href="./xref/org/apache/commons/lang/CharSequenceUtils.html">org.apache.commons.lang.CharSequenceUtils</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String getSimpleName(java.lang.Class)' has been added</td><td><a href="./xref/org/apache/commons/lang/ClassUtils.html">org.apache.commons.lang.ClassUtils</a></td><td>public java.lang.String getSimpleName(java.lang.Class)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String getSimpleName(java.lang.Object, java.lang.String)' has been added</td><td><a href="./xref/org/apache/commons/lang/ClassUtils.html">org.apache.commons.lang.ClassUtils</a></td><td>public java.lang.String getSimpleName(java.lang.Object, java.lang.String)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.EnumUtils added</td><td><a href="./xref/org/apache/commons/lang/EnumUtils.html">org.apache.commons.lang.EnumUtils</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.JavaVersion added</td><td><a href="./xref/org/apache/commons/lang/JavaVersion.html">org.apache.commons.lang.JavaVersion</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object firstNonNull(java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/ObjectUtils.html">org.apache.commons.lang.ObjectUtils</a></td><td>public java.lang.Object firstNonNull(java.lang.Object[])</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public int hashCodeMulti(java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/ObjectUtils.html">org.apache.commons.lang.ObjectUtils</a></td><td>public int hashCodeMulti(java.lang.Object[])</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.Range added</td><td><a href="./xref/org/apache/commons/lang/Range.html">org.apache.commons.lang.Range</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field ESCAPE_CSV</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>ESCAPE_CSV</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field ESCAPE_ECMASCRIPT</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>ESCAPE_ECMASCRIPT</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field ESCAPE_HTML3</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>ESCAPE_HTML3</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field ESCAPE_HTML4</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>ESCAPE_HTML4</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field ESCAPE_JAVA</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>ESCAPE_JAVA</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field ESCAPE_XML</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>ESCAPE_XML</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field UNESCAPE_CSV</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>UNESCAPE_CSV</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field UNESCAPE_ECMASCRIPT</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>UNESCAPE_ECMASCRIPT</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field UNESCAPE_HTML3</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>UNESCAPE_HTML3</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field UNESCAPE_HTML4</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>UNESCAPE_HTML4</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field UNESCAPE_JAVA</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>UNESCAPE_JAVA</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added public field UNESCAPE_XML</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>UNESCAPE_XML</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String escapeEcmaScript(java.lang.String)' has been added</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String escapeEcmaScript(java.lang.String)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String escapeHtml3(java.lang.String)' has been added</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String escapeHtml3(java.lang.String)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String escapeHtml4(java.lang.String)' has been added</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String escapeHtml4(java.lang.String)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String unescapeEcmaScript(java.lang.String)' has been added</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String unescapeEcmaScript(java.lang.String)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String unescapeHtml3(java.lang.String)' has been added</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String unescapeHtml3(java.lang.String)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String unescapeHtml4(java.lang.String)' has been added</td><td><a href="./xref/org/apache/commons/lang/StringEscapeUtils.html">org.apache.commons.lang.StringEscapeUtils</a></td><td>public java.lang.String unescapeHtml4(java.lang.String)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public boolean containsWhitespace(java.lang.CharSequence)' has been added</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public boolean containsWhitespace(java.lang.CharSequence)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public int getLevenshteinDistance(java.lang.CharSequence, java.lang.CharSequence, int)' has been added</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public int getLevenshteinDistance(java.lang.CharSequence, java.lang.CharSequence, int)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String repeat(char, int)' has been added</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String repeat(char, int)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String stripAccents(java.lang.String)' has been added</td><td><a href="./xref/org/apache/commons/lang/StringUtils.html">org.apache.commons.lang.StringUtils</a></td><td>public java.lang.String stripAccents(java.lang.String)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void exclusiveBetween(java.lang.Object, java.lang.Object, java.lang.Comparable)' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void exclusiveBetween(java.lang.Object, java.lang.Object, java.lang.Comparable)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void exclusiveBetween(java.lang.Object, java.lang.Object, java.lang.Comparable, java.lang.String, java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void exclusiveBetween(java.lang.Object, java.lang.Object, java.lang.Comparable, java.lang.String, java.lang.Object[])</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void inclusiveBetween(java.lang.Object, java.lang.Object, java.lang.Comparable)' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void inclusiveBetween(java.lang.Object, java.lang.Object, java.lang.Comparable)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void inclusiveBetween(java.lang.Object, java.lang.Object, java.lang.Comparable, java.lang.String, java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void inclusiveBetween(java.lang.Object, java.lang.Object, java.lang.Comparable, java.lang.String, java.lang.Object[])</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void isAssignableFrom(java.lang.Class, java.lang.Class)' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void isAssignableFrom(java.lang.Class, java.lang.Class)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void isAssignableFrom(java.lang.Class, java.lang.Class, java.lang.String, java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void isAssignableFrom(java.lang.Class, java.lang.Class, java.lang.String, java.lang.Object[])</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void isInstanceOf(java.lang.Class, java.lang.Object)' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void isInstanceOf(java.lang.Class, java.lang.Object)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void isInstanceOf(java.lang.Class, java.lang.Object, java.lang.String, java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void isInstanceOf(java.lang.Class, java.lang.Object, java.lang.String, java.lang.Object[])</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void matchesPattern(java.lang.CharSequence, java.lang.String)' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void matchesPattern(java.lang.CharSequence, java.lang.String)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void matchesPattern(java.lang.CharSequence, java.lang.String, java.lang.String, java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void matchesPattern(java.lang.CharSequence, java.lang.String, java.lang.String, java.lang.Object[])</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.CharSequence notBlank(java.lang.CharSequence, java.lang.String, java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public java.lang.CharSequence notBlank(java.lang.CharSequence, java.lang.String, java.lang.Object[])</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.CharSequence notBlank(java.lang.CharSequence)' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public java.lang.CharSequence notBlank(java.lang.CharSequence)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object[] validIndex(java.lang.Object[], int, java.lang.String, java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public java.lang.Object[] validIndex(java.lang.Object[], int, java.lang.String, java.lang.Object[])</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object[] validIndex(java.lang.Object[], int)' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public java.lang.Object[] validIndex(java.lang.Object[], int)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.util.Collection validIndex(java.util.Collection, int, java.lang.String, java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public java.util.Collection validIndex(java.util.Collection, int, java.lang.String, java.lang.Object[])</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.util.Collection validIndex(java.util.Collection, int)' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public java.util.Collection validIndex(java.util.Collection, int)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.CharSequence validIndex(java.lang.CharSequence, int, java.lang.String, java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public java.lang.CharSequence validIndex(java.lang.CharSequence, int, java.lang.String, java.lang.Object[])</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.CharSequence validIndex(java.lang.CharSequence, int)' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public java.lang.CharSequence validIndex(java.lang.CharSequence, int)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void validState(boolean)' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void validState(boolean)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void validState(boolean, java.lang.String, java.lang.Object[])' has been added</td><td><a href="./xref/org/apache/commons/lang/Validate.html">org.apache.commons.lang.Validate</a></td><td>public void validState(boolean, java.lang.String, java.lang.Object[])</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.builder.Builder added</td><td><a href="./xref/org/apache/commons/lang/builder/Builder.html">org.apache.commons.lang.builder.Builder</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added org.apache.commons.lang.builder.Builder to the set of implemented interfaces</td><td><a href="./xref/org/apache/commons/lang/builder/CompareToBuilder.html">org.apache.commons.lang.builder.CompareToBuilder</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Integer build()' has been added</td><td><a href="./xref/org/apache/commons/lang/builder/CompareToBuilder.html">org.apache.commons.lang.builder.CompareToBuilder</a></td><td>public java.lang.Integer build()</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object build()' has been added</td><td><a href="./xref/org/apache/commons/lang/builder/CompareToBuilder.html">org.apache.commons.lang.builder.CompareToBuilder</a></td><td>public java.lang.Object build()</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added org.apache.commons.lang.builder.Builder to the set of implemented interfaces</td><td><a href="./xref/org/apache/commons/lang/builder/EqualsBuilder.html">org.apache.commons.lang.builder.EqualsBuilder</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Boolean build()' has been added</td><td><a href="./xref/org/apache/commons/lang/builder/EqualsBuilder.html">org.apache.commons.lang.builder.EqualsBuilder</a></td><td>public java.lang.Boolean build()</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object build()' has been added</td><td><a href="./xref/org/apache/commons/lang/builder/EqualsBuilder.html">org.apache.commons.lang.builder.EqualsBuilder</a></td><td>public java.lang.Object build()</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added org.apache.commons.lang.builder.Builder to the set of implemented interfaces</td><td><a href="./xref/org/apache/commons/lang/builder/HashCodeBuilder.html">org.apache.commons.lang.builder.HashCodeBuilder</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Integer build()' has been added</td><td><a href="./xref/org/apache/commons/lang/builder/HashCodeBuilder.html">org.apache.commons.lang.builder.HashCodeBuilder</a></td><td>public java.lang.Integer build()</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object build()' has been added</td><td><a href="./xref/org/apache/commons/lang/builder/HashCodeBuilder.html">org.apache.commons.lang.builder.HashCodeBuilder</a></td><td>public java.lang.Object build()</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added org.apache.commons.lang.builder.Builder to the set of implemented interfaces</td><td><a href="./xref/org/apache/commons/lang/builder/ReflectionToStringBuilder.html">org.apache.commons.lang.builder.ReflectionToStringBuilder</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Accessibility of field excludeFieldNames has been increased from private to protected</td><td><a href="./xref/org/apache/commons/lang/builder/ReflectionToStringBuilder.html">org.apache.commons.lang.builder.ReflectionToStringBuilder</a></td><td>excludeFieldNames</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added org.apache.commons.lang.builder.Builder to the set of implemented interfaces</td><td><a href="./xref/org/apache/commons/lang/builder/ToStringBuilder.html">org.apache.commons.lang.builder.ToStringBuilder</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String build()' has been added</td><td><a href="./xref/org/apache/commons/lang/builder/ToStringBuilder.html">org.apache.commons.lang.builder.ToStringBuilder</a></td><td>public java.lang.String build()</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object build()' has been added</td><td><a href="./xref/org/apache/commons/lang/builder/ToStringBuilder.html">org.apache.commons.lang.builder.ToStringBuilder</a></td><td>public java.lang.Object build()</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.AtomicInitializer added</td><td><a href="./xref/org/apache/commons/lang/concurrent/AtomicInitializer.html">org.apache.commons.lang.concurrent.AtomicInitializer</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.AtomicSafeInitializer added</td><td><a href="./xref/org/apache/commons/lang/concurrent/AtomicSafeInitializer.html">org.apache.commons.lang.concurrent.AtomicSafeInitializer</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.BackgroundInitializer added</td><td><a href="./xref/org/apache/commons/lang/concurrent/BackgroundInitializer.html">org.apache.commons.lang.concurrent.BackgroundInitializer</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.BasicThreadFactory added</td><td><a href="./xref/org/apache/commons/lang/concurrent/BasicThreadFactory.html">org.apache.commons.lang.concurrent.BasicThreadFactory</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.BasicThreadFactory$Builder added</td><td><a href="./xref/org/apache/commons/lang/concurrent/BasicThreadFactory$Builder.html">org.apache.commons.lang.concurrent.BasicThreadFactory$Builder</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.CallableBackgroundInitializer added</td><td><a href="./xref/org/apache/commons/lang/concurrent/CallableBackgroundInitializer.html">org.apache.commons.lang.concurrent.CallableBackgroundInitializer</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.ConcurrentException added</td><td><a href="./xref/org/apache/commons/lang/concurrent/ConcurrentException.html">org.apache.commons.lang.concurrent.ConcurrentException</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.ConcurrentInitializer added</td><td><a href="./xref/org/apache/commons/lang/concurrent/ConcurrentInitializer.html">org.apache.commons.lang.concurrent.ConcurrentInitializer</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.ConcurrentRuntimeException added</td><td><a href="./xref/org/apache/commons/lang/concurrent/ConcurrentRuntimeException.html">org.apache.commons.lang.concurrent.ConcurrentRuntimeException</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.ConcurrentUtils added</td><td><a href="./xref/org/apache/commons/lang/concurrent/ConcurrentUtils.html">org.apache.commons.lang.concurrent.ConcurrentUtils</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.ConstantInitializer added</td><td><a href="./xref/org/apache/commons/lang/concurrent/ConstantInitializer.html">org.apache.commons.lang.concurrent.ConstantInitializer</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.LazyInitializer added</td><td><a href="./xref/org/apache/commons/lang/concurrent/LazyInitializer.html">org.apache.commons.lang.concurrent.LazyInitializer</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.MultiBackgroundInitializer added</td><td><a href="./xref/org/apache/commons/lang/concurrent/MultiBackgroundInitializer.html">org.apache.commons.lang.concurrent.MultiBackgroundInitializer</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.MultiBackgroundInitializer$MultiBackgroundInitializerResults added</td><td><a href="./xref/org/apache/commons/lang/concurrent/MultiBackgroundInitializer$MultiBackgroundInitializerResults.html">org.apache.commons.lang.concurrent.MultiBackgroundInitializer$MultiBackgroundInitializerResults</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.concurrent.TimedSemaphore added</td><td><a href="./xref/org/apache/commons/lang/concurrent/TimedSemaphore.html">org.apache.commons.lang.concurrent.TimedSemaphore</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.event.EventListenerSupport added</td><td><a href="./xref/org/apache/commons/lang/event/EventListenerSupport.html">org.apache.commons.lang.event.EventListenerSupport</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.event.EventListenerSupport$ProxyInvocationHandler added</td><td><a href="./xref/org/apache/commons/lang/event/EventListenerSupport$ProxyInvocationHandler.html">org.apache.commons.lang.event.EventListenerSupport$ProxyInvocationHandler</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.event.EventUtils added</td><td><a href="./xref/org/apache/commons/lang/event/EventUtils.html">org.apache.commons.lang.event.EventUtils</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.exception.ContextedException added</td><td><a href="./xref/org/apache/commons/lang/exception/ContextedException.html">org.apache.commons.lang.exception.ContextedException</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.exception.ContextedRuntimeException added</td><td><a href="./xref/org/apache/commons/lang/exception/ContextedRuntimeException.html">org.apache.commons.lang.exception.ContextedRuntimeException</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.exception.DefaultExceptionContext added</td><td><a href="./xref/org/apache/commons/lang/exception/DefaultExceptionContext.html">org.apache.commons.lang.exception.DefaultExceptionContext</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.exception.ExceptionContext added</td><td><a href="./xref/org/apache/commons/lang/exception/ExceptionContext.html">org.apache.commons.lang.exception.ExceptionContext</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Throwable getCause(java.lang.Throwable)' has been deprecated</td><td><a href="./xref/org/apache/commons/lang/exception/ExceptionUtils.html">org.apache.commons.lang.exception.ExceptionUtils</a></td><td>public java.lang.Throwable getCause(java.lang.Throwable)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Throwable getCause(java.lang.Throwable, java.lang.String[])' has been deprecated</td><td><a href="./xref/org/apache/commons/lang/exception/ExceptionUtils.html">org.apache.commons.lang.exception.ExceptionUtils</a></td><td>public java.lang.Throwable getCause(java.lang.Throwable, java.lang.String[])</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.String[] getDefaultCauseMethodNames()' has been added</td><td><a href="./xref/org/apache/commons/lang/exception/ExceptionUtils.html">org.apache.commons.lang.exception.ExceptionUtils</a></td><td>public java.lang.String[] getDefaultCauseMethodNames()</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public int compareTo(org.apache.commons.lang.math.Fraction)' has been added</td><td><a href="./xref/org/apache/commons/lang/math/Fraction.html">org.apache.commons.lang.math.Fraction</a></td><td>public int compareTo(org.apache.commons.lang.math.Fraction)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public int compareTo(org.apache.commons.lang.mutable.MutableBoolean)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableBoolean.html">org.apache.commons.lang.mutable.MutableBoolean</a></td><td>public int compareTo(org.apache.commons.lang.mutable.MutableBoolean)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object getValue()' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableBoolean.html">org.apache.commons.lang.mutable.MutableBoolean</a></td><td>public java.lang.Object getValue()</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void setValue(java.lang.Boolean)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableBoolean.html">org.apache.commons.lang.mutable.MutableBoolean</a></td><td>public void setValue(java.lang.Boolean)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public int compareTo(org.apache.commons.lang.mutable.MutableByte)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableByte.html">org.apache.commons.lang.mutable.MutableByte</a></td><td>public int compareTo(org.apache.commons.lang.mutable.MutableByte)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object getValue()' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableByte.html">org.apache.commons.lang.mutable.MutableByte</a></td><td>public java.lang.Object getValue()</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void setValue(java.lang.Number)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableByte.html">org.apache.commons.lang.mutable.MutableByte</a></td><td>public void setValue(java.lang.Number)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public int compareTo(org.apache.commons.lang.mutable.MutableDouble)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableDouble.html">org.apache.commons.lang.mutable.MutableDouble</a></td><td>public int compareTo(org.apache.commons.lang.mutable.MutableDouble)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object getValue()' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableDouble.html">org.apache.commons.lang.mutable.MutableDouble</a></td><td>public java.lang.Object getValue()</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void setValue(java.lang.Number)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableDouble.html">org.apache.commons.lang.mutable.MutableDouble</a></td><td>public void setValue(java.lang.Number)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public int compareTo(org.apache.commons.lang.mutable.MutableFloat)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableFloat.html">org.apache.commons.lang.mutable.MutableFloat</a></td><td>public int compareTo(org.apache.commons.lang.mutable.MutableFloat)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object getValue()' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableFloat.html">org.apache.commons.lang.mutable.MutableFloat</a></td><td>public java.lang.Object getValue()</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void setValue(java.lang.Number)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableFloat.html">org.apache.commons.lang.mutable.MutableFloat</a></td><td>public void setValue(java.lang.Number)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public int compareTo(org.apache.commons.lang.mutable.MutableInt)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableInt.html">org.apache.commons.lang.mutable.MutableInt</a></td><td>public int compareTo(org.apache.commons.lang.mutable.MutableInt)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object getValue()' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableInt.html">org.apache.commons.lang.mutable.MutableInt</a></td><td>public java.lang.Object getValue()</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void setValue(java.lang.Number)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableInt.html">org.apache.commons.lang.mutable.MutableInt</a></td><td>public void setValue(java.lang.Number)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public int compareTo(org.apache.commons.lang.mutable.MutableLong)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableLong.html">org.apache.commons.lang.mutable.MutableLong</a></td><td>public int compareTo(org.apache.commons.lang.mutable.MutableLong)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object getValue()' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableLong.html">org.apache.commons.lang.mutable.MutableLong</a></td><td>public java.lang.Object getValue()</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void setValue(java.lang.Number)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableLong.html">org.apache.commons.lang.mutable.MutableLong</a></td><td>public void setValue(java.lang.Number)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public int compareTo(org.apache.commons.lang.mutable.MutableShort)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableShort.html">org.apache.commons.lang.mutable.MutableShort</a></td><td>public int compareTo(org.apache.commons.lang.mutable.MutableShort)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object getValue()' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableShort.html">org.apache.commons.lang.mutable.MutableShort</a></td><td>public java.lang.Object getValue()</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void setValue(java.lang.Number)' has been added</td><td><a href="./xref/org/apache/commons/lang/mutable/MutableShort.html">org.apache.commons.lang.mutable.MutableShort</a></td><td>public void setValue(java.lang.Number)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.reflect.TypeUtils added</td><td><a href="./xref/org/apache/commons/lang/reflect/TypeUtils.html">org.apache.commons.lang.reflect.TypeUtils</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.FormattableUtils added</td><td><a href="./xref/org/apache/commons/lang/text/FormattableUtils.html">org.apache.commons.lang.text.FormattableUtils</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added java.lang.Appendable to the set of implemented interfaces</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Added java.lang.CharSequence to the set of implemented interfaces</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public org.apache.commons.lang.text.StrBuilder append(java.lang.CharSequence)' has been added</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td>public org.apache.commons.lang.text.StrBuilder append(java.lang.CharSequence)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public org.apache.commons.lang.text.StrBuilder append(java.lang.CharSequence, int, int)' has been added</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td>public org.apache.commons.lang.text.StrBuilder append(java.lang.CharSequence, int, int)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Appendable append(char)' has been added</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td>public java.lang.Appendable append(char)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Appendable append(java.lang.CharSequence, int, int)' has been added</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td>public java.lang.Appendable append(java.lang.CharSequence, int, int)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Appendable append(java.lang.CharSequence)' has been added</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td>public java.lang.Appendable append(java.lang.CharSequence)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.CharSequence subSequence(int, int)' has been added</td><td><a href="./xref/org/apache/commons/lang/text/StrBuilder.html">org.apache.commons.lang.text.StrBuilder</a></td><td>public java.lang.CharSequence subSequence(int, int)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void add(java.lang.String)' has been added</td><td><a href="./xref/org/apache/commons/lang/text/StrTokenizer.html">org.apache.commons.lang.text.StrTokenizer</a></td><td>public void add(java.lang.String)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object next()' has been added</td><td><a href="./xref/org/apache/commons/lang/text/StrTokenizer.html">org.apache.commons.lang.text.StrTokenizer</a></td><td>public java.lang.Object next()</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.lang.Object previous()' has been added</td><td><a href="./xref/org/apache/commons/lang/text/StrTokenizer.html">org.apache.commons.lang.text.StrTokenizer</a></td><td>public java.lang.Object previous()</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public void set(java.lang.String)' has been added</td><td><a href="./xref/org/apache/commons/lang/text/StrTokenizer.html">org.apache.commons.lang.text.StrTokenizer</a></td><td>public void set(java.lang.String)</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.WordUtils added</td><td><a href="./xref/org/apache/commons/lang/text/WordUtils.html">org.apache.commons.lang.text.WordUtils</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.translate.AggregateTranslator added</td><td><a href="./xref/org/apache/commons/lang/text/translate/AggregateTranslator.html">org.apache.commons.lang.text.translate.AggregateTranslator</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.translate.CharSequenceTranslator added</td><td><a href="./xref/org/apache/commons/lang/text/translate/CharSequenceTranslator.html">org.apache.commons.lang.text.translate.CharSequenceTranslator</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.translate.CodePointTranslator added</td><td><a href="./xref/org/apache/commons/lang/text/translate/CodePointTranslator.html">org.apache.commons.lang.text.translate.CodePointTranslator</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.translate.EntityArrays added</td><td><a href="./xref/org/apache/commons/lang/text/translate/EntityArrays.html">org.apache.commons.lang.text.translate.EntityArrays</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.translate.LookupTranslator added</td><td><a href="./xref/org/apache/commons/lang/text/translate/LookupTranslator.html">org.apache.commons.lang.text.translate.LookupTranslator</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.translate.NumericEntityEscaper added</td><td><a href="./xref/org/apache/commons/lang/text/translate/NumericEntityEscaper.html">org.apache.commons.lang.text.translate.NumericEntityEscaper</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.translate.NumericEntityUnescaper added</td><td><a href="./xref/org/apache/commons/lang/text/translate/NumericEntityUnescaper.html">org.apache.commons.lang.text.translate.NumericEntityUnescaper</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.translate.NumericEntityUnescaper$OPTION added</td><td><a href="./xref/org/apache/commons/lang/text/translate/NumericEntityUnescaper$OPTION.html">org.apache.commons.lang.text.translate.NumericEntityUnescaper$OPTION</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.translate.OctalUnescaper added</td><td><a href="./xref/org/apache/commons/lang/text/translate/OctalUnescaper.html">org.apache.commons.lang.text.translate.OctalUnescaper</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.translate.UnicodeEscaper added</td><td><a href="./xref/org/apache/commons/lang/text/translate/UnicodeEscaper.html">org.apache.commons.lang.text.translate.UnicodeEscaper</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.text.translate.UnicodeUnescaper added</td><td><a href="./xref/org/apache/commons/lang/text/translate/UnicodeUnescaper.html">org.apache.commons.lang.text.translate.UnicodeUnescaper</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public java.util.Date add(java.util.Date, int, int)' is no longer deprecated</td><td><a href="./xref/org/apache/commons/lang/time/DateUtils.html">org.apache.commons.lang.time.DateUtils</a></td><td>public java.util.Date add(java.util.Date, int, int)</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public long getNanoTime()' has been added</td><td><a href="./xref/org/apache/commons/lang/time/StopWatch.html">org.apache.commons.lang.time.StopWatch</a></td><td>public long getNanoTime()</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Method 'public long getSplitNanoTime()' has been added</td><td><a href="./xref/org/apache/commons/lang/time/StopWatch.html">org.apache.commons.lang.time.StopWatch</a></td><td>public long getSplitNanoTime()</td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.tuple.ImmutablePair added</td><td><a href="./xref/org/apache/commons/lang/tuple/ImmutablePair.html">org.apache.commons.lang.tuple.ImmutablePair</a></td><td></td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.tuple.MutablePair added</td><td><a href="./xref/org/apache/commons/lang/tuple/MutablePair.html">org.apache.commons.lang.tuple.MutablePair</a></td><td></td></tr><tr class="a"><td><img alt="Info" src="images/icon_info_sml.gif" /></td><td>Class org.apache.commons.lang.tuple.Pair added</td><td><a href="./xref/org/apache/commons/lang/tuple/Pair.html">org.apache.commons.lang.tuple.Pair</a></td><td></td></tr></table></div>
+ </div>
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ <div id="footer">
+ <div class="center">Copyright &#169; 2001-2011
+ <a href="https://www.apache.org/">The Apache Software Foundation</a>.
+ All Rights Reserved.
+
+ </div>
+
+<div class="center">Apache Commons, Apache Commons Lang, Apache, the Apache feather logo, and the Apache Commons project logos are trademarks of The Apache Software Foundation.
+ All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/src/site/resources/profile.jacoco b/src/site/resources/profile.jacoco
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/src/site/resources/profile.jacoco
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-1.0.1.txt b/src/site/resources/release-notes/RELEASE-NOTES-1.0.1.txt
new file mode 100644
index 000000000..975849225
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-1.0.1.txt
@@ -0,0 +1,63 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 1.0.1
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for this version of the Commons
+Lang package. Commons Lang is a set of utility functions and reusable
+components that should be a help in any Java environment.
+
+NEW FEATURES:
+
+This release is a bugfix release for the Lang 1.0 release. There are no new features.
+
+BUG FIXES:
+
+#14062: StringUtils.split fails to handle (String, null, int) correctly.
+ This results in the String "null" appearing in the split text, when
+ the text is not entirely consumed in the split, ie) int is less
+ than the number of whitespace tokens in the String.
+ Fix is courtesy of Mark McDowell.
+
+#- : SystemUtils.isJavaVersionAtLeast made static.
+
+#- : NumberUtils test fails in JDK 1.2 due to lack of 1.2 support for
+ "1.1E-700F". Fix is to use SystemUtils to protect it for the moment.
+
+#- : ToStringStyle did not compile under JDK 1.2 due to inner class
+ issues. Added explicit 'this.' prefixes to make this so.
+
+#14566: NumberRange.getMaximum was returning the minimum.
+ Bug reported by Kasper Ronning.
+
+#13527: ExceptionUtils now handles getCausedByException and getRootCause
+ from EJBException and ServletException, as reported by Lars Beuster.
+
+#14334: NestableDelegate now implements Serializable, as reported by
+ Max Rydahl Andersen.
+
+#13568: Enums cannot now be created with the same name as an already
+ existing Enum. Enum now compiles under JDK 1.2.
+
+DEPRECATIONS:
+
+Solely a bugfix version.
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-1.0.txt b/src/site/resources/release-notes/RELEASE-NOTES-1.0.txt
new file mode 100644
index 000000000..10ee7e89c
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-1.0.txt
@@ -0,0 +1,161 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 1.0
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for this version of the Commons
+Lang package. Commons Lang is a set of utility functions and reusable
+components that should be a help in any Java environment.
+
+NEW FEATURES:
+
+Since the release of the b1 package the following have been added:
+
+lang.
+ SystemUtils:
+ Brings together many system specific variables under one easy component.
+
+exception.
+ ExceptionUtils:
+ Provides helpful static functions for dealing with Exceptions.
+ NestableError :
+ Adds nesting ability to Errors.
+
+enum sub-package:
+ A solid version of the typical Java translation of a C enum.
+
+builder sub-package:
+ A series of helpers for handling standard Object methods such as equals,
+ toString, compareTo and hashCode in a professional manner.
+
+
+BUG FIXES:
+
+StringUtils.stripStart and stripEnd were improved to match their Javadoc.
+StringUtils.convertUnicodeToNative and convertNativeToUnicode both removed.
+ Both methods did not work properly.
+
+
+DEPRECATIONS:
+
+Much of the exception subpackage was reworked between 1.0-b1 and 1.0. Apart
+from this the API should have a high level of backward compatibility.
+
+
+CHANGES: [In 'diff' format]
+
+Jar changes
+===========
+> org.apache.commons.lang.exception.ExceptionUtils
+> org.apache.commons.lang.exception.NestableError
+> org.apache.commons.lang.ObjectUtils$Null
+> org.apache.commons.lang.ObjectUtils$1
+> org.apache.commons.lang.enum.Enum$Entry
+> org.apache.commons.lang.enum.Enum$1
+> org.apache.commons.lang.enum.Enum
+> org.apache.commons.lang.enum.EnumUtils
+> org.apache.commons.lang.enum.ValuedEnum
+> org.apache.commons.lang.builder.CompareToBuilder
+> org.apache.commons.lang.builder.EqualsBuilder
+> org.apache.commons.lang.builder.HashCodeBuilder
+> org.apache.commons.lang.builder.StandardToStringStyle
+> org.apache.commons.lang.builder.ToStringStyle$DefaultToStringStyle
+> org.apache.commons.lang.builder.ToStringStyle$NoFieldNameToStringStyle
+> org.apache.commons.lang.builder.ToStringStyle$SimpleToStringStyle
+> org.apache.commons.lang.builder.ToStringStyle$MultiLineToStringStyle
+> org.apache.commons.lang.builder.ToStringStyle$1
+> org.apache.commons.lang.builder.ToStringStyle
+> org.apache.commons.lang.builder.ToStringBuilder
+> org.apache.commons.lang.SystemUtils
+
+
+Class changes
+=============
+org.apache.commons.lang.exception.Nestable
+--------------------
+< public abstract int getLength();
+> public abstract int getThrowableCount();
+< public abstract int indexOfThrowable(int, java.lang.Class);
+---
+> public abstract int indexOfThrowable(java.lang.Class, int);
+> public abstract void printStackTrace(java.io.PrintStream);
+
+org.apache.commons.lang.exception.NestableDelegate
+--------------------
+< int getLength();
+< java.lang.String getMessage(java.lang.String);
+> java.lang.String getMessage(java.lang.String);
+> java.lang.String getMessages()[];
+> int getThrowableCount();
+< java.lang.String getMessages()[];
+< int indexOfThrowable(int, java.lang.Class);
+---
+> int indexOfThrowable(java.lang.Class, int);
+
+org.apache.commons.lang.exception.NestableException
+--------------------
+< public int getLength();
+> public java.lang.String getMessage(int);
+> public int getThrowableCount();
+< public java.lang.String getMessage(int);
+< public int indexOfThrowable(int, java.lang.Class);
+---
+> public int indexOfThrowable(java.lang.Class, int);
+
+org.apache.commons.lang.exception.NestableRuntimeException
+--------------------
+< public int getLength();
+> public java.lang.String getMessage(int);
+> public int getThrowableCount();
+< public java.lang.String getMessage(int);
+< public int indexOfThrowable(int, java.lang.Class);
+---
+> public int indexOfThrowable(java.lang.Class, int);
+
+org.apache.commons.lang.NumberUtils
+--------------------
+> public static long minimum(long, long, long);
+> public static long maximum(long, long, long);
+> public static int compare(double, double);
+> public static int compare(float, float);
+
+org.apache.commons.lang.ObjectUtils
+--------------------
+> public static final org.apache.commons.lang.ObjectUtils.Null NULL;
+> public org.apache.commons.lang.ObjectUtils();
+> public static java.lang.String identityToString(java.lang.Object);
+> static {};
+> public static class org.apache.commons.lang.ObjectUtils. Null extends java.lang.Object implements java.io.Serializable
+
+org.apache.commons.lang.RandomStringUtils
+--------------------
+> public org.apache.commons.lang.RandomStringUtils();
+
+org.apache.commons.lang.StringUtils
+--------------------
+> public org.apache.commons.lang.StringUtils();
+< public static java.lang.String stackTrace(java.lang.Throwable);
+< public static java.lang.String convertUnicodeToNative(java.lang.String, java.lang.String) throws java.io.IOException;
+< public static java.lang.String convertNativeToUnicode(java.lang.String, java.lang.String) throws java.io.IOException;
+---
+> public static boolean containsOnly(java.lang.String, char[]);
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-2.0.txt b/src/site/resources/release-notes/RELEASE-NOTES-2.0.txt
new file mode 100644
index 000000000..000c90c8a
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-2.0.txt
@@ -0,0 +1,676 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 2.0
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for this version of the Commons
+Lang package. Commons Lang is a set of utility functions and reusable
+components that should be a help in any Java environment.
+
+This release has involved a major clean and tidy exercise.
+Javadoc and Tests are now much more thorough.
+All methods should now be much clearer in what they do in unusual cases.
+
+
+INCOMPATIBLE CHANGES:
+Some StringUtils methods have changed functionality from 1.0:
+ isEmpty()
+ chomp(String)
+ chomp(String,String)
+ swapCase(String)
+Numerous other methods have changed null handling to accept nulls gracefully.
+As with all major version releases, check your code for incompatibilities.
+
+
+NEW FEATURES:
+
+Since the release of the 1.0 package the following classes have been added:
+
+lang package:
+ ArrayUtils
+ BitField
+ BooleanUtils
+ CharRange (previously package scoped)
+ ClassUtils
+ StringEscapeUtils
+ WordUtils
+ IllegalClassException
+ IncompleteArgumentException
+ NotImplementedException
+ NullArgumentException
+ SerializationException
+ UnhandledException
+ Validate
+
+
+math sub-package:
+ IntRange
+ LongRange
+ Range
+ DoubleRange
+ JVMRandom
+ NumberRange
+ FloatRange
+ NumberUtils
+ Fraction
+ RandomUtils
+
+time sub-package:
+ DateFormatUtils
+ FastDateFormat
+ DateUtils
+ StopWatch
+
+Since the release of the 1.0 package the following classes have been changed:
+
+lang:
+ CharSet:
+ Added factory method, equals and hashCode().
+ Better defined and tested the set syntax.
+ CharSetUtils:
+ added keep method: keep any characters specified in the CharSet string
+ RandomStringUtils:
+ random method: overloaded to allow passing in of a Random class
+ SerializationUtils:
+ added empty constructor
+ StringUtils:
+ isEmpty() changed to not trim
+ chomp() changed to be more like Perl.
+ swapCase() no longer word based, but no difference if you pass in ASCII
+ Various methods changed in the handling of null (less exceptions).
+ Many new methods.
+ Various methods deprecated.
+ SystemUtils:
+ isJavaVersionAtLeast(int) added. getJavaVersion() deprecated.
+ host of new constants.
+
+enum:
+ Enum:
+ getEnumClass(Class) added
+ EnumUtils:
+ Removed irrelevant Comparable/Serializable interfaces.
+
+exception:
+ NestableDelegate:
+ Gained many new methods for dissecting an Exception.
+ ExceptionUtils:
+ Gained many new methods to improve handling of nested stack traces.
+
+builder:
+ ReflectionToStringBuilder:
+ Handy class added for creating default toStrings.
+ All other builder classes received a set of new methods.
+
+
+BUG FIXES:
+
+ID Sev Pri Plt Owner State Result Summary
+13367 [PATCH] StringUtil enhancement
+13391 Javadoc nit
+13771 Additional Lang Method Suggestions
+14306 NullPointerException in CompareToBuilder
+14357 static option for reversing the stacktrace
+14447 ToStringBuilder doesn't work well in subclasses
+14883 StringUtils.countMatches loops forever if substring empty
+14884 NumberRange inaccurate for Long, etc.
+14985 More flexibility for getRootCause in ExceptionUtils
+15154 SystemUtils.IS_JAVA_1_5 Javadoc is wrong
+15257 Hierarchy support in ToStringBuilder.reflectionToString()
+15438 ArrayUtils.contains()
+15439 Enum does not support inner sub-classes
+15986 Infinite loop in ToStringBuilder.reflectionToString for inne
+16076 Example in Javadoc for ToStringBuilder wrong for append.
+16193 Hierarchy support in EqualsBuilder.reflectionEquals()
+16202 typo in the javadoc example code
+16204 Infinite loop in StringUtils.replace(text, repl, with) + FIX
+16227 Added class hierarchy support to CompareToBuilder.reflectionC
+16228 Added class hierarchy support to HashCodeBuilder.reflectionHa
+16284 MethodUtils: Removed unused code/unused local vars.
+16341 No Javadoc for NestableDelegate
+16622 Removed compile warning in FastDateFormat
+16669 Javadoc Errata
+16676 StackOverflow due to ToStringBuilder
+16689 ExceptionUtils new methods.
+16690 Specify initial size for Enum's HashMap.
+16787 Removed compile warning in ObjectUtils
+17250 [Lang] Should ToStringBuilder.reflectionToString handle arra
+17654 EnumUtils nit: The import java.io.Serializable is never used
+17882 Add join(..., char c) to StringUtils (and some performance f
+18077 StringUtils.chomp does not match Perl
+18723 RandomStringUtils infinite loop with length < 1
+18836 test.lang fails if compiled with non iso-8859-1 locales
+18948 Resurrect the WordWrapUtils from commons-sandbox/utils
+19296 [Lang] What to do with FastDateFormat unused private constru
+19364 [Lang] time unit tests fail on Sundays
+19756 [lang] java.lang.ExceptionInInitializerError thrown by JVMRa
+19880 [lang] patch and test case fixing problem with RandomStringU
+20165 [LANG] SystemUtils does not play nice in an Applet
+20538 [lang] NumberUtils.isNumber allows illegal trailing characte
+20592 [lang] RandomStringUtils.randomAlpha methods omit 'z'
+20603 [lang] Make NestableDelegate methods public instead of packa
+20632 Refactored reflection feature of ToStringBuilder into new Re
+20652 StringUtils.chopNewLine - StringIndexOutOfBoundsException
+21021 [PATCH] reduce object creation in ToStringBuilder
+21068 [lang] [PATCH] NumberUtils min/max, BooleanUtils.xor, and Ar
+21099 [lang][PATCH] Unused field 'startFinal' in DateIterator
+21715 The javadoc says "Mac" instead of "OS/2"
+21734 [PATCH] all NumberUtils.createXXX(String) methods handle null
+21750 [lang] StringUtils javadoc and test enhancements
+21758 [lang] lang.builder classes javadoc edits (mostly typo fixes)
+21797 [lang] Add javadoc examples and tests for StringUtils
+21809 [lang] maven-beta10 checkstyle problem
+21904 NumberUtils.createBigDecimal("") NPE in Sun 1.3.1_08
+21952 [lang] Improved tests, javadoc for CharSetUtils, StringEscapeUtils
+22091 Adding tolerance to double[] search methods in ArrayUtils
+22094 A small, but important javadoc fix for Fraction proper whole/numerator
+22095 [lang] Javadoc, tests improvements for CharSet, CharSetUtils
+22098 [lang] Improve util.Validate tests
+22245 [lang] test.time fails in Japanese (non-us) locale.
+22286 [lang] Missing @since tags
+22367 Typo in documentation
+22386 [lang] Improve javadoc and overflow behavior of Fraction
+
+
+DEPRECATIONS:
+
+lang:
+ NumberRange:
+ now deprecated, see math subpackage
+ NumberUtils:
+ now deprecated, see math subpackage
+
+
+CHANGES: [In 'diff' format]
+
+Jar changes
+===========
+> org.apache.commons.lang.math.Range
+> org.apache.commons.lang.math.FloatRange
+> org.apache.commons.lang.math.NumberUtils
+> org.apache.commons.lang.math.JVMRandom
+> org.apache.commons.lang.math.IntRange
+> org.apache.commons.lang.math.LongRange
+> org.apache.commons.lang.math.DoubleRange
+> org.apache.commons.lang.math.NumberRange
+> org.apache.commons.lang.math.Fraction
+> org.apache.commons.lang.math.RandomUtils
+> org.apache.commons.lang.time.FastDateFormat
+> org.apache.commons.lang.time.DateUtils$DateIterator
+> org.apache.commons.lang.time.DateUtils
+> org.apache.commons.lang.time.FastDateFormat$UnpaddedMonthField
+> org.apache.commons.lang.time.FastDateFormat$StringLiteral
+> org.apache.commons.lang.time.FastDateFormat$TwelveHourField
+> org.apache.commons.lang.time.FastDateFormat$NumberRule
+> org.apache.commons.lang.time.FastDateFormat$CharacterLiteral
+> org.apache.commons.lang.time.FastDateFormat$TimeZoneNumberRule
+> org.apache.commons.lang.time.FastDateFormat$TimeZoneNameRule
+> org.apache.commons.lang.time.DateFormatUtils
+> org.apache.commons.lang.time.FastDateFormat$TwoDigitMonthField
+> org.apache.commons.lang.time.DurationFormatUtils
+> org.apache.commons.lang.time.FastDateFormat$TimeZoneDisplayKey
+> org.apache.commons.lang.time.FastDateFormat$UnpaddedNumberField
+> org.apache.commons.lang.time.FastDateFormat$PaddedNumberField
+> org.apache.commons.lang.time.StopWatch
+> org.apache.commons.lang.time.FastDateFormat$TwentyFourHourField
+> org.apache.commons.lang.time.FastDateFormat$Rule
+> org.apache.commons.lang.time.FastDateFormat$TwoDigitNumberField
+> org.apache.commons.lang.time.FastDateFormat$TextField
+> org.apache.commons.lang.time.FastDateFormat$Pair
+> org.apache.commons.lang.time.FastDateFormat$TwoDigitYearField
+> org.apache.commons.lang.util.IdentifierUtils$StringNumericIdentifierFactory
+> org.apache.commons.lang.util.IdentifierUtils$StringSessionIdentifierFactory
+> org.apache.commons.lang.util.IdentifierUtils$LongNumericIdentifierFactory
+> org.apache.commons.lang.util.IdentifierUtils$StringAlphanumericIdentifierFactory
+> org.apache.commons.lang.util.Validate
+> org.apache.commons.lang.util.LongIdentifierFactory
+> org.apache.commons.lang.util.IdentifierUtils$1
+> org.apache.commons.lang.util.StringIdentifierFactory
+> org.apache.commons.lang.util.IdentifierUtils
+> org.apache.commons.lang.util.IdentifierFactory
+> org.apache.commons.lang.util.BitField
+> org.apache.commons.lang.Entities
+> org.apache.commons.lang.Entities$LookupEntityMap
+> org.apache.commons.lang.NotImplementedException
+> org.apache.commons.lang.NullArgumentException
+< org.apache.commons.lang.ObjectUtils$1
+---
+> org.apache.commons.lang.StringPrintWriter
+> org.apache.commons.lang.UnhandledException
+> org.apache.commons.lang.Entities$HashEntityMap
+> org.apache.commons.lang.Entities$ArrayEntityMap
+> org.apache.commons.lang.Entities$EntityMap
+> org.apache.commons.lang.IntHashMap
+> org.apache.commons.lang.BooleanUtils
+> org.apache.commons.lang.IncompleteArgumentException
+> org.apache.commons.lang.Entities$PrimitiveEntityMap
+> org.apache.commons.lang.Entities$TreeEntityMap
+> org.apache.commons.lang.WordUtils
+> org.apache.commons.lang.StringEscapeUtils
+> org.apache.commons.lang.ArrayUtils
+> org.apache.commons.lang.Entities$BinaryEntityMap
+> org.apache.commons.lang.ClassUtils
+> org.apache.commons.lang.IntHashMap$Entry
+> org.apache.commons.lang.IllegalClassException
+> org.apache.commons.lang.builder.ReflectionToStringBuilder$1
+> org.apache.commons.lang.builder.ReflectionToStringBuilder
+> org.apache.commons.lang.Entities$MapIntMap
+
+
+Class changes
+=============
+org.apache.commons.lang.enum.EnumUtils
+--------------------
+< public abstract class org.apache.commons.lang.enum.EnumUtils extends java.lang.Object implements java.lang.Comparable, java.io.Serializable {
+---
+> public class org.apache.commons.lang.enum.EnumUtils extends java.lang.Object {
+> public org.apache.commons.lang.enum.EnumUtils();
+
+org.apache.commons.lang.enum.Enum$Entry
+--------------------
+> final java.util.Map unmodifiableMap;
+> final java.util.List unmodifiableList;
+
+org.apache.commons.lang.enum.Enum
+--------------------
+> protected transient java.lang.String iToString;
+> static java.lang.Class class$org$apache$commons$lang$enum$ValuedEnum;
+> public java.lang.Class getEnumClass();
+
+org.apache.commons.lang.enum.ValuedEnum
+--------------------
+> static {};
+
+org.apache.commons.lang.StringUtils
+--------------------
+> public static final java.lang.String EMPTY;
+> public static boolean isEmpty(java.lang.String);
+> public static boolean isNotEmpty(java.lang.String);
+> public static boolean isBlank(java.lang.String);
+> public static boolean isNotBlank(java.lang.String);
+< public static java.lang.String deleteSpaces(java.lang.String);
+< public static java.lang.String deleteWhitespace(java.lang.String);
+< public static boolean isNotEmpty(java.lang.String);
+< public static boolean isEmpty(java.lang.String);
+---
+> public static java.lang.String trimToNull(java.lang.String);
+> public static java.lang.String trimToEmpty(java.lang.String);
+> public static java.lang.String strip(java.lang.String);
+> public static java.lang.String stripToNull(java.lang.String);
+> public static java.lang.String stripToEmpty(java.lang.String);
+> public static java.lang.String strip(java.lang.String, java.lang.String);
+> public static java.lang.String stripStart(java.lang.String, java.lang.String);
+> public static java.lang.String stripEnd(java.lang.String, java.lang.String);
+> public static java.lang.String stripAll(java.lang.String[])[];
+> public static java.lang.String stripAll(java.lang.String[], java.lang.String)[];
+> public static int indexOf(java.lang.String, char);
+> public static int indexOf(java.lang.String, char, int);
+> public static int indexOf(java.lang.String, java.lang.String);
+> public static int indexOf(java.lang.String, java.lang.String, int);
+> public static int lastIndexOf(java.lang.String, char);
+> public static int lastIndexOf(java.lang.String, char, int);
+> public static int lastIndexOf(java.lang.String, java.lang.String);
+> public static int lastIndexOf(java.lang.String, java.lang.String, int);
+> public static boolean contains(java.lang.String, char);
+> public static boolean contains(java.lang.String, java.lang.String);
+> public static int indexOfAny(java.lang.String, char[]);
+> public static int indexOfAny(java.lang.String, java.lang.String);
+> public static int indexOfAnyBut(java.lang.String, char[]);
+> public static int indexOfAnyBut(java.lang.String, java.lang.String);
+> public static boolean containsOnly(java.lang.String, char[]);
+> public static boolean containsOnly(java.lang.String, java.lang.String);
+> public static boolean containsNone(java.lang.String, char[]);
+> public static boolean containsNone(java.lang.String, java.lang.String);
+> public static java.lang.String substringBefore(java.lang.String, java.lang.String);
+> public static java.lang.String substringAfter(java.lang.String, java.lang.String);
+> public static java.lang.String substringBeforeLast(java.lang.String, java.lang.String);
+> public static java.lang.String substringAfterLast(java.lang.String, java.lang.String);
+> public static java.lang.String substringBetween(java.lang.String, java.lang.String);
+> public static java.lang.String substringBetween(java.lang.String, java.lang.String, java.lang.String);
+> public static java.lang.String getNestedString(java.lang.String, java.lang.String);
+> public static java.lang.String getNestedString(java.lang.String, java.lang.String, java.lang.String);
+> public static java.lang.String split(java.lang.String, char)[];
+> public static java.lang.String join(java.lang.Object[]);
+> public static java.lang.String join(java.lang.Object[], char);
+> public static java.lang.String join(java.util.Iterator, char);
+> public static java.lang.String deleteSpaces(java.lang.String);
+> public static java.lang.String deleteWhitespace(java.lang.String);
+> public static java.lang.String replaceChars(java.lang.String, char, char);
+> public static java.lang.String replaceChars(java.lang.String, java.lang.String, java.lang.String);
+< public static java.lang.String center(java.lang.String, int);
+< public static java.lang.String center(java.lang.String, int, java.lang.String);
+---
+> public static java.lang.String overlay(java.lang.String, java.lang.String, int, int);
+> public static java.lang.String rightPad(java.lang.String, int, char);
+> public static java.lang.String leftPad(java.lang.String, int, char);
+< public static java.lang.String strip(java.lang.String);
+< public static java.lang.String strip(java.lang.String, java.lang.String);
+< public static java.lang.String stripAll(java.lang.String[])[];
+< public static java.lang.String stripAll(java.lang.String[], java.lang.String)[];
+< public static java.lang.String stripEnd(java.lang.String, java.lang.String);
+< public static java.lang.String stripStart(java.lang.String, java.lang.String);
+---
+> public static java.lang.String center(java.lang.String, int);
+> public static java.lang.String center(java.lang.String, int, char);
+> public static java.lang.String center(java.lang.String, int, java.lang.String);
+< public static java.lang.String uncapitalise(java.lang.String);
+---
+> public static java.lang.String capitalize(java.lang.String);
+> public static java.lang.String uncapitalize(java.lang.String);
+> public static java.lang.String uncapitalise(java.lang.String);
+< public static java.lang.String getNestedString(java.lang.String, java.lang.String);
+< public static java.lang.String getNestedString(java.lang.String, java.lang.String, java.lang.String);
+> public static boolean isWhitespace(java.lang.String);
+> public static java.lang.String reverseDelimited(java.lang.String, char);
+> public static java.lang.String abbreviate(java.lang.String, int);
+> public static java.lang.String abbreviate(java.lang.String, int, int);
+> public static java.lang.String difference(java.lang.String, java.lang.String);
+> public static int differenceAt(java.lang.String, java.lang.String);
+< public static boolean containsOnly(java.lang.String, char[]);
+---
+> static {};
+
+org.apache.commons.lang.ObjectUtils
+--------------------
+> public static java.lang.StringBuffer appendIdentityToString(java.lang.StringBuffer, java.lang.Object);
+> public static java.lang.String toString(java.lang.Object);
+> public static java.lang.String toString(java.lang.Object, java.lang.String);
+< org.apache.commons.lang.ObjectUtils.Null(org.apache.commons.lang.ObjectUtils$1);
+---
+> org.apache.commons.lang.ObjectUtils.Null();
+> static {};
+
+org.apache.commons.lang.exception.NestableDelegate
+--------------------
+> public static boolean topDown;
+> public static boolean trimStackFrames;
+< org.apache.commons.lang.exception.NestableDelegate(org.apache.commons.lang.exception.Nestable);
+< java.lang.String getMessage(int);
+< java.lang.String getMessage(java.lang.String);
+< java.lang.String getMessages()[];
+< java.lang.Throwable getThrowable(int);
+< int getThrowableCount();
+< java.lang.Throwable getThrowables()[];
+< int indexOfThrowable(java.lang.Class, int);
+---
+> public org.apache.commons.lang.exception.NestableDelegate(org.apache.commons.lang.exception.Nestable);
+> public java.lang.String getMessage(int);
+> public java.lang.String getMessage(java.lang.String);
+> public java.lang.String getMessages()[];
+> public java.lang.Throwable getThrowable(int);
+> public int getThrowableCount();
+> public java.lang.Throwable getThrowables()[];
+> public int indexOfThrowable(java.lang.Class, int);
+> protected java.lang.String getStackFrames(java.lang.Throwable)[];
+> protected void trimStackFrames(java.util.List);
+
+org.apache.commons.lang.exception.ExceptionUtils
+--------------------
+< protected static final java.lang.String CAUSE_METHOD_NAMES[];
+< protected static final java.lang.Object CAUSE_METHOD_PARAMS[];
+---
+> static final java.lang.String WRAPPED_MARKER;
+< protected org.apache.commons.lang.exception.ExceptionUtils();
+---
+> public org.apache.commons.lang.exception.ExceptionUtils();
+> public static void addCauseMethodName(java.lang.String);
+> public static boolean isThrowableNested();
+> public static boolean isNestedThrowable(java.lang.Throwable);
+> public static void printRootCauseStackTrace(java.lang.Throwable);
+> public static void printRootCauseStackTrace(java.lang.Throwable, java.io.PrintStream);
+> public static void printRootCauseStackTrace(java.lang.Throwable, java.io.PrintWriter);
+> public static java.lang.String getRootCauseStackTrace(java.lang.Throwable)[];
+> public static void removeCommonFrames(java.util.List, java.util.List);
+> public static java.lang.String getFullStackTrace(java.lang.Throwable);
+> static java.util.List getStackFrameList(java.lang.Throwable);
+
+org.apache.commons.lang.CharRange
+--------------------
+< class org.apache.commons.lang.CharRange extends java.lang.Object {
+---
+> public final class org.apache.commons.lang.CharRange extends java.lang.Object implements java.io.Serializable {
+> public org.apache.commons.lang.CharRange(char,boolean);
+< public org.apache.commons.lang.CharRange(java.lang.String,java.lang.String);
+---
+> public org.apache.commons.lang.CharRange(char,char,boolean);
+< public void setStart(char);
+< public void setEnd(char);
+< public boolean isRange();
+< public boolean inRange(char);
+< public void setNegated(boolean);
+---
+> public boolean contains(char);
+> public boolean contains(org.apache.commons.lang.CharRange);
+> public boolean equals(java.lang.Object);
+> public int hashCode();
+> static {};
+
+org.apache.commons.lang.ObjectUtils$1
+--------------------
+< Compiled from ObjectUtils.java
+< class org.apache.commons.lang.ObjectUtils$1 extends java.lang.Object {
+< }
+---
+> Class 'org.apache.commons.lang.ObjectUtils$1' has been removed
+
+org.apache.commons.lang.ObjectUtils$Null
+--------------------
+< org.apache.commons.lang.ObjectUtils.Null(org.apache.commons.lang.ObjectUtils$1);
+---
+> org.apache.commons.lang.ObjectUtils.Null();
+> static {};
+
+org.apache.commons.lang.SystemUtils
+--------------------
+> public static final java.lang.String FILE_ENCODING;
+> public static final java.lang.String JAVA_RUNTIME_NAME;
+> public static final java.lang.String JAVA_RUNTIME_VERSION;
+> public static final java.lang.String JAVA_VM_INFO;
+> public static final java.lang.String USER_COUNTRY;
+> public static final java.lang.String USER_LANGUAGE;
+> public static final float JAVA_VERSION_FLOAT;
+> public static final int JAVA_VERSION_INT;
+> public static final boolean IS_OS_AIX;
+> public static final boolean IS_OS_HP_UX;
+> public static final boolean IS_OS_IRIX;
+> public static final boolean IS_OS_LINUX;
+> public static final boolean IS_OS_MAC;
+> public static final boolean IS_OS_MAC_OSX;
+> public static final boolean IS_OS_OS2;
+> public static final boolean IS_OS_SOLARIS;
+> public static final boolean IS_OS_SUN_OS;
+> public static final boolean IS_OS_WINDOWS;
+> public static final boolean IS_OS_WINDOWS_2000;
+> public static final boolean IS_OS_WINDOWS_95;
+> public static final boolean IS_OS_WINDOWS_98;
+> public static final boolean IS_OS_WINDOWS_ME;
+> public static final boolean IS_OS_WINDOWS_NT;
+> public static final boolean IS_OS_WINDOWS_XP;
+> public static boolean isJavaVersionAtLeast(int);
+
+org.apache.commons.lang.SerializationUtils
+--------------------
+> public org.apache.commons.lang.SerializationUtils();
+
+org.apache.commons.lang.RandomStringUtils
+--------------------
+> public static java.lang.String random(int, int, int, boolean, boolean, char[], java.util.Random);
+
+org.apache.commons.lang.CharSet
+--------------------
+< public class org.apache.commons.lang.CharSet extends java.lang.Object {
+---
+> public class org.apache.commons.lang.CharSet extends java.lang.Object implements java.io.Serializable {
+> public static final org.apache.commons.lang.CharSet EMPTY;
+> public static final org.apache.commons.lang.CharSet ASCII_ALPHA;
+> public static final org.apache.commons.lang.CharSet ASCII_ALPHA_LOWER;
+> public static final org.apache.commons.lang.CharSet ASCII_ALPHA_UPPER;
+> public static final org.apache.commons.lang.CharSet ASCII_NUMERIC;
+> protected static final java.util.Map COMMON;
+> public static org.apache.commons.lang.CharSet getInstance(java.lang.String);
+> protected org.apache.commons.lang.CharSet(java.lang.String);
+< public boolean contains(char);
+> public org.apache.commons.lang.CharRange getCharRanges()[];
+> public boolean contains(char);
+> public boolean equals(java.lang.Object);
+> public int hashCode();
+> static {};
+
+org.apache.commons.lang.CharSetUtils
+--------------------
+> public static java.lang.String keep(java.lang.String, java.lang.String);
+> public static java.lang.String keep(java.lang.String, java.lang.String[]);
+
+org.apache.commons.lang.builder.ToStringBuilder
+--------------------
+< public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object);
+< public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle);
+< public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle,java.lang.StringBuffer);
+< public static void setDefaultStyle(org.apache.commons.lang.builder.ToStringStyle);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object, boolean);
+< public org.apache.commons.lang.builder.ToStringBuilder append(long);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long);
+< public org.apache.commons.lang.builder.ToStringBuilder append(int);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int);
+< public org.apache.commons.lang.builder.ToStringBuilder append(short);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short);
+< public org.apache.commons.lang.builder.ToStringBuilder append(char);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char);
+---
+> public static java.lang.String reflectionToString(java.lang.Object, org.apache.commons.lang.builder.ToStringStyle, boolean, java.lang.Class);
+> public static void setDefaultStyle(org.apache.commons.lang.builder.ToStringStyle);
+> public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object);
+> public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle);
+> public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle,java.lang.StringBuffer);
+> public org.apache.commons.lang.builder.ToStringBuilder append(boolean);
+> public org.apache.commons.lang.builder.ToStringBuilder append(boolean[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, byte);
+---
+> public org.apache.commons.lang.builder.ToStringBuilder append(byte[]);
+> public org.apache.commons.lang.builder.ToStringBuilder append(char);
+> public org.apache.commons.lang.builder.ToStringBuilder append(char[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, double);
+---
+> public org.apache.commons.lang.builder.ToStringBuilder append(double[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, float);
+< public org.apache.commons.lang.builder.ToStringBuilder append(boolean);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[], boolean);
+< public org.apache.commons.lang.builder.ToStringBuilder append(long[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[], boolean);
+---
+> public org.apache.commons.lang.builder.ToStringBuilder append(float[]);
+> public org.apache.commons.lang.builder.ToStringBuilder append(int);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[], boolean);
+---
+> public org.apache.commons.lang.builder.ToStringBuilder append(long);
+> public org.apache.commons.lang.builder.ToStringBuilder append(long[]);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object[]);
+> public org.apache.commons.lang.builder.ToStringBuilder append(short);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[], boolean);
+< public org.apache.commons.lang.builder.ToStringBuilder append(char[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[], boolean);
+< public org.apache.commons.lang.builder.ToStringBuilder append(byte[]);
+---
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[]);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[], boolean);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, byte);
+< public org.apache.commons.lang.builder.ToStringBuilder append(double[]);
+---
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[]);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[], boolean);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, double);
+< public org.apache.commons.lang.builder.ToStringBuilder append(float[]);
+---
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, float);
+< public org.apache.commons.lang.builder.ToStringBuilder append(boolean[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[]);
+< public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[], boolean);
+---
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[]);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[], boolean);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[]);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[], boolean);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object, boolean);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[]);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[], boolean);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[]);
+> public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[], boolean);
+> public org.apache.commons.lang.builder.ToStringBuilder appendAsObjectToString(java.lang.Object);
+> public org.apache.commons.lang.builder.ToStringBuilder appendSuper(java.lang.String);
+> public org.apache.commons.lang.builder.ToStringBuilder appendToString(java.lang.String);
+> public org.apache.commons.lang.builder.ToStringStyle getStyle();
+> public java.lang.Object getObject();
+
+org.apache.commons.lang.builder.StandardToStringStyle
+--------------------
+> public boolean isUseShortClassName();
+> public void setUseShortClassName(boolean);
+> public boolean isFieldSeparatorAtStart();
+> public void setFieldSeparatorAtStart(boolean);
+> public boolean isFieldSeparatorAtEnd();
+> public void setFieldSeparatorAtEnd(boolean);
+
+org.apache.commons.lang.builder.ToStringStyle
+--------------------
+> public void appendSuper(java.lang.StringBuffer, java.lang.String);
+> public void appendToString(java.lang.StringBuffer, java.lang.String);
+> protected void removeLastFieldSeparator(java.lang.StringBuffer);
+> protected void reflectionAppendArrayDetail(java.lang.StringBuffer, java.lang.String, java.lang.Object);
+> protected boolean isUseShortClassName();
+> protected void setUseShortClassName(boolean);
+> protected boolean isFieldSeparatorAtStart();
+> protected void setFieldSeparatorAtStart(boolean);
+> protected boolean isFieldSeparatorAtEnd();
+> protected void setFieldSeparatorAtEnd(boolean);
+
+org.apache.commons.lang.builder.HashCodeBuilder
+--------------------
+> public static int reflectionHashCode(int, int, java.lang.Object, boolean, java.lang.Class);
+> public org.apache.commons.lang.builder.HashCodeBuilder appendSuper(int);
+
+org.apache.commons.lang.builder.CompareToBuilder
+--------------------
+> public static int reflectionCompare(java.lang.Object, java.lang.Object, boolean, java.lang.Class);
+> public org.apache.commons.lang.builder.CompareToBuilder appendSuper(int);
+> public org.apache.commons.lang.builder.CompareToBuilder append(java.lang.Object, java.lang.Object, java.util.Comparator);
+> public org.apache.commons.lang.builder.CompareToBuilder append(java.lang.Object[], java.lang.Object[], java.util.Comparator);
+
+org.apache.commons.lang.builder.EqualsBuilder
+--------------------
+> public static boolean reflectionEquals(java.lang.Object, java.lang.Object, boolean, java.lang.Class);
+> public org.apache.commons.lang.builder.EqualsBuilder appendSuper(boolean);
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-2.1.txt b/src/site/resources/release-notes/RELEASE-NOTES-2.1.txt
new file mode 100644
index 000000000..d208a7f6b
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-2.1.txt
@@ -0,0 +1,150 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 2.1
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 2.1 version of Apache Jakarta Commons Lang.
+Commons Lang is a set of utility functions and reusable components that
+should be of use in any Java environment.
+
+
+INCOMPATIBLE CHANGES:
+
+- The Nestable interface defines the method indexOfThrowable(Class).
+Previously the implementations checked only for a specific Class.
+Now they check for subclasses of that Class as well.
+For most situations this will be the expected behavior (i.e. it's a bug fix).
+If it causes problems, please use the ExceptionUtils.indexOfThrowable(Class) method instead.
+Note that the ExceptionUtils method is available in v1.0 and v2.0 of commons-lang and has not been changed.
+(An alternative to this is to change the public static matchSubclasses flag on NestableDelegate.
+However, we don't recommend that as a long-term solution.)
+
+- The StopWatch class has had much extra validation added.
+If your code previously relied on unusual aspects, it may no longer work.
+
+- Starting with version 2.1, Ant version 1.6.x is required to build. Copy
+junit.jar to ANT_HOME/lib. You can get JUnit from https://www.junit.org. See the developer's guide
+for more details.
+
+
+DEPRECATIONS:
+
+- The enum package has been renamed to enums for JDK 1.5 compliance.
+All functionality is identical, just the package has changed.
+This package will be removed in v3.0.
+
+- NumberUtils.stringToInt - renamed to toInt
+
+- DateUtils - four constants, MILLIS_IN_* have been deprecated as they were defined
+as int not long. The replacements are MILLIS_PER_*.
+
+
+NEW FEATURES:
+
+New:
+- Mutable package - contains basic classes that hold an Object or primitive
+and provide both get and set methods.
+- DurationFormatUtils - provides various methods for formatting durations
+- CharEncoding - definitions of constants for character encoding work
+- CharUtils - utilities for working with characters
+
+Updated:
+- ArrayUtils - many more methods, especially List-like methods
+- BooleanUtils - isTrue and isFalse methods that handle null
+- ClassUtils - primitive to wrapper class conversion methods
+- ClassUtils - class name comparator
+- IllegalClassException - extra constructor for common instanceof case
+- NotImplementedException - supports nested exceptions
+- ObjectUtils - hashcode method handling null
+- StringUtils - isAsciiPrintable to check the contents of a string
+ -- ordinalIndexOf to find the nth index of a string
+ -- various remove methods to remove parts of a string
+ -- various split methods to provide more control over splitting a string
+ -- defaultIfEmpty to default a string if null or empty
+- SystemUtils - methods to get system properties as File objects
+ -- extra constants representing system properties
+- Validate - new methods to check whether all elements in a collection are of a specific type
+- WordUtils - new methods to capitalize based on a set of specified delimiters
+
+- EqualsBuilder - now provides setter to internal state
+- ToStringStyle - new style, short prefix style
+- ReflectionToStringBuilder - more flags to control the output with regards to statics
+
+- ExceptionUtils - added indexOfType methods that check subclasses, thus leaving the existing
+indexOfThrowable method untouched (see incompatible changes section)
+
+- NumberUtils - various string to number parsing methods added
+
+- DateUtils - methods added to compare dates in various ways
+ -- method to parse a date string using multiple patterns
+- FastDateFormat - extra formatting methods that take in a millisecond long value
+ -- additional static factory methods
+- StopWatch - new methods for split behavior
+
+
+BUG FIXES:
+
+19331 General case: infinite loop: ToStringBuilder.reflectionToString
+23174 EqualsBuilder.append(Object[], Object[]) throws NPE
+23356 Make DurationFormatUtils public!
+23557 WordUtils.capitalizeFully(String str) should take a delimiters
+23683 New method for converting a primitive Class to its corresponding wrapper
+23430 Minor javadoc fixes for StringUtils.contains(String, String)
+23590 make optional parameters in FastDateFormat really optional
+24056 Documentation error in StringUtils.replace
+25227 StringEscapeUtils.unescapeHtml() doesn't handle hex entities
+25454 new StringUtils.replaceChars behaves differently from old Ch
+25560 DateUtils.truncate() is off by one hour when using a date in DST switch 'zone'
+25627 DateUtils constants should be long
+25683 Add method that validates Collection elements are a correct
+25849 Add SystemUtils methods for directory properties.
+26616 ClassCastException in Enum.equals(Object)
+26699 Tokenizer Enhancements: reset input string, static CSV
+26734 NullPointerException in EqualsBuilder.append(Object[], Object[])
+26877 Add SystemUtils.AWT_TOOLKIT and others.
+26922 public static boolean DateUtils.equals(Date dt1, Date dt2)
+27592 WordUtils capitalize improvement
+27876 ReflectionToStringBuilder.toString(null) throws exception by design
+27877 Make ClassUtils methods null-safe and not throw an IAE.
+28468 StringUtils.defaultString: Documentation error
+28554 Add hashCode-support to class ObjectUtils
+29082 Enhancement of ExceptionUtils.CAUSE_METHOD_NAMES
+29149 StringEscapeUtils.unescapeHtml() doesn't handle an empty entity
+29294 lang.math.Fraction class deficiencies
+29673 ExceptionUtils: new getCause() methodname (for tomcat)
+29794 Add convenience format(long) methods to FastDateForma
+30328 HashCodeBuilder does not use the same values as Boolean (fixed as documentation)
+30334 New class proposal: CharacterEncoding
+30674 parseDate class from HttpClient's DateParser class
+30815 ArrayUtils.isEquals() throws ClassCastException when array1
+30929 Nestable.indexOfThrowable(Class) uses Class.equals() to match
+31395 DateUtils.truncate oddity at the far end of the Date spectrum
+31478 Compile error with JDK 5 "enum" is a keyword
+31572 o.a.c.lang.enum.ValuedEnum: 'enum' is a keyword in JDK 1.5.0
+31933 ToStringStyle setArrayEnd handled null incorrectly
+32133 SystemUtils fails init on HP-UX
+32198 Error in Javadoc for StringUtils.chomp(String, String)
+32625 Can't subclass EqualsBuilder because isEquals is private
+33067 EqualsBuilder.append(Object[], Object[]) crashes with a NullPointerException if an element of the first array is null
+33069 EqualsBuilder.append(Object[], Object[]) incorrectly checks that rhs[i] is instance of lhs[i]'s class
+33574 unbalanced ReflectionToStringBuilder
+33737 ExceptionUtils.addCauseMethodName(String) does not check for duplicates.
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-2.2.txt b/src/site/resources/release-notes/RELEASE-NOTES-2.2.txt
new file mode 100644
index 000000000..cec550f35
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-2.2.txt
@@ -0,0 +1,127 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 2.2
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 2.2 version of Apache Jakarta Commons Lang.
+Commons Lang is a set of utility functions and reusable components that
+should be of use in any Java environment.
+
+INCOMPATIBLE CHANGES WITH VERSION 2.1:
+
+- None
+
+ADDITIONAL INCOMPATIBLE CHANGES WITH VERSION 2.0:
+
+- The Nestable interface defines the method indexOfThrowable(Class).
+Previously the implementations checked only for a specific Class.
+Now they check for subclasses of that Class as well.
+For most situations this will be the expected behavior (i.e. it's a bug fix).
+If it causes problems, please use the ExceptionUtils.indexOfThrowable(Class) method instead.
+Note that the ExceptionUtils method is available in v1.0 and v2.0 of commons-lang and has not been changed.
+(An alternative to this is to change the public static matchSubclasses flag on NestableDelegate.
+However, we don't recommend that as a long-term solution.)
+
+- The StopWatch class has had much extra validation added.
+If your code previously relied on unusual aspects, it may no longer work.
+
+- Starting with version 2.1, Ant version 1.6.x is required to build. Copy
+junit.jar to ANT_HOME/lib. You can get JUnit from https://www.junit.org. See the developer's guide
+for more details.
+
+DEPRECATIONS FROM 2.1 to 2.2:
+
+- None
+
+DEPRECATIONS FROM 2.0 to 2.1:
+
+- The enum package has been renamed to enums for JDK 1.5 compliance.
+All functionality is identical, just the package has changed.
+This package will be removed in v3.0.
+
+- NumberUtils.stringToInt - renamed to toInt
+
+- DateUtils - four constants, MILLIS_IN_* have been deprecated as they were defined
+as int not long. The replacements are MILLIS_PER_*.
+
+
+BUG FIXES IN 2.2:
+
+LANG-2 javadoc example for StringUtils.splitByWholeSeparator incorrect
+LANG-3 PADDING array in StringUtils overflows on '\uffff'
+LANG-10 [patch] ClassUtils.primitiveToWrapper and Void
+LANG-21 escapeXML() -> Not escaping low characters
+LANG-25 DurationFormatUtils.formatDurationISO() javadoc is missing T in duration string between date and time part
+LANG-37 unit test for org.apache.commons.lang.text.StrBuilder
+LANG-42 EqualsBuilder.append(Object[], Object[]) crashes with a NullPointerException if an element of the first array is null
+LANG-45 StrBuilderTest#testReplaceStringString fails.
+LANG-50 Replace Clover with Cobertura
+LANG-59 DateUtils.truncate method is buggy when dealing with DST switching hours
+LANG-100 RandomStringUtils.random() family of methods create invalid unicode sequences
+LANG-105 ExceptionUtils goes into infinite loop in getThrowables is throwable.getCause() == throwable
+LANG-106 StringUtils#getLevenshteinDistance() performance is suboptimal
+LANG-112 Wrong length check in StrTokenizer.StringMatcher
+LANG-117 FastDateFormat: wrong format for date "01.01.1000"
+LANG-122 EscapeUtil.escapeHtml() should clarify that it does not escape ' chars to &apos;
+LANG-123 Unclear javadoc for DateUtils.iterator()
+LANG-127 Minor tweak to fix of bug # 26616
+LANG-130 Memory "leak" in StringUtils
+LANG-140 DurationFormatUtils.formatPeriod() returns the wrong result
+LANG-141 Fraction.toProperString() returns -1/1 for -1
+LANG-148 Performance modifications on StringUtils.replace
+LANG-150 StringEscapeUtils.unescapeHtml skips first entity after standalone ampersand
+LANG-152 DurationFormatUtils.formatDurationWords "11 <unit>s" gets converted to "11 <unit>"
+LANG-259 ValuedEnum.compareTo(Object other) not typesafe - it easily could be...
+LANG-261 Error in an example in the javadoc of the StringUtils.splitPreserveAllTokens() method
+LANG-264 ToStringBuilder/HashCodeBuilder javadoc code examples
+LANG-271 LocaleUtils test fails under Mustang
+LANG-272 Minor build and checkstyle changes
+LANG-277 Javadoc errors on StringUtils.splitPreserveAllTokens(String, char)
+LANG-278 javadoc for StringUtils.removeEnd is incorrect
+
+IMPROVEMENTS IN 2.2:
+
+LANG-159 Add WordUtils.getInitials(String)
+LANG-161 Add methods and tests to StrBuilder
+LANG-162 replace() length calculation improvement
+LANG-165 parseDate with TimeZone
+LANG-166 New interpolation features
+LANG-169 Implementation of escape/unescapeHtml methods with Writer
+LANG-176 CompareToBuilder excludeFields for reflection method
+LANG-186 Request for MutableBoolean implementation
+LANG-194 add generic add method to DateUtils
+LANG-198 New method for EqualsBuilder
+LANG-212 New ExceptionUtils method setCause()
+LANG-216 Provides a Class.getPublicMethod which returns public invocable Method
+LANG-217 Add Mutable<Type> to<Type>() methods.
+LANG-220 Tokenizer Enhancements: reset input string, static CSV/TSV factories
+LANG-226 Using ReflectionToStringBuilder and excluding secure fields
+LANG-242 Trivial cleanup of javadoc in various files
+LANG-246 CompositeFormat
+LANG-250 Performance boost for RandomStringUtils
+LANG-254 Enhanced Class.forName version
+LANG-260 StringEscapeUtils should expose escape*() methods taking Writer argument
+LANG-263 Add StringUtils.containsIgnoreCase(...)
+LANG-267 Support char array converters on ArrayUtils
+LANG-270 minor javadoc improvements for StringUtils.stripXxx() methods
+ New ExceptionUtils methods getMessage/getRootCauseMessage
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-2.3.txt b/src/site/resources/release-notes/RELEASE-NOTES-2.3.txt
new file mode 100644
index 000000000..04697723b
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-2.3.txt
@@ -0,0 +1,105 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 2.3
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 2.3 version of Apache
+Jakarta Commons Lang.
+Commons Lang is a set of utility functions and reusable components that
+should be of use in any Java environment.
+
+INCOMPATIBLE CHANGES WITH VERSION 2.2:
+
+- Calling stop on a suspended StopWatch will no longer change the underlying time.
+ It's very unlikely anyone was relying on that bug as a feature.
+
+ADDITIONAL INCOMPATIBLE CHANGES WITH VERSION 2.0:
+
+- The Nestable interface defines the method indexOfThrowable(Class).
+Previously the implementations checked only for a specific Class.
+Now they check for subclasses of that Class as well.
+For most situations this will be the expected behavior (i.e. it's a bug fix).
+If it causes problems, please use the ExceptionUtils.indexOfThrowable(Class) method instead.
+Note that the ExceptionUtils method is available in v1.0 and v2.0 of commons-lang and has not been changed.
+(An alternative to this is to change the public static matchSubclasses flag on NestableDelegate.
+However, we don't recommend that as a long-term solution.)
+
+- The StopWatch class has had much extra validation added.
+If your code previously relied on unusual aspects, it may no longer work.
+
+- Starting with version 2.1, Ant version 1.6.x is required to build. Copy
+junit.jar to ANT_HOME/lib. You can get JUnit from https://www.junit.org. See the developer's guide
+for more details.
+
+DEPRECATIONS FROM 2.2 to 2.3:
+
+- None
+
+DEPRECATIONS FROM 2.1 to 2.2:
+
+- None
+
+DEPRECATIONS FROM 2.0 to 2.1:
+
+- The enum package has been renamed to enums for JDK 1.5 compliance.
+All functionality is identical, just the package has changed.
+This package will be removed in v3.0.
+
+- NumberUtils.stringToInt - renamed to toInt
+
+- DateUtils - four constants, MILLIS_IN_* have been deprecated as they were defined
+as int not long. The replacements are MILLIS_PER_*.
+
+
+BUG FIXES IN 2.3:
+
+ * [LANG-69 ] - ToStringBuilder throws StackOverflowError when an Object cycle exists
+ * [LANG-102] - Refactor Entities methods
+ * [LANG-153] - Can't XMLDecode an Enum
+ * [LANG-262] - Use of enum prevents a classloader from being garbage collected resulting in out of memory exceptions.
+ * [LANG-279] - HashCodeBuilder throws java.lang.StackOverflowError when an object contains a cycle.
+ * [LANG-281] - DurationFormatUtils returns wrong result
+ * [LANG-286] - Serialization - not backwards compatible
+ * [LANG-292] - unescapeXml("&12345678;") should be "&12345678;"
+ * [LANG-294] - StrBuilder.replaceAll and StrBuilder.deleteAll can throw ArrayIndexOutOfBoundsException.
+ * [LANG-295] - StrBuilder contains usages of thisBuf.length when they should use size
+ * [LANG-299] - Bug in method appendFixedWidthPadRight of class StrBuilder causes an ArrayIndexOutOfBoundsException
+ * [LANG-300] - NumberUtils.createNumber throws NumberFormatException for one digit long
+ * [LANG-303] - FastDateFormat.mRules is not transient or serializable
+ * [LANG-304] - NullPointerException in isAvailableLocale(Locale)
+ * [LANG-313] - Wrong behavior of Entities.unescape
+ * [LANG-315] - StopWatch: suspend() acts as split(), if followed by stop()
+
+IMPROVEMENTS IN 2.3:
+
+ * [LANG-258] - Enum Javadoc
+ * [LANG-266] - Wish for StringUtils.join(Collection, *)
+ * [LANG-268] - StringUtils.join should allow you to pass a range for it (so it only joins a part of the array)
+ * [LANG-275] - StringUtils substringsBetween
+ * [LANG-282] - Create more tests to test out the +=31 replacement code in DurationFormatUtils.
+ * [LANG-287] - Optimize StringEscapeUtils.unescapeXml(String)
+ * [LANG-289] - NumberUtils.max(byte[]) and NumberUtils.min(byte[]) are missing
+ * [LANG-291] - Null-safe comparison methods for finding the most recent / least recent dates.
+ * [LANG-306] - StrBuilder appendln/appendAll/appendSeparator
+ * [LANG-310] - BooleanUtils isNotTrue/isNotFalse
+ * [LANG-314] - Tests fail to pass when building with Maven 2
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-2.4.txt b/src/site/resources/release-notes/RELEASE-NOTES-2.4.txt
new file mode 100644
index 000000000..769c640f4
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-2.4.txt
@@ -0,0 +1,139 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 2.4
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 2.4 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any Java environment.
+
+Lang 2.4 no longer attempts to target the Java 1.1 environment and now targets Java 1.2. While previous versions
+were built for 1.1, some parts were using methods that were only available in 1.2, and the Enum class had
+become dependent on Java 1.3.
+
+INCOMPATIBLE CHANGES WITH VERSION 2.3:
+
+- None
+
+INCOMPATIBLE CHANGES WITH VERSION 2.2:
+
+- Calling stop on a suspended StopWatch will no longer change the underlying time.
+ It's very unlikely anyone was relying on that bug as a feature.
+
+ADDITIONAL INCOMPATIBLE CHANGES WITH VERSION 2.0:
+
+- The Nestable interface defines the method indexOfThrowable(Class).
+Previously the implementations checked only for a specific Class.
+Now they check for subclasses of that Class as well.
+For most situations this will be the expected behavior (i.e. it's a bug fix).
+If it causes problems, please use the ExceptionUtils.indexOfThrowable(Class) method instead.
+Note that the ExceptionUtils method is available in v1.0 and v2.0 of commons-lang and has not been changed.
+(An alternative to this is to change the public static matchSubclasses flag on NestableDelegate.
+However, we don't recommend that as a long-term solution.)
+
+- The StopWatch class has had much extra validation added.
+If your code previously relied on unusual aspects, it may no longer work.
+
+- Starting with version 2.1, Ant version 1.6.x is required to build. Copy
+junit.jar to ANT_HOME/lib. You can get JUnit from https://www.junit.org. See the developer's guide
+for more details.
+
+DEPRECATIONS FROM 2.3 to 2.4:
+
+- ObjectUtils.appendIdentityToString(StringBuffer, Object) - has very odd semantics, use
+ ObjectUtils.identityToString(StringBuffer, Object) instead.
+
+- public static java.util.Date add(java.util.Date, int, int) - it is not intended for this
+ method to be public. Please let us know if you use this.
+
+DEPRECATIONS FROM 2.2 to 2.3:
+
+- None
+
+DEPRECATIONS FROM 2.1 to 2.2:
+
+- None
+
+DEPRECATIONS FROM 2.0 to 2.1:
+
+- The enum package has been renamed to enums for JDK 1.5 compliance.
+All functionality is identical, just the package has changed.
+This package will be removed in v3.0.
+
+- NumberUtils.stringToInt - renamed to toInt
+
+- DateUtils - four constants, MILLIS_IN_* have been deprecated as they were defined
+as int not long. The replacements are MILLIS_PER_*.
+
+
+BUG FIXES IN 2.4:
+
+ * [LANG-76 ] - EnumUtils.getEnum() doesn't work well in 1.5
+ * [LANG-328] - LocaleUtils.toLocale() rejects strings with only language+variant
+ * [LANG-334] - Enum is not thread-safe
+ * [LANG-346] - Dates.round() behaves incorrectly for minutes and seconds
+ * [LANG-349] - Deadlock using ReflectionToStringBuilder
+ * [LANG-353] - Javadoc Example for EqualsBuilder is questionable
+ * [LANG-360] - Why does appendIdentityToString return null?
+ * [LANG-361] - BooleanUtils toBooleanObject javadoc does not match implementation
+ * [LANG-363] - StringEscapeUtils..escapeJavaScript() method did not escape '/' into '\/', it will make IE render page incorrectly
+ * [LANG-364] - Documentation bug for ignoreEmptyTokens accessors in StrTokenizer
+ * [LANG-365] - BooleanUtils.toBoolean() - invalid drop-thru in case statement causes StringIndexOutOfBoundsException
+ * [LANG-367] - FastDateFormat thread safety
+ * [LANG-368] - FastDateFormat getDateInstance() and getDateTimeInstance() assume Locale.getDefault() won't change
+ * [LANG-369] - ExceptionUtils not thread-safe
+ * [LANG-372] - ToStringBuilder: MULTI_LINE_STYLE does not print anything from appendToString methods.
+ * [LANG-380] - infinite loop in Fraction.reduce when numerator == 0
+ * [LANG-381] - NumberUtils.min(floatArray) returns wrong value if floatArray[0] happens to be Float.NaN
+ * [LANG-385] - https://commons.apache.org/proper/commons-lang/developerguide.html "Building" section is incorrect and incomplete
+ * [LANG-393] - EqualsBuilder don't compare BigDecimals correctly
+ * [LANG-399] - Javadoc bugs - cannot find object
+ * [LANG-410] - Ambiguous / confusing names in StringUtils replace* methods
+ * [LANG-412] - StrBuilder appendFixedWidth does not handle nulls
+ * [LANG-414] - DateUtils.round() often fails
+
+IMPROVEMENTS IN 2.4:
+
+ * [LANG-180] - adding a StringUtils.replace method that takes an array or List of replacement strings
+ * [LANG-192] - Split camel case strings
+ * [LANG-257] - Add new splitByWholeSeparatorPreserveAllTokens() methods to StringUtils
+ * [LANG-269] - Shouldn't Commons Lang's StringUtils have a "common" string method?
+ * [LANG-298] - ClassUtils.getShortClassName and ClassUtils.getPackageName and class of array
+ * [LANG-321] - Add toArray() method to IntRange and LongRange classes
+ * [LANG-322] - ClassUtils.getShortClassName(String) inefficient
+ * [LANG-326] - StringUtils: startsWith / endsWith / startsWithIgnoreCase / endsWithIgnoreCase / removeStartIgnoreCase / removeEndIgnoreCase methods
+ * [LANG-329] - Pointless synchronized in ThreadLocal.initialValue should be removed
+ * [LANG-333] - ArrayUtils.toClass
+ * [LANG-337] - Utility class constructor javadocs should acknowledge that they may sometimes be used, e.g. with Velocity.
+ * [LANG-338] - truncateNicely method which avoids truncating in the middle of a word
+ * [LANG-345] - Optimize HashCodeBuilder.append(Object)
+ * [LANG-351] - Extension to ClassUtils: Obtain the primitive class from a wrapper
+ * [LANG-356] - Add getStartTime to StopWatch
+ * [LANG-362] - Add ExtendedMessageFormat to org.apache.commons.lang.text
+ * [LANG-371] - ToStringStyle javadoc should show examples of styles
+ * [LANG-374] - Add escaping for CSV columns to StringEscapeUtils
+ * [LANG-375] - add SystemUtils.IS_OS_WINDOWS_VISTA field
+ * [LANG-379] - Calculating A date fragment in any time-unit
+ * [LANG-383] - Adding functionality to DateUtils to allow direct setting of various fields.
+ * [LANG-402] - OSGi-ify Lang
+ * [LANG-404] - Add Calendar flavour format methods to DateFormatUtils
+ * [LANG-407] - StringUtils.length(String) returns null-safe length
+ * [LANG-413] - Memory usage improvement for StringUtils#getLevenshteinDistance()
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-2.5.txt b/src/site/resources/release-notes/RELEASE-NOTES-2.5.txt
new file mode 100644
index 000000000..c489ae479
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-2.5.txt
@@ -0,0 +1,98 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 2.5
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 2.5 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any Java environment.
+
+
+COMPATIBILITY WITH 2.4
+======================
+Lang 2.5 is binary compatible release with Lang 2.4, containing bug fixes and small enhancements.
+
+Lang 2.5 requires a minimum of JDK 1.3.
+
+
+IMPROVEMENTS IN 2.5
+===================
+
+ * [LANG-583] - ArrayUtils - add isNotEmpty() methods
+ * [LANG-534] - ArrayUtils - add nullToEmpty() methods
+ * [LANG-454] - CharRange - provide an iterator that lets you walk the chars in the range
+ * [LANG-514] - CharRange - add more readable static builder methods
+ * [ ] - ClassUtils - new isAssignable() methods with autoboxing
+ * [LANG-535] - ClassUtils - add support to getShortClassName and getPackageName for arrays
+ * [LANG-434] - DateUtils - add ceiling() method
+ * [LANG-486] - DateUtils - add parseDateStrictly() method
+ * [LANG-466] - EqualsBuilder - add reset() method
+ * [LANG-461] - NumberUtils - add toByte() and toShort() methods
+ * [LANG-522] - Mutable numbers - add string constructors
+ * [ ] - MutableBoolean - add toBoolean(), isTrue() and isFalse() methods
+ * [LANG-422] - StrBuilder - add appendSeparator() methods with an alternative default separator if the StrBuilder is currently empty
+ * [LANG-555] - SystemUtils - add IS_OS_WINDOWS_7 constant
+ * [LANG-554] - SystemUtils - add IS_JAVA_1_7 constant for JDK 1.7
+ * [LANG-405] - StringUtils - add abbreviateMiddle() method
+ * [LANG-569] - StringUtils - add indexOfIgnoreCase() and lastIndexOfIgnoreCase() methods
+ * [LANG-471] - StringUtils - add isAllUpperCase() and isAllLowerCase() methods
+ * [LANG-469] - StringUtils - add lastOrdinalIndexOf() method to complement the existing ordinalIndexOf() method
+ * [LANG-438] - StringUtils - add repeat() method
+ * [LANG-445] - StringUtils - add startsWithAny() method
+ * [LANG-430] - StringUtils - add upperCase(String, Locale) and lowerCase(String, Locale) methods
+ * [LANG-416] - New Reflection package containing ConstructorUtils, FieldUtils, MemberUtils and MethodUtils
+
+BUG FIXES IN 2.5
+================
+
+ * [LANG-494] - CharSet - Synchronizing the COMMON Map so that getInstance doesn't miss a put from a subclass in another thread
+ * [LANG-500] - ClassUtils - improving performance of getAllInterfaces
+ * [LANG-587] - ClassUtils - toClass() throws NullPointerException on null array element
+ * [LANG-530] - DateUtils - Fix parseDate() cannot parse ISO8601 dates produced by FastDateFormat
+ * [LANG-440] - DateUtils - round() doesn't work correct for Calendar.AM_PM
+ * [LANG-443] - DateUtils - improve tests
+ * [LANG-204] - Entities - multithreaded initialization
+ * [LANG-506] - Entities - missing final modifiers; thread-safety issues
+ * [LANG-76] - EnumUtils - getEnum() doesn't work well in 1.5+
+ * [LANG-584] - ExceptionUtils - use immutable lock target
+ * [LANG-477] - ExtendedMessageFormat - OutOfMemory with a pattern containing single quotes
+ * [LANG-538] - FastDateFormat - call getTime() on a calendar to ensure timezone is in the right state
+ * [LANG-547] - FastDateFormat - Remove unused field
+ * [LANG-511] - LocaleUtils - initialization of available locales can be deferred
+ * [LANG-457] - NumberUtils - createNumber() throws a StringIndexOutOfBoundsException for "l"
+ * [LANG-521] - NumberUtils - isNumber(String) and createNumber(String) both modified to support '2.'
+ * [LANG-432] - StringUtils - improve handling of case-insensitive Strings
+ * [LANG-552] - StringUtils - replaceEach() no longer NPEs when null appears in the last String[]
+ * [LANG-460] - StringUtils - correct Javadocs for startsWith() and startsWithIgnoreCase()
+ * [LANG-421] - StringEscapeUtils - escapeJava() escapes '/' characters
+ * [LANG-450] - StringEscapeUtils - change escapeJavaStyleString() to throw UnhandledException instead swallowing IOException
+ * [LANG-419] - WordUtils - fix StringIndexOutOfBoundsException when lower is greater than the String length
+ * [LANG-523] - StrBuilder - Performance improvement by doubling the size of the String in ensureCapacity
+ * [LANG-575] - Compare, Equals and HashCode builders - use ArrayUtils to avoid creating a temporary List
+ * [LANG-467] - EqualsBuilder - removing the special handling of BigDecimal (LANG-393) to use compareTo
+ * [LANG-574] - HashCodeBuilder - Performance improvement: check for isArray to short-circuit the 9 instanceof checks
+ * [LANG-520] - HashCodeBuilder - Changing the hashCode() method to return toHashCode()
+ * [LANG-459] - HashCodeBuilder - reflectionHashCode() can generate incorrect hashcodes
+ * [LANG-586] - HashCodeBuilder and ToStringStyle - use of ThreadLocal causes memory leaks in container environments
+ * [LANG-487] - ToStringBuilder - make default style thread-safe
+ * [LANG-472] - RandomUtils - nextLong() always produces even numbers
+ * [LANG-592] - RandomUtils - RandomUtils tests are failing frequently
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-2.6.txt b/src/site/resources/release-notes/RELEASE-NOTES-2.6.txt
new file mode 100644
index 000000000..3f4674830
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-2.6.txt
@@ -0,0 +1,74 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 2.6
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 2.6 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any Java environment.
+
+
+COMPATIBILITY WITH 2.5
+======================
+Lang 2.6 is binary compatible release with Lang 2.5, containing bug fixes and small enhancements.
+
+Lang 2.6 requires a minimum of JDK 1.3.
+
+
+IMPROVEMENTS IN 2.6
+===================
+
+ * [LANG-633] - BooleanUtils: use same optimization in toBooleanObject(String) as in toBoolean(String)
+ * [LANG-599] - ClassUtils: allow Dots as Inner Class Separators in getClass()
+ * [LANG-594] - DateUtils: equal and compare functions up to most significant field
+ * [LANG-632] - DateUtils: provide a Date to Calendar convenience method
+ * [LANG-576] - ObjectUtils: add clone methods to ObjectUtils
+ * [LANG-667] - ObjectUtils: add a Null-safe compare() method
+ * [LANG-670] - ObjectUtils: add notEqual() method
+ * [LANG-302] - StrBuilder: implement clone() method
+ * [LANG-640] - StringUtils: add a normalizeSpace() method
+ * [LANG-614] - StringUtils: add endsWithAny() method
+ * [LANG-655] - StringUtils: add defaultIfBlank() method
+ * [LANG-596] - StrSubstitutor: add a replace(String, Properties) variant
+ * [LANG-482] - StrSubstitutor: support substitution in variable names
+ * [LANG-669] - Use StrBuilder instead of StringBuffer to improve performance where sync. is not an issue
+
+BUG FIXES IN 2.6
+================
+
+ * [LANG-629] - CharSet: make the underlying set synchronized
+ * [LANG-635] - CompareToBuilder: fix passing along compareTransients to the reflectionCompare method
+ * [LANG-636] - ExtendedMessageFormat doesn't override equals(Object)
+ * [LANG-645] - FastDateFormat: fix to properly include the locale when formatting a Date
+ * [LANG-638] - NumberUtils: createNumber() throws a StringIndexOutOfBoundsException when argument containing "e" and "E" is passed in
+ * [LANG-607] - StringUtils methods do not handle Unicode 2.0+ supplementary characters correctly
+ * [LANG-624] - SystemUtils: getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+ * [BEANUTILS-381] - MemberUtils: getMatchingAccessibleMethod does not correctly handle inheritance and method overloading
+
+OTHER CHANGES IN 2.6
+====================
+
+ * [LANG-600] - Javadoc is incorrect for lastIndexOf() method
+ * [LANG-628] - Javadoc for HashCodeBuilder.append(boolean) does not match implementation
+ * [LANG-643] - Javadoc StringUtils.left() claims to throw an exception on negative length, but doesn't
+ * [LANG-370] - Javadoc - document thread safety
+ * [LANG-623] - Test for StringUtils replaceChars() icelandic characters
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.0.1.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.0.1.txt
new file mode 100644
index 000000000..0aa1ae561
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.0.1.txt
@@ -0,0 +1,57 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 3.0.1
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.0.1 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 and onwards now targets Java 5.0, making use of features that arrived with Java 5.0 such as generics,
+variable arguments, autoboxing, concurrency and formatted output.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+CHANGES IN 3.0.1
+================
+
+ [LANG-686] Improve exception message when StringUtils.replaceEachRepeatedly detects recursion
+ [LANG-717] Specify source encoding for Ant build
+ [LANG-721] Complement ArrayUtils.addAll() variants with by-index and by-value removal methods
+ [LANG-726] Add Range<T> Range<T>.intersectionWith(Range<T>)
+ [LANG-723] Add mode and median Comparable... methods to ObjectUtils
+ [LANG-722] Add BooleanUtils.and + or varargs methods
+ [LANG-730] EnumSet -> bit vector
+ [LANG-735] Deprecate CharUtils.toCharacterObject(char) in favor of java.lang.Character.valueOf(char)
+ [LANG-737] Missing method getRawMessage for ContextedException and ContextedRuntimeException
+
+BUG FIXES IN 3.0.1
+==================
+
+ [LANG-626] SerializationUtils.clone: Fallback to context classloader if class not found in current classloader
+ [LANG-727] ToStringBuilderTest.testReflectionHierarchyArrayList fails with IBM JDK 6
+ [LANG-720] StringEscapeUtils.escapeXml(input) wrong when input contains characters in Supplementary Planes
+ [LANG-708] StringEscapeUtils.escapeEcmaScript from lang3 cuts off long unicode string
+ [LANG-734] The CHAR_ARRAY cache in CharUtils duplicates the cache in java.lang.Character
+ [LANG-738] Use internal Java's Number caches instead creating new objects
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.0.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.0.txt
new file mode 100644
index 000000000..b6b0e13b0
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.0.txt
@@ -0,0 +1,170 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 3.0
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.0 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 now targets Java 5.0, making use of features that arrived with Java 5.0 such as generics,
+variable arguments, autoboxing, concurrency and formatted output.
+
+For the latest advice on upgrading, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+ADDITIONS IN 3.0
+================
+
+ [LANG-276] MutableBigDecimal and MutableBigInteger.
+ [LANG-285] Wish : method unaccent.
+ [LANG-358] ObjectUtils.coalesce.
+ [LANG-386] LeftOf/RightOfNumber in Range convenience methods necessary.
+ [LANG-435] Add ClassUtils.isAssignable() variants with autoboxing.
+ [LANG-444] StringUtils.emptyToNull.
+ [LANG-482] Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+ [LANG-482] StrSubstitutor now supports substitution in variable names.
+ [LANG-496] A generic implementation of the Lazy initialization pattern.
+ [LANG-497] Addition of ContextedException and ContextedRuntimeException.
+ [LANG-498] Add StringEscapeUtils.escapeText() methods.
+ [LANG-499] Add support for the handling of ExecutionExceptions.
+ [LANG-501] Add support for background initialization.
+ [LANG-529] Add a concurrent package.
+ [LANG-533] Validate: support for validating blank strings.
+ [LANG-537] Add ArrayUtils.toArray to create generic arrays.
+ [LANG-545] Add ability to create a Future for a constant.
+ [LANG-546] Add methods to Validate to check whether the index is valid for the array/list/string.
+ [LANG-553] Add TypeUtils class to provide utility code for working with generic types.
+ [LANG-559] Added isAssignableFrom and isInstanceOf validation methods.
+ [LANG-559] Added validState validation method.
+ [LANG-560] New TimedSemaphore class.
+ [LANG-582] Provide an implementation of the ThreadFactory interface.
+ [LANG-588] Create a basic Pair<L, R> class.
+ [LANG-594] DateUtils equal & compare functions up to most significant field.
+ [LANG-601] Add Builder Interface / Update Builders to Implement It.
+ [LANG-609] Support lazy initialization using atomic variables
+ [LANG-610] Extend exception handling in ConcurrentUtils to runtime exceptions.
+ [LANG-614] StringUtils.endsWithAny method
+ [LANG-640] Add normalizeSpace to StringUtils
+ [LANG-644] Provide documentation about the new concurrent package
+ [LANG-649] BooleanUtils.toBooleanObject to support single character input
+ [LANG-651] Add AnnotationUtils
+ [LANG-653] Provide a very basic ConcurrentInitializer implementation
+ [LANG-655] Add StringUtils.defaultIfBlank()
+ [LANG-667] Add a Null-safe compare() method to ObjectUtils
+ [LANG-676] Documented potential NPE if auto-boxing occurs for some BooleanUtils methods
+ [LANG-678] Add support for ConcurrentMap.putIfAbsent()
+ [LANG-692] Add hashCodeMulti varargs method
+ [LANG-697] Add FormattableUtils class
+ [LANG-684] Levenshtein Distance Within a Given Threshold
+
+REMOVALS IN 3.0
+===============
+
+ [LANG-438] Remove @deprecateds.
+ [LANG-492] Remove code handled now by the JDK.
+ [LANG-493] Remove code that does not hold enough value to remain.
+ [LANG-590] Remove JDK 1.2/1.3 bug handling in StringUtils.indexOf(String, String, int).
+ [LANG-673] WordUtils.abbreviate() removed
+ [LANG-691] Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS IN 3.0
+===================
+
+ [LANG-290] EnumUtils for JDK 5.0.
+ [LANG-336] Finally start using generics.
+ [LANG-355] StrBuilder should implement CharSequence and Appendable.
+ [LANG-396] Investigate for vararg usages.
+ [LANG-424] Improve Javadoc for StringUtils class.
+ [LANG-458] Refactor Validate.java to eliminate code redundancy.
+ [LANG-479] Document where in SVN trunk is.
+ [LANG-504] bring ArrayUtils.isEmpty to the generics world.
+ [LANG-505] Rewrite StringEscapeUtils.
+ [LANG-507] StringEscapeUtils.unescapeJava should support \u+ notation.
+ [LANG-510] Convert StringUtils API to take CharSequence.
+ [LANG-513] Better EnumUtils.
+ [LANG-528] Mutable classes should implement an appropriately typed Mutable interface.
+ [LANG-539] Compile commons.lang for CDC 1.1/Foundation 1.1.
+ [LANG-540] Make NumericEntityEscaper immutable.
+ [LANG-541] Replace StringBuffer with StringBuilder.
+ [LANG-548] Use Iterable on API instead of Collection.
+ [LANG-551] Replace Range classes with generic version.
+ [LANG-562] Change Maven groupId.
+ [LANG-563] Change Java package name.
+ [LANG-570] Do the test cases really still require main() and suite() methods?.
+ [LANG-579] Add new Validate methods.
+ [LANG-599] ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+ [LANG-605] DefaultExceptionContext overwrites values in recursive situations.
+ [LANG-668] Change ObjectUtils min() & max() functions to use varargs rather than just two parameters
+ [LANG-681] Push down WordUtils to "text" sub-package.
+ [LANG-711] Add includeantruntime=false to javac targets to quell warnings in ant 1.8.1 and better (and modest performance gain).
+ [LANG-713] Increase test coverage of FieldUtils read methods and tweak javadoc.
+ [LANG-718] build.xml Java 1.5+ updates.
+
+BUG FIXES IN 3.0
+================
+
+ [LANG-11] Depend on JDK 1.5+.
+ [LANG-302] StrBuilder does not implement clone().
+ [LANG-339] StringEscapeUtils.escapeHtml() escapes multibyte characters like Chinese, Japanese, etc.
+ [LANG-369] ExceptionUtils not thread-safe.
+ [LANG-418] Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+ [LANG-428] StringUtils.isAlpha, isAlphanumeric and isNumeric now return false for ""
+ [LANG-439] StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+ [LANG-448] Lower Ascii Characters don't get encoded by Entities.java.
+ [LANG-468] JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+ [LANG-474] Fixes for thread safety.
+ [LANG-478] StopWatch does not resist to system time changes.
+ [LANG-480] StringEscapeUtils.escapeHtml incorrectly converts unicode characters above U+00FFFF into 2 characters.
+ [LANG-481] Possible race-conditions in hashCode of the range classes.
+ [LANG-564] Improve StrLookup API documentation.
+ [LANG-568] @SuppressWarnings("unchecked") is used too generally.
+ [LANG-571] ArrayUtils.add(T[] array, T element) can create unexpected ClassCastException.
+ [LANG-585] exception.DefaultExceptionContext.getFormattedExceptionMessage catches Throwable.
+ [LANG-596] StrSubstitutor should also handle the default properties of a java.util.Properties class
+ [LANG-600] Javadoc is incorrect for public static int lastIndexOf(String str, String searchStr).
+ [LANG-602] ContextedRuntimeException no longer an 'unchecked' exception.
+ [LANG-606] EqualsBuilder causes StackOverflowException.
+ [LANG-608] Some StringUtils methods should take an int character instead of char to use String API features.
+ [LANG-617] StringEscapeUtils.escapeXML() can't process UTF-16 supplementary characters
+ [LANG-624] SystemUtils.getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+ [LANG-629] Charset may not be threadsafe, because the HashSet is not synch.
+ [LANG-638] NumberUtils createNumber throws a StringIndexOutOfBoundsException when argument containing "e" and "E" is passed in
+ [LANG-643] Javadoc StringUtils.left() claims to throw on negative len, but doesn't
+ [LANG-645] FastDateFormat.format() outputs incorrect week of year because locale isn't respected
+ [LANG-646] StringEscapeUtils.unescapeJava doesn't handle octal escapes and Unicode with extra u
+ [LANG-656] Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+ [LANG-658] Some entities like &Ouml; are not matched properly against its ISO8859-1 representation
+ [LANG-659] EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212 ISOtech
+ [LANG-66] StringEscaper.escapeXml() escapes characters > 0x7f.
+ [LANG-662] org.apache.commons.lang3.math.Fraction does not reduce (Integer.MIN_VALUE, 2^k)
+ [LANG-663] org.apache.commons.lang3.math.Fraction does not always succeed in multiplyBy and divideBy
+ [LANG-664] NumberUtils.isNumber(String) is not right when the String is "1.1L"
+ [LANG-672] Doc bug in DateUtils#ceiling
+ [LANG-677] DateUtils.isSameLocalTime compares using 12-hour clock and not 24-hour
+ [LANG-685] EqualsBuilder synchronizes on HashCodeBuilder.
+ [LANG-703] StringUtils.join throws NPE when toString returns null for one of objects in collection
+ [LANG-710] StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+ [LANG-714] StringUtils doc/comment spelling fixes.
+ [LANG-715] CharSetUtils.squeeze() speedup.
+ [LANG-716] swapCase and *capitalize speedups.
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.1.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.1.txt
new file mode 100644
index 000000000..c20d3cc96
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.1.txt
@@ -0,0 +1,55 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Commons Lang Package
+ Version 3.1
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.1 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 and onwards now targets Java 5.0, making use of features that arrived with Java 5.0 such as generics,
+variable arguments, autoboxing, concurrency and formatted output.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+CHANGES IN 3.1
+================
+
+ [LANG-760] Add API StringUtils.toString(byte[] input, String charsetName)
+ [LANG-756] Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and isPrimitiveOrWrapper(Class<?>)
+ [LANG-758] Add an example with whitespace in StringUtils.defaultIfEmpty
+ [LANG-752] Fix createLong() so it behaves like createInteger()
+ [LANG-751] Include the actual type in the Validate.isInstance and isAssignableFrom exception messages
+ [LANG-748] Deprecating chomp(String, String)
+ [LANG-736] CharUtils static final array CHAR_STRING is not needed to compute CHAR_STRING_ARRAY
+ [LANG-695] SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES IN 3.1
+==================
+
+ [LANG-749] Incorrect Bundle-SymbolicName in Manifest
+ [LANG-746] NumberUtils does not handle upper-case hex: 0X and -0X
+ [LANG-744] StringUtils throws java.security.AccessControlException on Google App Engine
+ [LANG-741] Ant build has wrong component.name
+ [LANG-698] Document that the Mutable numbers don't work as expected with String.format
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.10.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.10.txt
new file mode 100644
index 000000000..c77df7fa2
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.10.txt
@@ -0,0 +1,121 @@
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+ Apache Commons Lang
+ Version 3.10
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.10 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.9 and onwards now targets Java 8, making use of features that arrived with Java 8.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+Apache Commons Lang, a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang.
+
+New features and bug fixes. Requires Java 8, supports Java 9, 10, 11.
+
+Changes in this version include:
+
+New features:
+o LANG-1457: Add ExceptionUtils.throwableOfType(Throwable, Class) and friends.
+o LANG-1458: Add EMPTY_ARRAY constants to classes in org.apache.commons.lang3.tuple.
+o LANG-1461: Add null-safe StringUtils APIs to wrap String#getBytes([Charset|String]).
+o LANG-1467: Add zero arg constructor for org.apache.commons.lang3.NotImplementedException.
+o LANG-1470: Add ArrayUtils.addFirst() methods.
+o LANG-1479: Add Range.fit(T) to fit a value into a range.
+o LANG-1477: Added Functions.as*, and tests thereof, as suggested by Peter Verhas
+o LANG-1485: Add getters for lhs and rhs objects in DiffResult #451. Thanks to nicolasbd.
+o LANG-1486: Generify builder classes Diffable, DiffBuilder, and DiffResult #452. Thanks to Gary Gregory.
+o LANG-1487: Add ClassLoaderUtils with toString() implementations #453. Thanks to Gary Gregory.
+o LANG-1489: Add null-safe APIs as StringUtils.toRootLowerCase(String) and StringUtils.toRootUpperCase(String) #456. Thanks to Gary Gregory.
+o LANG-1494: Add org.apache.commons.lang3.time.Calendars. Thanks to Gary Gregory.
+o LANG-1495: Add EnumUtils getEnum() methods with default values #475. Thanks to Cheong Voon Leong.
+o LANG-1177: Added indexesOf methods and simplified removeAllOccurences #471. Thanks to Liel Fridman.
+o LANG-1498: Add support of lambda value evaluation for defaulting methods #416. Thanks to Lysergid, Gary Gregory.
+o LANG-1503: Add factory methods to Pair classes with Map.Entry input. #454. Thanks to XenoAmess, Gary Gregory.
+o LANG-1505: Add StopWatch convenience APIs to format times and create a simple instance. Thanks to Gary Gregory.
+o LANG-1506: Allow a StopWatch to carry an optional message. Thanks to Gary Gregory.
+o LANG-1507: Add ComparableUtils #398. Thanks to Sam Kruglov, Mark Dacek, Marc Magon, Pascal Schumacher, Rob Tompkins, Bruno P. Kinoshita, Amey Jadiye, Gary Gregory.
+o LANG-1508: Add org.apache.commons.lang3.SystemUtils.getUserName(). Thanks to Gary Gregory.
+o LANG-1509: Add ObjectToStringComparator. #483. Thanks to Gary Gregory.
+o LANG-1510: Add org.apache.commons.lang3.arch.Processor.Arch.getLabel(). Thanks to Gary Gregory.
+o LANG-1512: Add IS_JAVA_14 and IS_JAVA_15 to org.apache.commons.lang3.SystemUtils. Thanks to Gary Gregory.
+o LANG-1513: ObjectUtils: Get first non-null supplier value. Thanks to Bernhard Bonigl, Gary Gregory.
+o Added the Streams class, and Functions.stream() as an accessor thereof.
+
+Fixed Bugs:
+o LANG-1514: Make test more stable by wrapping assertions in hashset. Thanks to contextshuffling.
+o LANG-1450: Generate Javadoc jar on build.
+o LANG-1460: Trivial: year of release for 3.9 says 2018, should be 2019 Thanks to Larry West.
+o LANG-1476: Use synchronize on a set created with Collections.synchronizedSet before iterating Thanks to emopers.
+o LANG-1475: StringUtils.unwrap incorrect throw StringIndexOutOfBoundsException. Thanks to stzx.
+o LANG-1406: StringIndexOutOfBoundsException in StringUtils.replaceIgnoreCase #423. Thanks to geratorres.
+o LANG-1453: StringUtils.removeIgnoreCase("?a", "a") throws IndexOutOfBoundsException #423. Thanks to geratorres.
+o LANG-1426: Corrected usage examples in Javadocs #458. Thanks to Brower, Mikko Maunu, Suraj Gautam.
+o LANG-1463: StringUtils abbreviate returns String of length greater than maxWidth #477. Thanks to bbeckercscc, Gary Gregory.
+o LANG-1500: Test may fail due to a different order of fields returned by reflection api #480. Thanks to contextshuffling.
+o LANG-1501: Sort fields in ReflectionToStringBuilder for deterministic order #481. Thanks to contextshuffling.
+o LANG-1433: MethodUtils will throw a NPE if invokeMethod() is called for a var-args method #407. Thanks to Christian Franzen.
+o LANG-1518: MethodUtils.getAnnotation() with searchSupers = true does not work if super is generic #494. Thanks to Michele Preti, Bruno P. Kinoshita, Gary Gregory.
+
+Changes:
+o LANG-1437: Remove redundant if statements in join methods #411. Thanks to Andrei Troie.
+o commons.japicmp.version 0.13.1 -> 0.14.1.
+o junit-jupiter 5.5.0 -> 5.5.1.
+o junit-jupiter 5.5.1 -> 5.5.2.
+o Improve Javadoc based on the discussion of the GitHub PR #459. Thanks to Jonathan Leitschuh, Bruno P. Kinoshita, Rob Tompkins, Gary Gregory.
+o maven-checkstyle-plugin 3.0.0 -> 3.1.0.
+o LANG-696: Update documentation related to the issue LANG-696 #449. Thanks to Peter Verhas.
+o AnnotationUtils little cleanup #467. Thanks to Peter Verhas.
+o Update test dependency: org.easymock:easymock 4.0.2 -> 4.1. Thanks to Gary Gregory.
+o Update test dependency: org.hamcrest:hamcrest 2.1 -> 2.2. Thanks to Gary Gregory.
+o Update test dependency: org.junit-pioneer:junit-pioneer 0.3.0 -> 0.4.2. Thanks to Gary Gregory.
+o Update build dependency: com.puppycrawl.tools:checkstyle 8.18 -> 8.27. Thanks to Gary Gregory.
+o Update POM parent: org.apache.commons:commons-parent 48 -> 50. Thanks to Gary Gregory.
+o BooleanUtils Javadoc #469. Thanks to Peter Verhas.
+o Functions Javadoc #466. Thanks to Peter Verhas.
+o org.easymock:easymock 4.1 -> 4.2. Thanks to Gary Gregory.
+o org.junit-pioneer:junit-pioneer 0.4.2 -> 0.5.4. Thanks to Gary Gregory.
+o org.junit.jupiter:junit-jupiter 5.5.2 -> 5.6.0. Thanks to Gary Gregory.
+o Use Javadoc {@code} instead of pre tags. #490. Thanks to Peter Verhas.
+o ExceptionUtilsTest to 100% #486. Thanks to Peter Verhas.
+o Reuse own code in Functions.java #493. Thanks to Peter Verhas.
+o LANG-1523: Avoid unnecessary allocation in StringUtils.wrapIfMissing. #496. Thanks to Edgar Asatryan, Bruno P. Kinoshita, Gary Gregory.
+o LANG-1525: Internally use Validate.notNull(foo, ...) instead of Validate.isTrue(foo != null, ...). Thanks to Edgar Asatryan, Bruno P. Kinoshita, Gary Gregory.
+o LANG-1526: Add 1 and 0 in toBooleanObject(final String str) #502. Thanks to Dominik Schramm.
+o LANG-1527: Remove a redundant argument check in NumberUtils #504. Thanks to Pengyu Nie.
+o LANG-1529: Deprecate org.apache.commons.lang3.ArrayUtils.removeAllOccurences(*) for org.apache.commons.lang3.ArrayUtils.removeAllOccurrences(*). Thanks to Gary Gregory, BillCindy, Bruno P. Kinoshita.
+
+
+Historical list of changes: https://commons.apache.org/proper/commons-lang/changes-report.html
+
+For complete information on Apache Commons Lang, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons Lang website:
+
+https://commons.apache.org/proper/commons-lang/
+
+Download page: https://commons.apache.org/proper/commons-lang/download_lang.cgi
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.2.1.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.2.1.txt
new file mode 100644
index 000000000..bb554a629
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.2.1.txt
@@ -0,0 +1,417 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.2.1
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.2.1 version of
+Apache Commons Lang. Commons Lang is a set of utility functions and reusable
+components that should be of use in any Java environment. Commons Lang 3.2.1
+at least requires Java 6.0.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+BUG FIXES
+===========
+
+o LANG-937: Fix missing Hamcrest dependency in Ant Build
+o LANG-941: Test failure in LocaleUtilsTest when building with JDK 8
+o LANG-942: Test failure in FastDateParserTest and FastDateFormat_ParserTest
+ when building with JDK8. Thanks to Bruno P. Kinoshita,
+ Henri Yandell.
+o LANG-938: Build fails with test failures when building with JDK 8
+
+ Release Notes for version 3.2
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12-hour clock and not
+ 24-hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.2.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.2.txt
new file mode 100644
index 000000000..f686b0852
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.2.txt
@@ -0,0 +1,405 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.2
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.2 version of
+Apache Commons Lang. Commons Lang is a set of utility functions and reusable
+components that should be of use in any Java environment. Commons Lang 3.2
+at least requires Java 6.0.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12-hour clock and not
+ 24-hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.3.1.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.3.1.txt
new file mode 100644
index 000000000..0a42081ff
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.3.1.txt
@@ -0,0 +1,496 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.3.1
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.3.1 version of
+Apache Commons Lang. Commons Lang is a set of utility functions and reusable
+components that should be of use in any Java environment. Commons Lang 3.3.1
+at least requires Java 6.0.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+FIXED BUGS
+============
+
+o LANG-987: DateUtils.getFragmentInDays(Date, Calendar.MONTH) returns wrong
+ days
+o LANG-983: DurationFormatUtils does not describe format string fully
+o LANG-981: DurationFormatUtils#lexx does not detect unmatched quote char
+o LANG-984: DurationFormatUtils does not handle large durations correctly
+o LANG-982: DurationFormatUtils.formatDuration(61999, "s.SSSS") - ms field
+ size should be 4 digits
+o LANG-978: Failing tests with Java 8 b128
+
+ Release Notes for version 3.3
+
+NEW FEATURES
+==============
+
+o LANG-955: Add methods for removing all invalid characters according to
+ XML 1.0 and XML 1.1 in an input string to StringEscapeUtils.
+ Thanks to Adam Hooper.
+o LANG-970: Add APIs MutableBoolean setTrue() and setFalse()
+o LANG-962: Add SerializationUtils.roundtrip(T extends Serializable) to
+ serialize then deserialize
+o LANG-637: There should be a DifferenceBuilder with a
+ ReflectionDifferenceBuilder implementation
+o LANG-944: Add the Jaro-Winkler string distance algorithm to StringUtils.
+ Thanks to Rekha Joshi.
+o LANG-417: New class ClassPathUtils with methods for turning FQN into
+ resource path
+o LANG-834: Validate: add inclusiveBetween and exclusiveBetween overloads
+ for primitive types
+o LANG-900: New RandomUtils class. Thanks to Duncan Jones.
+o LANG-966: Add IBM OS/400 detection
+
+FIXED BUGS
+============
+
+o LANG-621: ReflectionToStringBuilder.toString does not debug 3rd party object
+ fields within 3rd party object. Thanks to Philip Hodges,
+ Thomas Neidhart.
+o LANG-977: NumericEntityEscaper incorrectly encodes supplementary characters.
+ Thanks to Chris Karcher.
+o LANG-973: Make some private fields final
+o LANG-971: NumberUtils#isNumber(String) fails to reject invalid Octal numbers
+o LANG-972: NumberUtils#isNumber does not allow for hex 0XABCD
+o LANG-969: StringUtils.toEncodedString(byte[], Charset) needlessly throws
+ UnsupportedEncodingException. Thanks to Matt Bishop.
+o LANG-946: ConstantInitializerTest fails when building with IBM JDK 7
+o LANG-954: uncaught PatternSyntaxException in FastDateFormat on Android.
+ Thanks to Michael Keppler.
+o LANG-936: StringUtils.getLevenshteinDistance with too big of a threshold
+ returns wrong result. Thanks to Yaniv Kunda, Eli Lindsey.
+o LANG-943: Test DurationFormatUtilsTest.testEdgeDuration fails in
+ JDK 1.6, 1.7 and 1.8, BRST time zone
+o LANG-613: ConstructorUtils.getAccessibleConstructor() Does Not Check the
+ Accessibility of Enclosing Classes
+o LANG-951: Fragments are wrong by 1 day when using fragment YEAR or MONTH.
+ Thanks to Sebastian Götz.
+o LANG-950: FastDateParser does not handle two digit year parsing like
+ SimpleDateFormat
+o LANG-949: FastDateParserTest.testParses does not test FastDateParser
+o LANG-915: Wrong locale handling in LocaleUtils.toLocale().
+ Thanks to Sergio Fernández.
+
+CHANGES
+=========
+
+o LANG-961: org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field)
+ does not clean up after itself
+o LANG-958: FastDateParser javadoc incorrectly states that SimpleDateFormat
+ is used internally
+o LANG-956: Improve Javadoc of WordUtils.wrap methods
+o LANG-939: Move Documentation from user guide to package-info files
+o LANG-953: Convert package.html files to package-info.java files
+o LANG-940: Fix deprecation warnings
+o LANG-819: EnumUtils.generateBitVector needs a "? extends"
+
+ Release Notes for version 3.2.1
+
+BUG FIXES
+===========
+
+o LANG-937: Fix missing Hamcrest dependency in Ant Build
+o LANG-941: Test failure in LocaleUtilsTest when building with JDK 8
+o LANG-942: Test failure in FastDateParserTest and FastDateFormat_ParserTest
+ when building with JDK8. Thanks to Bruno P. Kinoshita,
+ Henri Yandell.
+o LANG-938: Build fails with test failures when building with JDK 8
+
+ Release Notes for version 3.2
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12-hour clock and not
+ 24-hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.3.2.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.3.2.txt
new file mode 100644
index 000000000..fb498b2ef
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.3.2.txt
@@ -0,0 +1,509 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.3.2
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.3.2 version of
+Apache Commons Lang. Commons Lang is a set of utility functions and reusable
+components that should be of use in any Java environment. Commons Lang 3.3.2
+at least requires Java 6.0.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+
+NEW FEATURES
+==============
+
+o LANG-989: Add org.apache.commons.lang3.SystemUtils.IS_JAVA_1_8
+
+FIXED BUGS
+============
+
+o LANG-992: NumberUtils#isNumber() returns false for "0.0", "0.4790", et al
+
+ Release Notes for version 3.3.1
+
+FIXED BUGS
+============
+
+o LANG-987: DateUtils.getFragmentInDays(Date, Calendar.MONTH) returns wrong
+ days
+o LANG-983: DurationFormatUtils does not describe format string fully
+o LANG-981: DurationFormatUtils#lexx does not detect unmatched quote char
+o LANG-984: DurationFormatUtils does not handle large durations correctly
+o LANG-982: DurationFormatUtils.formatDuration(61999, "s.SSSS") - ms field
+ size should be 4 digits
+o LANG-978: Failing tests with Java 8 b128
+
+ Release Notes for version 3.3
+
+NEW FEATURES
+==============
+
+o LANG-955: Add methods for removing all invalid characters according to
+ XML 1.0 and XML 1.1 in an input string to StringEscapeUtils.
+ Thanks to Adam Hooper.
+o LANG-970: Add APIs MutableBoolean setTrue() and setFalse()
+o LANG-962: Add SerializationUtils.roundtrip(T extends Serializable) to
+ serialize then deserialize
+o LANG-637: There should be a DifferenceBuilder with a
+ ReflectionDifferenceBuilder implementation
+o LANG-944: Add the Jaro-Winkler string distance algorithm to StringUtils.
+ Thanks to Rekha Joshi.
+o LANG-417: New class ClassPathUtils with methods for turning FQN into
+ resource path
+o LANG-834: Validate: add inclusiveBetween and exclusiveBetween overloads
+ for primitive types
+o LANG-900: New RandomUtils class. Thanks to Duncan Jones.
+o LANG-966: Add IBM OS/400 detection
+
+FIXED BUGS
+============
+
+o LANG-621: ReflectionToStringBuilder.toString does not debug 3rd party object
+ fields within 3rd party object. Thanks to Philip Hodges,
+ Thomas Neidhart.
+o LANG-977: NumericEntityEscaper incorrectly encodes supplementary characters.
+ Thanks to Chris Karcher.
+o LANG-973: Make some private fields final
+o LANG-971: NumberUtils#isNumber(String) fails to reject invalid Octal numbers
+o LANG-972: NumberUtils#isNumber does not allow for hex 0XABCD
+o LANG-969: StringUtils.toEncodedString(byte[], Charset) needlessly throws
+ UnsupportedEncodingException. Thanks to Matt Bishop.
+o LANG-946: ConstantInitializerTest fails when building with IBM JDK 7
+o LANG-954: uncaught PatternSyntaxException in FastDateFormat on Android.
+ Thanks to Michael Keppler.
+o LANG-936: StringUtils.getLevenshteinDistance with too big of a threshold
+ returns wrong result. Thanks to Yaniv Kunda, Eli Lindsey.
+o LANG-943: Test DurationFormatUtilsTest.testEdgeDuration fails in
+ JDK 1.6, 1.7 and 1.8, BRST time zone
+o LANG-613: ConstructorUtils.getAccessibleConstructor() Does Not Check the
+ Accessibility of Enclosing Classes
+o LANG-951: Fragments are wrong by 1 day when using fragment YEAR or MONTH.
+ Thanks to Sebastian Götz.
+o LANG-950: FastDateParser does not handle two digit year parsing like
+ SimpleDateFormat
+o LANG-949: FastDateParserTest.testParses does not test FastDateParser
+o LANG-915: Wrong locale handling in LocaleUtils.toLocale().
+ Thanks to Sergio Fernández.
+
+CHANGES
+=========
+
+o LANG-961: org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field)
+ does not clean up after itself
+o LANG-958: FastDateParser javadoc incorrectly states that SimpleDateFormat
+ is used internally
+o LANG-956: Improve Javadoc of WordUtils.wrap methods
+o LANG-939: Move Documentation from user guide to package-info files
+o LANG-953: Convert package.html files to package-info.java files
+o LANG-940: Fix deprecation warnings
+o LANG-819: EnumUtils.generateBitVector needs a "? extends"
+
+ Release Notes for version 3.2.1
+
+BUG FIXES
+===========
+
+o LANG-937: Fix missing Hamcrest dependency in Ant Build
+o LANG-941: Test failure in LocaleUtilsTest when building with JDK 8
+o LANG-942: Test failure in FastDateParserTest and FastDateFormat_ParserTest
+ when building with JDK8. Thanks to Bruno P. Kinoshita,
+ Henri Yandell.
+o LANG-938: Build fails with test failures when building with JDK 8
+
+ Release Notes for version 3.2
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12-hour clock and not
+ 24-hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.3.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.3.txt
new file mode 100644
index 000000000..77a28fb19
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.3.txt
@@ -0,0 +1,482 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.3
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.3 version of
+Apache Commons Lang. Commons Lang is a set of utility functions and reusable
+components that should be of use in any Java environment. Commons Lang 3.3
+at least requires Java 6.0.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+NEW FEATURES
+==============
+
+o LANG-955: Add methods for removing all invalid characters according to
+ XML 1.0 and XML 1.1 in an input string to StringEscapeUtils.
+ Thanks to Adam Hooper.
+o LANG-970: Add APIs MutableBoolean setTrue() and setFalse()
+o LANG-962: Add SerializationUtils.roundtrip(T extends Serializable) to
+ serialize then deserialize
+o LANG-637: There should be a DifferenceBuilder with a
+ ReflectionDifferenceBuilder implementation
+o LANG-944: Add the Jaro-Winkler string distance algorithm to StringUtils.
+ Thanks to Rekha Joshi.
+o LANG-417: New class ClassPathUtils with methods for turning FQN into
+ resource path
+o LANG-834: Validate: add inclusiveBetween and exclusiveBetween overloads
+ for primitive types
+o LANG-900: New RandomUtils class. Thanks to Duncan Jones.
+o LANG-966: Add IBM OS/400 detection
+
+FIXED BUGS
+============
+
+o LANG-621: ReflectionToStringBuilder.toString does not debug 3rd party object
+ fields within 3rd party object. Thanks to Philip Hodges,
+ Thomas Neidhart.
+o LANG-977: NumericEntityEscaper incorrectly encodes supplementary characters.
+ Thanks to Chris Karcher.
+o LANG-973: Make some private fields final
+o LANG-971: NumberUtils#isNumber(String) fails to reject invalid Octal numbers
+o LANG-972: NumberUtils#isNumber does not allow for hex 0XABCD
+o LANG-969: StringUtils.toEncodedString(byte[], Charset) needlessly throws
+ UnsupportedEncodingException. Thanks to Matt Bishop.
+o LANG-946: ConstantInitializerTest fails when building with IBM JDK 7
+o LANG-954: uncaught PatternSyntaxException in FastDateFormat on Android.
+ Thanks to Michael Keppler.
+o LANG-936: StringUtils.getLevenshteinDistance with too big of a threshold
+ returns wrong result. Thanks to Yaniv Kunda, Eli Lindsey.
+o LANG-943: Test DurationFormatUtilsTest.testEdgeDuration fails in
+ JDK 1.6, 1.7 and 1.8, BRST time zone
+o LANG-613: ConstructorUtils.getAccessibleConstructor() Does Not Check the
+ Accessibility of Enclosing Classes
+o LANG-951: Fragments are wrong by 1 day when using fragment YEAR or MONTH.
+ Thanks to Sebastian Götz.
+o LANG-950: FastDateParser does not handle two digit year parsing like
+ SimpleDateFormat
+o LANG-949: FastDateParserTest.testParses does not test FastDateParser
+o LANG-915: Wrong locale handling in LocaleUtils.toLocale().
+ Thanks to Sergio Fernández.
+
+CHANGES
+=========
+
+o LANG-961: org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field)
+ does not clean up after itself
+o LANG-958: FastDateParser javadoc incorrectly states that SimpleDateFormat
+ is used internally
+o LANG-956: Improve Javadoc of WordUtils.wrap methods
+o LANG-939: Move Documentation from user guide to package-info files
+o LANG-953: Convert package.html files to package-info.java files
+o LANG-940: Fix deprecation warnings
+o LANG-819: EnumUtils.generateBitVector needs a "? extends"
+
+ Release Notes for version 3.2.1
+
+BUG FIXES
+===========
+
+o LANG-937: Fix missing Hamcrest dependency in Ant Build
+o LANG-941: Test failure in LocaleUtilsTest when building with JDK 8
+o LANG-942: Test failure in FastDateParserTest and FastDateFormat_ParserTest
+ when building with JDK8. Thanks to Bruno P. Kinoshita,
+ Henri Yandell.
+o LANG-938: Build fails with test failures when building with JDK 8
+
+ Release Notes for version 3.2
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12-hour clock and not
+ 24-hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.4.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.4.txt
new file mode 100644
index 000000000..afbcc4a1d
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.4.txt
@@ -0,0 +1,642 @@
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.4
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.4 version of
+Apache Commons Lang. Commons Lang is a set of utility functions and reusable
+components that should be of use in any Java environment. Commons Lang 3.4
+at least requires Java 6.0.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+
+COMPATIBILITY
+=============
+
+Commons Lang 3.4 is fully binary compatible to the last release and can
+therefore be used as a drop in replacement for 3.3.2. Note that the value of
+org.apache.commons.lang3.time.DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN
+has changed, which may affect clients using the constant. Furthermore the
+constant is used internally in
+o DurationFormatUtils.formatDurationISO(long)
+o DurationFormatUtils.formatPeriodISO(long, long)
+
+For more information see https://issues.apache.org/jira/browse/LANG-1000.
+
+NEW FEATURES
+==============
+
+o LANG-821: Support OS X versions in SystemUtils. Thanks to Timo Kockert.
+o LANG-1103: Add SystemUtils.IS_JAVA_1_9
+o LANG-1093: Add ClassUtils.getAbbreviatedName(). Thanks to Fabian Lange.
+o LANG-1082: Add option to disable the "objectsTriviallyEqual" test in
+ DiffBuilder. Thanks to Jonathan Baker.
+o LANG-1015: Add JsonToStringStyle implementation to ToStringStyle. Thanks to
+ Thiago Andrade.
+o LANG-1080: Add NoClassNameToStringStyle implementation of ToStringStyle.
+ Thanks to Innokenty Shuvalov.
+o LANG-883: Add StringUtils.containsAny(CharSequence, CharSequence...) method.
+ Thanks to Daniel Stewart.
+o LANG-1052: Multiline recursive to string style. Thanks to Jan Matèrne.
+o LANG-536: Add isSorted() to ArrayUtils. Thanks to James Sawle.
+o LANG-1033: Add StringUtils.countMatches(CharSequence, char)
+o LANG-1021: Provide methods to retrieve all fields/methods annotated with a
+ specific type. Thanks to Alexander Müller.
+o LANG-1016: NumberUtils#isParsable method(s). Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-999: Add fuzzy String matching logic to StringUtils. Thanks to
+ Ben Ripkens.
+o LANG-994: Add zero copy read method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-993: Add zero copy write method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-1044: Add method MethodUtils.invokeExactMethod(Object, String)
+o LANG-1045: Add method MethodUtils.invokeMethod(Object, String)
+
+FIXED BUGS
+============
+
+o LANG-794: SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect. Thanks to
+ Timo Kockert.
+o LANG-1104: Parse test fails for TimeZone America/Sao_Paulo
+o LANG-948: Exception while using ExtendedMessageFormat and escaping braces.
+ Thanks to Andrey Khobnya.
+o LANG-1092: Wrong formatting of time zones with daylight saving time in
+ FastDatePrinter
+o LANG-1090: FastDateParser does not set error indication in ParsePosition
+o LANG-1089: FastDateParser does not handle excess hours as per
+ SimpleDateFormat
+o LANG-1061: FastDateParser error - timezones not handled correctly. Thanks to
+ dmeneses.
+o LANG-1087: NumberUtils#createNumber() returns positive BigDecimal when
+ negative Float is expected. Thanks to Renat Zhilkibaev.
+o LANG-1081: DiffBuilder.append(String, Object left, Object right) does not do
+ a left.equals(right) check. Thanks to Jonathan Baker.
+o LANG-1055: StrSubstitutor.replaceSystemProperties does not work consistently.
+ Thanks to Jonathan Baker.
+o LANG-1083: Add (T) casts to get unit tests to pass in old JDK. Thanks to
+ Jonathan Baker.
+o LANG-1073: Read wrong component type of array in add in ArrayUtils.
+ Thanks to haiyang li.
+o LANG-1077: StringUtils.ordinalIndexOf("aaaaaa", "aa", 2) != 3 in StringUtils.
+ Thanks to haiyang li.
+o LANG-1072: Duplicated "0x" check in createBigInteger in NumberUtils. Thanks
+ to haiyang li.
+o LANG-1064: StringUtils.abbreviate description doesn't agree with the
+ examples. Thanks to B.J. Herbison.
+o LANG-1041: Fix MethodUtilsTest so it does not depend on JDK method ordering.
+ Thanks to Alexandre Bartel.
+o LANG-1000: ParseException when trying to parse UTC dates with Z as zone
+ designator using DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT
+o LANG-1035: Javadoc for EqualsBuilder.reflectionEquals() is unclear
+o LANG-1001: ISO 8601 misspelled throughout the Javadocs. Thanks to
+ Michael Osipov.
+o LANG-1088: FastDateParser should be case-insensitive
+o LANG-995: Fix bug with stripping spaces on last line in WordUtils.wrap().
+ Thanks to Andrey Khobnya.
+
+CHANGES
+=========
+
+o LANG-1102: Make logic for comparing OS versions in SystemUtils smarter
+o LANG-1091: Shutdown thread pools in test cases. Thanks to Fabian Lange.
+o LANG-1101: FastDateParser and FastDatePrinter support 'X' format
+o LANG-1100: Avoid memory allocation when using date formatting to StringBuffer.
+ Thanks to mbracher.
+o LANG-935: Possible performance improvement on string escape functions.
+ Thanks to Fabian Lange, Thomas Neidhart.
+o LANG-1098: Avoid String allocation in StrBuilder.append(CharSequence). Thanks
+ to Mikhail Mazurskiy, Fabian Lange.
+o LANG-1098: Update maven-checkstyle-plugin to 2.14. Thanks to Micha? Kordas.
+o LANG-1097: Update org.easymock:easymock to 3.3.1. Thanks to Micha? Kordas.
+o LANG-1096: Update maven-pmd-plugin to 3.4. Thanks to Micha? Kordas.
+o LANG-1095: Update maven-antrun-plugin to 1.8. Thanks to Micha? Kordas.
+o LANG-877: Performance improvements for StringEscapeUtils. Thanks to
+ Fabian Lange.
+o LANG-1071: Fix wrong examples in Javadoc of
+ StringUtils.replaceEachRepeatedly(...),
+ StringUtils.replaceEach(...) Thanks to Arno Noordover.
+o LANG-827: CompareToBuilder's doc doesn't specify precedence of fields it
+ uses in performing comparisons
+o LANG-1020: Improve performance of normalize space. Thanks to Libor Ondrusek.
+o LANG-1027: org.apache.commons.lang3.SystemUtils#isJavaVersionAtLeast should
+ return true by default
+o LANG-1026: Bring static method references in StringUtils to consistent style.
+ Thanks to Alex Yursha.
+o LANG-1017: Use non-ASCII digits in Javadoc examples for
+ StringUtils.isNumeric. Thanks to Christoph Schneegans.
+o LANG-1008: Change min/max methods in NumberUtils/IEEE754rUtils from array
+ input parameters to varargs. Thanks to Thiago Andrade.
+o LANG-1006: Add wrap (with String or char) to StringUtils. Thanks to
+ Thiago Andrade.
+o LANG-1005: Extend DurationFormatUtils#formatDurationISO default pattern to
+ match #formatDurationHMS. Thanks to Michael Osipov.
+o LANG-1007: Fixing NumberUtils JAVADoc comments for max methods. Thanks to
+ Thiago Andrade.
+o LANG-731: Better Javadoc for BitField class
+o LANG-1004: DurationFormatUtils#formatDurationHMS implementation does not
+ correspond to Javadoc and vice versa. Thanks to Michael Osipov.
+o LANG-1003: DurationFormatUtils are not able to handle negative
+ durations/periods
+o LANG-998: Javadoc is not clear on preferred pattern to instantiate
+ FastDateParser / FastDatePrinter
+
+ Release Notes for version 3.3.2
+
+NEW FEATURES
+==============
+
+o LANG-989: Add org.apache.commons.lang3.SystemUtils.IS_JAVA_1_8
+
+FIXED BUGS
+============
+
+o LANG-992: NumberUtils#isNumber() returns false for "0.0", "0.4790", et al
+
+ Release Notes for version 3.3.1
+
+FIXED BUGS
+============
+
+o LANG-987: DateUtils.getFragmentInDays(Date, Calendar.MONTH) returns wrong
+ days
+o LANG-983: DurationFormatUtils does not describe format string fully
+o LANG-981: DurationFormatUtils#lexx does not detect unmatched quote char
+o LANG-984: DurationFormatUtils does not handle large durations correctly
+o LANG-982: DurationFormatUtils.formatDuration(61999, "s.SSSS") - ms field
+ size should be 4 digits
+o LANG-978: Failing tests with Java 8 b128
+
+ Release Notes for version 3.3
+
+NEW FEATURES
+==============
+
+o LANG-955: Add methods for removing all invalid characters according to
+ XML 1.0 and XML 1.1 in an input string to StringEscapeUtils.
+ Thanks to Adam Hooper.
+o LANG-970: Add APIs MutableBoolean setTrue() and setFalse()
+o LANG-962: Add SerializationUtils.roundtrip(T extends Serializable) to
+ serialize then deserialize
+o LANG-637: There should be a DifferenceBuilder with a
+ ReflectionDifferenceBuilder implementation
+o LANG-944: Add the Jaro-Winkler string distance algorithm to StringUtils.
+ Thanks to Rekha Joshi.
+o LANG-417: New class ClassPathUtils with methods for turning FQN into
+ resource path
+o LANG-834: Validate: add inclusiveBetween and exclusiveBetween overloads
+ for primitive types
+o LANG-900: New RandomUtils class. Thanks to Duncan Jones.
+o LANG-966: Add IBM OS/400 detection
+
+FIXED BUGS
+============
+
+o LANG-621: ReflectionToStringBuilder.toString does not debug 3rd party object
+ fields within 3rd party object. Thanks to Philip Hodges,
+ Thomas Neidhart.
+o LANG-977: NumericEntityEscaper incorrectly encodes supplementary characters.
+ Thanks to Chris Karcher.
+o LANG-973: Make some private fields final
+o LANG-971: NumberUtils#isNumber(String) fails to reject invalid Octal numbers
+o LANG-972: NumberUtils#isNumber does not allow for hex 0XABCD
+o LANG-969: StringUtils.toEncodedString(byte[], Charset) needlessly throws
+ UnsupportedEncodingException. Thanks to Matt Bishop.
+o LANG-946: ConstantInitializerTest fails when building with IBM JDK 7
+o LANG-954: uncaught PatternSyntaxException in FastDateFormat on Android.
+ Thanks to Michael Keppler.
+o LANG-936: StringUtils.getLevenshteinDistance with too big of a threshold
+ returns wrong result. Thanks to Yaniv Kunda, Eli Lindsey.
+o LANG-943: Test DurationFormatUtilsTest.testEdgeDuration fails in
+ JDK 1.6, 1.7 and 1.8, BRST time zone
+o LANG-613: ConstructorUtils.getAccessibleConstructor() Does Not Check the
+ Accessibility of Enclosing Classes
+o LANG-951: Fragments are wrong by 1 day when using fragment YEAR or MONTH.
+ Thanks to Sebastian Götz.
+o LANG-950: FastDateParser does not handle two digit year parsing like
+ SimpleDateFormat
+o LANG-949: FastDateParserTest.testParses does not test FastDateParser
+o LANG-915: Wrong locale handling in LocaleUtils.toLocale().
+ Thanks to Sergio Fernández.
+
+CHANGES
+=========
+
+o LANG-961: org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field)
+ does not clean up after itself
+o LANG-958: FastDateParser javadoc incorrectly states that SimpleDateFormat
+ is used internally
+o LANG-956: Improve Javadoc of WordUtils.wrap methods
+o LANG-939: Move Documentation from user guide to package-info files
+o LANG-953: Convert package.html files to package-info.java files
+o LANG-940: Fix deprecation warnings
+o LANG-819: EnumUtils.generateBitVector needs a "? extends"
+
+ Release Notes for version 3.2.1
+
+BUG FIXES
+===========
+
+o LANG-937: Fix missing Hamcrest dependency in Ant Build
+o LANG-941: Test failure in LocaleUtilsTest when building with JDK 8
+o LANG-942: Test failure in FastDateParserTest and FastDateFormat_ParserTest
+ when building with JDK8. Thanks to Bruno P. Kinoshita,
+ Henri Yandell.
+o LANG-938: Build fails with test failures when building with JDK 8
+
+ Release Notes for version 3.2
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12-hour clock and not
+ 24-hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.5.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.5.txt
new file mode 100644
index 000000000..37add8890
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.5.txt
@@ -0,0 +1,940 @@
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Release Notes for version 3.5
+
+
+HIGHLIGHTS
+==========
+
+Some of the highlights in this release include:
+
+o Added Java 9 detection to org.apache.commons.lang3.SystemUtils.
+o Support for shifting and swapping elements in
+ org.apache.commons.lang3.ArrayUtils.
+o New methods for generating random strings from different character classes
+ including alphabetic, alphanumeric and ASCII added to
+ org.apache.commons.lang3.RandomStringUtils.
+o Numerous extensions to org.apache.commons.lang3.StringUtils including
+ null safe compare variants, more remove and replace variants, rotation and
+ truncation.
+o Added org.apache.commons.lang3.ThreadUtils - a utility class to work with
+ instances of java.lang.Thread and java.lang.ThreadGroup.
+o Added annotations @EqualsExclude, @HashCodeExclude and @ToStringExclude to
+ mark fields which should be ignored by the reflective builders in the
+ org.apache.commons.lang3.builder package.
+o Support for various modify and retrieve value use cases added to the classes
+ in org.apache.commons.lang3.mutable.
+
+COMPATIBILITY
+=============
+
+Apache Commons Lang 3.5 is binary compatible with the 3.4 release. Users
+should not experience any problems when upgrading from 3.4 to 3.5.
+
+There has been an addition to the org.apache.commons.lang3.time.DatePrinter
+interface:
+
+o Added method 'public boolean parse(java.lang.String, java.text.ParsePosition,
+ java.util.Calendar)'
+o Added method 'public java.lang.Appendable format(long, java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Date,
+ java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Calendar,
+ java.lang.Appendable)'
+
+For this reason 3.5 is not strictly source compatible to 3.4. Since the
+DatePrinter interface is not meant to be implemented by clients, this
+change it not considered to cause any problems.
+
+JAVA 9 SUPPORT
+==============
+
+Java 9 introduces a new version-string scheme. Details of this new scheme are
+documented in JEP-223 (https://openjdk.org/jeps/223). In order to support
+JEP-223 two classes had to be changed:
+
+o org.apache.commons.lang3.JavaVersion
+ deprecated enum constant JAVA_1_9
+ introduced enum constant JAVA_9
+
+o org.apache.commons.lang3.SystemUtils
+ deprecated constant IS_JAVA_1_9
+ introduced constant IS_JAVA_9
+
+For more information see LANG-1197
+(https://issues.apache.org/jira/browse/LANG-1197). All other APIs are expected
+to work with Java 9.
+
+BUILDING ON JAVA 9
+==================
+
+Java 8 introduced the Unicode Consortium's Common Locale Data Repository as
+alternative source for locale data. Java 9 will use the CLDR provider as
+default provider for locale data (see https://openjdk.org/jeps/252). This
+causes a number of locale-sensitive test in Commons Lang to fail. In order
+to build Commons Lang 3.5 on Java 9, the locale provider has to be set to
+'JRE':
+
+ mvn -Djava.locale.providers=JRE clean install
+
+We are currently investigating ways to support building on Java 9 without
+further configuration. For more information see:
+https://issues.apache.org/jira/browse/LANG-1265
+
+
+NEW FEATURES
+==============
+
+o LANG-1275: Added a tryAcquire() method to TimedSemaphore.
+o LANG-1255: Add DateUtils.toCalendar(Date, TimeZone). Thanks to Kaiyuan Wang.
+o LANG-1023: Add WordUtils.wrap overload with customizable breakable character.
+ Thanks to Marko Bekhta.
+o LANG-787: Add method removeIgnoreCase(String, String) to StringUtils. Thanks
+ to Gokul Nanthakumar C.
+o LANG-1224: Extend RandomStringUtils with methods that generate strings
+ between a min and max length. Thanks to Caleb Cushing.
+o LANG-1257: Add APIs StringUtils.wrapIfMissing(String, char|String). Thanks to
+ Gary Gregory.
+o LANG-1253: Add RandomUtils#nextBoolean() method. Thanks to adilek.
+o LANG-1085: Add a circuit breaker implementation. Thanks to Oliver Heger and
+ Bruno P. Kinoshita.
+o LANG-1013: Add StringUtils.truncate(). Thanks to Thiago Andrade.
+o LANG-1195: Enhance MethodUtils to allow invocation of private methods. Thanks
+ to Derek C. Ashmore.
+o LANG-1189: Add getAndIncrement/getAndDecrement/getAndAdd/incrementAndGet/
+ decrementAndGet/addAndGet in Mutable* classes. Thanks to
+ Haiyang Li and Matthew Bartenschlag.
+o LANG-1225: Add RandomStringUtils#randomGraph and #randomPrint which match
+ corresponding regular expression class. Thanks to Caleb Cushing.
+o LANG-1223: Add StopWatch#getTime(TimeUnit). Thanks to Nick Manley.
+o LANG-781: Add methods to ObjectUtils class to check for null elements in the
+ array. Thanks to Krzysztof Wolny.
+o LANG-1228: Prefer Throwable.getCause() in ExceptionUtils.getCause().
+ Thanks to Brad Hess.
+o LANG-1233: DiffBuilder add method to allow appending from a DiffResult.
+ Thanks to Nick Manley.
+o LANG-1168: Add SystemUtils.IS_OS_WINDOWS_10 property.
+ Thanks to Pascal Schumacher.
+o LANG-1115: Add support for varargs in ConstructorUtils, MemberUtils, and
+ MethodUtils. Thanks to Jim Lloyd and Joe Ferner.
+o LANG-1134: Add methods to check numbers against NaN and infinite to
+ Validate. Thanks to Alan Smithee.
+o LANG-1220: Add tests for missed branches in DateUtils.
+ Thanks to Casey Scarborough.
+o LANG-1146: z/OS identification in SystemUtils.
+ Thanks to Gabor Liptak.
+o LANG-1192: FastDateFormat support of the week-year component (uppercase 'Y').
+ Thanks to Dominik Stadler.
+o LANG-1169: Add StringUtils methods to compare a string to multiple strings.
+ Thanks to Rafal Glowinski, Robert Parr and Arman Sharif.
+o LANG-1185: Add remove by regular expression methods in StringUtils.
+o LANG-1139: Add replace by regular expression methods in StringUtils.
+o LANG-1171: Add compare methods in StringUtils.
+o LANG-1174: Add sugar to RandomUtils. Thanks to Punkratz312.
+o LANG-1154: FastDateFormat APIs that use a StringBuilder. Thanks to
+ Gary Gregory.
+o LANG-1149: Ability to throw checked exceptions without declaring them. Thanks
+ to Gregory Zak.
+o LANG-1153: Implement ParsePosition api for FastDateParser.
+o LANG-1137: Add check for duplicate event listener in EventListenerSupport.
+ Thanks to Matthew Aguirre.
+o LANG-1135: Add method containsAllWords to WordUtils. Thanks to
+ Eduardo Martins.
+o LANG-1132: ReflectionToStringBuilder doesn't throw IllegalArgumentException
+ when the constructor's object param is null. Thanks to Jack Tan.
+o LANG-701: StringUtils join with var args. Thanks to James Sawle.
+o LANG-1105: Add ThreadUtils - A utility class which provides helper methods
+ related to java.lang.Thread Issue: LANG-1105. Thanks to
+ Hendrik Saly.
+o LANG-1031: Add annotations to exclude fields from ReflectionEqualsBuilder,
+ ReflectionToStringBuilder and ReflectionHashCodeBuilder. Thanks
+ to Felipe Adorno.
+o LANG-1127: Use JUnit rules to set and reset the default Locale and TimeZone.
+o LANG-1119: Add rotate(string, int) method to StringUtils. Thanks to
+ Loic Guibert.
+o LANG-1099: Add swap and shift operations for arrays to ArrayUtils. Thanks to
+ Adrian Ber.
+o LANG-1050: Change nullToEmpty methods to generics. Thanks to James Sawle.
+o LANG-1074: Add a method to ArrayUtils for removing all occurrences of a given
+ element Issue: LANG-1074. Thanks to Haiyang Li.
+
+FIXED BUGS
+============
+
+o LANG-1261: ArrayUtils.contains returns false for instances of subtypes.
+o LANG-1252: Rename NumberUtils.isNumber, isCreatable to better reflect
+ createNumber. Also, accommodated for "+" symbol as prefix in
+ isCreatable and isNumber. Thanks to Rob Tompkins.
+o LANG-1230: Remove unnecessary synchronization from registry lookup in
+ EqualsBuilder and HashCodeBuilder. Thanks to Philippe Marschall.
+o LANG-1214: Handle "void" in ClassUtils.getClass(). Thanks to Henry Tung.
+o LANG-1250: SerializationUtils#deserialize has unnecessary code and a comment
+ for that. Thanks to Glease Wang.
+o LANG-1190: TypeUtils.isAssignable throws NullPointerException when fromType
+ has type variables and toType generic superclass specifies type
+ variable. Thanks to Pascal Schumacher.
+o LANG-1226: StringUtils#normalizeSpace does not trim the string anymore.
+ Thanks to Pascal Schumacher.
+o LANG-1251: SerializationUtils.ClassLoaderAwareObjectInputStream should use
+ static initializer to initialize primitiveTypes map. Thanks to
+ Takuya Ueshin.
+o LANG-1248: FastDatePrinter Memory allocation regression. Thanks to
+ Benoit Wiart.
+o LANG-1018: Fix precision loss on NumberUtils.createNumber(String). Thanks to
+ Nick Manley.
+o LANG-1199: Fix implementation of StringUtils.getJaroWinklerDistance(). Thanks
+ to M. Steiger.
+o LANG-1244: Fix dead links in StringUtils.getLevenshteinDistance() javadoc.
+ Thanks to jjbankert.
+o LANG-1242: "\u2284":"?" mapping missing from
+ EntityArrays#HTML40_EXTENDED_ESCAPE. Thanks to Neal Stewart.
+o LANG-901: StringUtils#startsWithAny/endsWithAny is case-sensitive -
+ documented as case-insensitive. Thanks to Matthew Bartenschlag.
+o LANG-1232: DiffBuilder: Add null check on fieldName when appending Object or
+ Object[]. Thanks to Nick Manley.
+o LANG-1178: ArrayUtils.removeAll(Object array, int... indices) should do the
+ clone, not its callers. Thanks to Henri Yandell.
+o LANG-1120: StringUtils.stripAccents should remove accents from "Å" and "Å‚".
+ Thanks to kaching88.
+o LANG-1205: NumberUtils.createNumber() behaves inconsistently with
+ NumberUtils.isNumber(). Thanks to pbrose.
+o LANG-1222: Fix for incorrect comment on StringUtils.containsIgnoreCase
+ method. Thanks to Adam J.
+o LANG-1221: Fix typo on appendIfMissing javadoc. Thanks to Pierre Templier.
+o LANG-1202: parseDateStrictly doesn't pass specified locale. Thanks to
+ Markus Jelsma.
+o LANG-1219: FastDateFormat doesn't respect summer daylight in some localized
+ strings. Thanks to Jarek.
+o LANG-1175: Remove Ant-based build.
+o LANG-1194: Limit max heap memory for consistent Travis CI build.
+o LANG-1186: Fix NullPointerException in FastDateParser$TimeZoneStrategy.
+ Thanks to NickManley.
+o LANG-1193: ordinalIndexOf("abc", "ab", 1) gives incorrect answer of -1
+ (correct answer should be 0); revert fix for LANG-1077. Thanks to
+ Qin Li.
+o LANG-1002: Several predefined ISO FastDateFormats in DateFormatUtils are
+ incorrect. Thanks to Michael Osipov.
+o LANG-1152: StringIndexOutOfBoundsException or field over-write for large year
+ fields in FastDateParser. Thanks to Pas Filip.
+o LANG-1141: StrLookup.systemPropertiesLookup() no longer reacts on changes on
+ system properties.
+o LANG-1147: EnumUtils *BitVector issue with more than 32 values Enum. Thanks
+ to Loic Guibert.
+o LANG-1059: Capitalize javadoc is incorrect. Thanks to Colin Casey.
+o LANG-1122: Inconsistent behavior of swap for malformed inputs. Thanks to
+ Adrian Ber.
+o LANG-1130: Fix critical issues reported by SonarQube.
+o LANG-1131: StrBuilder.equals(StrBuilder) doesn't check for null inputs.
+o LANG-1128: JsonToStringStyle doesn't handle chars and objects correctly.
+ Thanks to Jack Tan.
+o LANG-1126: DateFormatUtilsTest.testSMTP depends on the default Locale.
+o LANG-1123: Unit test FastDatePrinterTimeZonesTest needs a timezone set.
+ Thanks to Christian P. Momon.
+o LANG-916: DateFormatUtils.format does not correctly change Calendar
+ TimeZone in certain situations. Thanks to Christian P. Momon.
+o LANG-1116: DateUtilsTest.testLang530 fails for some timezones. Thanks to
+ Aaron Sheldon.
+o LANG-1114: TypeUtils.ParameterizedType#equals doesn't work with wildcard
+ types. Thanks to Andy Coates.
+o LANG-1118: StringUtils.repeat('z', -1) throws NegativeArraySizeException.
+ Thanks to Loic Guibert.
+o LANG-1111: Fix FindBugs warnings in DurationFormatUtils.
+o LANG-1162: StringUtils#equals fails with Index OOBE on non-Strings with
+ identical leading prefix..
+o LANG-1163: There are no tests for CharSequenceUtils.regionMatches.
+o LANG-1200: Fix Javadoc of StringUtils.ordinalIndexOf. Thanks to BarkZhang.
+o LANG-1191: Incorrect Javadoc
+ StringUtils.containsAny(CharSequence, CharSequence...). Thanks to
+ qed, Brent Worden and Gary Gregory.
+
+CHANGES
+=========
+o LANG-1197: Prepare Java 9 detection.
+o LANG-1262: CompareToBuilder.append(Object, Object, Comparator) method is too
+ big to be inlined. Thanks to Ruslan Cheremin.
+o LANG-1259: Javadoc for ArrayUtils.isNotEmpty() is slightly misleading. Thanks
+ to Dominik Stadler.
+o LANG-1247: FastDatePrinter generates extra Date objects. Thanks to
+ Benoit Wiart.
+o LANG-1229: HashCodeBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1243: Simplify ArrayUtils removeElements by using new decrementAndGet()
+ method.
+o LANG-1240: Optimize BitField constructor implementation. Thanks to zhanhb.
+o LANG-1206: Improve CharSetUtils.squeeze() performance. Thanks to
+ Mohammed Alfallaj.
+o LANG-1176: Improve ArrayUtils removeElements time complexity to O(n). Thanks
+ to Jeffery Yuan.
+o LANG-1234: getLevenshteinDistance with a threshold: optimize implementation
+ if the strings lengths differ more than the threshold. Thanks to
+ Jonatan Jönsson.
+o LANG-1151: Performance improvements for NumberUtils.isParsable. Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-1218: EqualsBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1210: StringUtils#startsWithAny has error in Javadoc. Thanks to
+ Matthias Niehoff.
+o LANG-1208: StrSubstitutor can preserve escapes. Thanks to Samuel Karp.
+o LANG-1182: Clarify Javadoc of StringUtils.containsAny(). Thanks to
+ Larry West and Pascal Schumacher.
+o LANG-1183: Making replacePattern/removePattern methods null safe in
+ StringUtils.
+o LANG-1057: Replace StringBuilder with String concatenation for better
+ optimization. Thanks to Otávio Santana.
+o LANG-1075: Deprecate SystemUtils.FILE_SEPARATOR and
+ SystemUtils.PATH_SEPARATOR.
+o LANG-979: TypeUtils.parameterizeWithOwner - wrong format descriptor for
+ "invalid number of type parameters". Thanks to Bruno P. Kinoshita.
+o LANG-1112: MultilineRecursiveToStringStyle largely unusable due to being
+ package-private.
+o LANG-1058: StringUtils.uncapitalize performance improvement. Thanks to
+ Leo Wang.
+o LANG-1069: CharSet.getInstance documentation does not clearly explain how
+ to include negation character in set. Thanks to Arno Noordover.
+o LANG-1107: Fix parsing edge cases in FastDateParser.
+o LANG-1273: Added new property IS_OS_MAC_OSX_EL_CAPITAN in SystemUtils. Thanks
+ to Jake Wang.
+
+=============================================================================
+
+ Release Notes for version 3.4
+
+
+COMPATIBILITY
+=============
+
+Commons Lang 3.4 is fully binary compatible to the last release and can
+therefore be used as a drop in replacement for 3.3.2. Note that the value of
+org.apache.commons.lang3.time.DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN
+has changed, which may affect clients using the constant. Furthermore the
+constant is used internally in
+o DurationFormatUtils.formatDurationISO(long)
+o DurationFormatUtils.formatPeriodISO(long, long)
+
+For more information see https://issues.apache.org/jira/browse/LANG-1000.
+
+NEW FEATURES
+==============
+
+o LANG-821: Support OS X versions in SystemUtils. Thanks to Timo Kockert.
+o LANG-1103: Add SystemUtils.IS_JAVA_1_9
+o LANG-1093: Add ClassUtils.getAbbreviatedName(). Thanks to Fabian Lange.
+o LANG-1082: Add option to disable the "objectsTriviallyEqual" test in
+ DiffBuilder. Thanks to Jonathan Baker.
+o LANG-1015: Add JsonToStringStyle implementation to ToStringStyle. Thanks to
+ Thiago Andrade.
+o LANG-1080: Add NoClassNameToStringStyle implementation of ToStringStyle.
+ Thanks to Innokenty Shuvalov.
+o LANG-883: Add StringUtils.containsAny(CharSequence, CharSequence...) method.
+ Thanks to Daniel Stewart.
+o LANG-1052: Multiline recursive to string style. Thanks to Jan Matèrne.
+o LANG-536: Add isSorted() to ArrayUtils. Thanks to James Sawle.
+o LANG-1033: Add StringUtils.countMatches(CharSequence, char)
+o LANG-1021: Provide methods to retrieve all fields/methods annotated with a
+ specific type. Thanks to Alexander Müller.
+o LANG-1016: NumberUtils#isParsable method(s). Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-999: Add fuzzy String matching logic to StringUtils. Thanks to
+ Ben Ripkens.
+o LANG-994: Add zero copy read method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-993: Add zero copy write method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-1044: Add method MethodUtils.invokeExactMethod(Object, String)
+o LANG-1045: Add method MethodUtils.invokeMethod(Object, String)
+
+FIXED BUGS
+============
+
+o LANG-794: SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect. Thanks to
+ Timo Kockert.
+o LANG-1104: Parse test fails for TimeZone America/Sao_Paulo
+o LANG-948: Exception while using ExtendedMessageFormat and escaping braces.
+ Thanks to Andrey Khobnya.
+o LANG-1092: Wrong formatting of time zones with daylight saving time in
+ FastDatePrinter
+o LANG-1090: FastDateParser does not set error indication in ParsePosition
+o LANG-1089: FastDateParser does not handle excess hours as per
+ SimpleDateFormat
+o LANG-1061: FastDateParser error - timezones not handled correctly. Thanks to
+ dmeneses.
+o LANG-1087: NumberUtils#createNumber() returns positive BigDecimal when
+ negative Float is expected. Thanks to Renat Zhilkibaev.
+o LANG-1081: DiffBuilder.append(String, Object left, Object right) does not do
+ a left.equals(right) check. Thanks to Jonathan Baker.
+o LANG-1055: StrSubstitutor.replaceSystemProperties does not work consistently.
+ Thanks to Jonathan Baker.
+o LANG-1083: Add (T) casts to get unit tests to pass in old JDK. Thanks to
+ Jonathan Baker.
+o LANG-1073: Read wrong component type of array in add in ArrayUtils.
+ Thanks to haiyang li.
+o LANG-1077: StringUtils.ordinalIndexOf("aaaaaa", "aa", 2) != 3 in StringUtils.
+ Thanks to haiyang li.
+o LANG-1072: Duplicated "0x" check in createBigInteger in NumberUtils. Thanks
+ to haiyang li.
+o LANG-1064: StringUtils.abbreviate description doesn't agree with the
+ examples. Thanks to B.J. Herbison.
+o LANG-1041: Fix MethodUtilsTest so it does not depend on JDK method ordering.
+ Thanks to Alexandre Bartel.
+o LANG-1000: ParseException when trying to parse UTC dates with Z as zone
+ designator using DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT
+o LANG-1035: Javadoc for EqualsBuilder.reflectionEquals() is unclear
+o LANG-1001: ISO 8601 misspelled throughout the Javadocs. Thanks to
+ Michael Osipov.
+o LANG-1088: FastDateParser should be case-insensitive
+o LANG-995: Fix bug with stripping spaces on last line in WordUtils.wrap().
+ Thanks to Andrey Khobnya.
+
+CHANGES
+=========
+
+o LANG-1102: Make logic for comparing OS versions in SystemUtils smarter
+o LANG-1091: Shutdown thread pools in test cases. Thanks to Fabian Lange.
+o LANG-1101: FastDateParser and FastDatePrinter support 'X' format
+o LANG-1100: Avoid memory allocation when using date formatting to StringBuffer.
+ Thanks to mbracher.
+o LANG-935: Possible performance improvement on string escape functions.
+ Thanks to Fabian Lange, Thomas Neidhart.
+o LANG-1098: Avoid String allocation in StrBuilder.append(CharSequence). Thanks
+ to Mikhail Mazurskiy, Fabian Lange.
+o LANG-1098: Update maven-checkstyle-plugin to 2.14. Thanks to Micha? Kordas.
+o LANG-1097: Update org.easymock:easymock to 3.3.1. Thanks to Micha? Kordas.
+o LANG-1096: Update maven-pmd-plugin to 3.4. Thanks to Micha? Kordas.
+o LANG-1095: Update maven-antrun-plugin to 1.8. Thanks to Micha? Kordas.
+o LANG-877: Performance improvements for StringEscapeUtils. Thanks to
+ Fabian Lange.
+o LANG-1071: Fix wrong examples in Javadoc of
+ StringUtils.replaceEachRepeatedly(...),
+ StringUtils.replaceEach(...) Thanks to Arno Noordover.
+o LANG-827: CompareToBuilder's doc doesn't specify precedence of fields it
+ uses in performing comparisons
+o LANG-1020: Improve performance of normalize space. Thanks to Libor Ondrusek.
+o LANG-1027: org.apache.commons.lang3.SystemUtils#isJavaVersionAtLeast should
+ return true by default
+o LANG-1026: Bring static method references in StringUtils to consistent style.
+ Thanks to Alex Yursha.
+o LANG-1017: Use non-ASCII digits in Javadoc examples for
+ StringUtils.isNumeric. Thanks to Christoph Schneegans.
+o LANG-1008: Change min/max methods in NumberUtils/IEEE754rUtils from array
+ input parameters to varargs. Thanks to Thiago Andrade.
+o LANG-1006: Add wrap (with String or char) to StringUtils. Thanks to
+ Thiago Andrade.
+o LANG-1005: Extend DurationFormatUtils#formatDurationISO default pattern to
+ match #formatDurationHMS. Thanks to Michael Osipov.
+o LANG-1007: Fixing NumberUtils JAVADoc comments for max methods. Thanks to
+ Thiago Andrade.
+o LANG-731: Better Javadoc for BitField class
+o LANG-1004: DurationFormatUtils#formatDurationHMS implementation does not
+ correspond to Javadoc and vice versa. Thanks to Michael Osipov.
+o LANG-1003: DurationFormatUtils are not able to handle negative
+ durations/periods
+o LANG-998: Javadoc is not clear on preferred pattern to instantiate
+ FastDateParser / FastDatePrinter
+
+=============================================================================
+
+ Release Notes for version 3.3.2
+
+NEW FEATURES
+==============
+
+o LANG-989: Add org.apache.commons.lang3.SystemUtils.IS_JAVA_1_8
+
+FIXED BUGS
+============
+
+o LANG-992: NumberUtils#isNumber() returns false for "0.0", "0.4790", et al
+
+=============================================================================
+
+ Release Notes for version 3.3.1
+
+FIXED BUGS
+============
+
+o LANG-987: DateUtils.getFragmentInDays(Date, Calendar.MONTH) returns wrong
+ days
+o LANG-983: DurationFormatUtils does not describe format string fully
+o LANG-981: DurationFormatUtils#lexx does not detect unmatched quote char
+o LANG-984: DurationFormatUtils does not handle large durations correctly
+o LANG-982: DurationFormatUtils.formatDuration(61999, "s.SSSS") - ms field
+ size should be 4 digits
+o LANG-978: Failing tests with Java 8 b128
+
+=============================================================================
+
+ Release Notes for version 3.3
+
+NEW FEATURES
+==============
+
+o LANG-955: Add methods for removing all invalid characters according to
+ XML 1.0 and XML 1.1 in an input string to StringEscapeUtils.
+ Thanks to Adam Hooper.
+o LANG-970: Add APIs MutableBoolean setTrue() and setFalse()
+o LANG-962: Add SerializationUtils.roundtrip(T extends Serializable) to
+ serialize then deserialize
+o LANG-637: There should be a DifferenceBuilder with a
+ ReflectionDifferenceBuilder implementation
+o LANG-944: Add the Jaro-Winkler string distance algorithm to StringUtils.
+ Thanks to Rekha Joshi.
+o LANG-417: New class ClassPathUtils with methods for turning FQN into
+ resource path
+o LANG-834: Validate: add inclusiveBetween and exclusiveBetween overloads
+ for primitive types
+o LANG-900: New RandomUtils class. Thanks to Duncan Jones.
+o LANG-966: Add IBM OS/400 detection
+
+FIXED BUGS
+============
+
+o LANG-621: ReflectionToStringBuilder.toString does not debug 3rd party object
+ fields within 3rd party object. Thanks to Philip Hodges,
+ Thomas Neidhart.
+o LANG-977: NumericEntityEscaper incorrectly encodes supplementary characters.
+ Thanks to Chris Karcher.
+o LANG-973: Make some private fields final
+o LANG-971: NumberUtils#isNumber(String) fails to reject invalid Octal numbers
+o LANG-972: NumberUtils#isNumber does not allow for hex 0XABCD
+o LANG-969: StringUtils.toEncodedString(byte[], Charset) needlessly throws
+ UnsupportedEncodingException. Thanks to Matt Bishop.
+o LANG-946: ConstantInitializerTest fails when building with IBM JDK 7
+o LANG-954: uncaught PatternSyntaxException in FastDateFormat on Android.
+ Thanks to Michael Keppler.
+o LANG-936: StringUtils.getLevenshteinDistance with too big of a threshold
+ returns wrong result. Thanks to Yaniv Kunda, Eli Lindsey.
+o LANG-943: Test DurationFormatUtilsTest.testEdgeDuration fails in
+ JDK 1.6, 1.7 and 1.8, BRST time zone
+o LANG-613: ConstructorUtils.getAccessibleConstructor() Does Not Check the
+ Accessibility of Enclosing Classes
+o LANG-951: Fragments are wrong by 1 day when using fragment YEAR or MONTH.
+ Thanks to Sebastian Götz.
+o LANG-950: FastDateParser does not handle two digit year parsing like
+ SimpleDateFormat
+o LANG-949: FastDateParserTest.testParses does not test FastDateParser
+o LANG-915: Wrong locale handling in LocaleUtils.toLocale().
+ Thanks to Sergio Fernández.
+
+CHANGES
+=========
+
+o LANG-961: org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field)
+ does not clean up after itself
+o LANG-958: FastDateParser javadoc incorrectly states that SimpleDateFormat
+ is used internally
+o LANG-956: Improve Javadoc of WordUtils.wrap methods
+o LANG-939: Move Documentation from user guide to package-info files
+o LANG-953: Convert package.html files to package-info.java files
+o LANG-940: Fix deprecation warnings
+o LANG-819: EnumUtils.generateBitVector needs a "? extends"
+
+=============================================================================
+
+ Release Notes for version 3.2.1
+
+BUG FIXES
+===========
+
+o LANG-937: Fix missing Hamcrest dependency in Ant Build
+o LANG-941: Test failure in LocaleUtilsTest when building with JDK 8
+o LANG-942: Test failure in FastDateParserTest and FastDateFormat_ParserTest
+ when building with JDK8. Thanks to Bruno P. Kinoshita,
+ Henri Yandell.
+o LANG-938: Build fails with test failures when building with JDK 8
+
+=============================================================================
+
+ Release Notes for version 3.2
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+=============================================================================
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+=============================================================================
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12-hour clock and not
+ 24-hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.6.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.6.txt
new file mode 100644
index 000000000..78478c4a6
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.6.txt
@@ -0,0 +1,1124 @@
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.6
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.6 version of
+Apache Commons Lang as well as a history all changes in the Commons Lang 3.x
+release line. Commons Lang is a set of utility functions and reusable
+components that should be of use in any Java environment. Commons Lang 3.6 at
+least requires Java 7.0. Note that this has changed from Commons Lang 3.5, which
+only required Java 1.6.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+HIGHLIGHTS
+==========
+
+Some of the highlights in this release include:
+
+o The class org.apache.commons.lang3.concurrent.Memoizer is an implementation
+ of the Memoizer pattern as shown in
+ Goetz, Brian et al. (2006) - Java Concurrency in Practice, p. 108.
+o The class org.apache.commons.lang3.ArchUtils has been added. ArchUtils is
+ a utility class for the "os.arch" system property.
+
+DEPRECATIONS
+============
+
+The Apache Commons Community has recently set up the Commons Text component
+as a home for algorithms working on strings. For this reason most of the string
+focused functionality in Commons Lang has been deprecated and moved to
+Commons Text. This includes:
+
+o All classes in the org.apache.commons.lang3.text and the
+ org.apache.commons.lang3.text.translate packages
+o org.apache.commons.lang3.StringEscapeUtils
+o org.apache.commons.lang3.RandomStringUtils
+o The methods org.apache.commons.lang3.StringUtils.getJaroWinklerDistance and
+ org.apache.commons.lang3.StringUtils.getLevenshteinDistance
+
+For more information see the Commons Text website:
+
+ https://commons.apache.org/text
+
+The class org.apache.commons.lang3.CharEncoding has been deprecated in favor of
+java.nio.charset.StandardCharsets.
+
+The following methods have been deprecated in
+org.apache.commons.lang3.ArrayUtils in favor of the corresponding insert
+methods. Note that the handling for null inputs differs between add and insert.
+
+o add(boolean[], int, boolean) -> insert(int, boolean[], boolean...)
+o add(byte[], int, boolean) -> insert(int, byte[], byte...)
+o add(char[], int, boolean) -> insert(int, char[], char...)
+o add(double[], int, boolean) -> insert(int, double[], double...)
+o add(float[], int, boolean) -> insert(int, float[], float...)
+o add(int[], int, boolean) -> insert(int, int[], int...)
+o add(long[], int, boolean) -> insert(int, long[], long...)
+o add(short[], int, boolean) -> insert(int, short[], short...)
+o add(T[], int, boolean) -> insert(int, T[], T...)
+
+
+COMPATIBILITY WITH JAVA 9
+==================
+
+The MANIFEST.MF now contains an additional entry:
+
+ Automatic-Module-Name: org.apache.commons.lang3
+
+This should make it possible to use Commons Lang 3.6 as a module in the Java 9
+module system. For more information see the corresponding issue and the
+referenced mailing list discussions:
+
+ https://issues.apache.org/jira/browse/LANG-1338
+
+The build problems present in the 3.5 release have been resolved. Building
+Commons Lang 3.6 should work out of the box with the latest Java 9 EA build.
+Please report any Java 9 related issues at:
+
+ https://issues.apache.org/jira/browse/LANG
+
+NEW FEATURES
+============
+
+o LANG-1336: Add NUL Byte To CharUtils. Thanks to Beluga Behr.
+o LANG-1304: Add method in StringUtils to determine if string contains both
+ mixed cased characters. Thanks to Andy Klimczak.
+o LANG-1325: Increase test coverage of ToStringBuilder class to 100%.
+ Thanks to Arshad Basha.
+o LANG-1307: Add a method in StringUtils to extract only digits out of input
+ string. Thanks to Arshad Basha.
+o LANG-1256: Add JMH maven dependencies. Thanks to C0rWin.
+o LANG-1167: Add null filter to ReflectionToStringBuilder.
+ Thanks to Mark Dacek.
+o LANG-1299: Add method for converting string to an array of code points.
+o LANG-660: Add methods to insert arrays into arrays at an index.
+o LANG-1034: Add support for recursive comparison to
+ EqualsBuilder#reflectionEquals. Thanks to Yathos UG.
+o LANG-1067: Add a reflection-based variant of DiffBuilder.
+o LANG-740: Implementation of a Memoizer. Thanks to James Sawle.
+o LANG-1258: Add ArrayUtils#toStringArray method.
+ Thanks to IG, Grzegorz Rożniecki.
+o LANG-1160: StringUtils#abbreviate should support 'custom ellipses' parameter.
+o LANG-1293: Add StringUtils#isAllEmpty and #isAllBlank methods.
+ Thanks to Pierre Templier, Martin Tarjanyi.
+o LANG-1313: Add ArchUtils - An utility class for the "os.arch" system property.
+ Thanks to Tomschi.
+o LANG-1272: Add shuffle methods to ArrayUtils.
+o LANG-1317: Add MethodUtils#findAnnotation and extend
+ MethodUtils#getMethodsWithAnnotation for non-public, super-class
+ and interface methods. Thanks to Yasser Zamani.
+o LANG-1331: Add ImmutablePair.nullPair().
+o LANG-1332: Add ImmutableTriple.nullTriple().
+
+FIXED BUGS
+==========
+
+o LANG-1337: Fix test failures in IBM JDK 8 for ToStringBuilderTest.
+o LANG-1319: MultilineRecursiveToStringStyle StackOverflowError when object is
+ an array.
+o LANG-1320: LocaleUtils#toLocale does not support language followed by UN M.49
+ numeric-3 area code followed by variant.
+o LANG-1300: Clarify or improve behavior of int-based indexOf methods in
+ StringUtils. Thanks to Mark Dacek.
+o LANG-1286: RandomStringUtils random method can overflow and return characters
+ outside of specified range.
+o LANG-1292: WordUtils.wrap throws StringIndexOutOfBoundsException.
+o LANG-1287: RandomStringUtils#random can enter infinite loop if end parameter
+ is to small. Thanks to Ivan Morozov.
+o LANG-1285: NullPointerException in FastDateParser$TimeZoneStrategy.
+ Thanks to Francesco Chicchiriccò.
+o LANG-1281: Javadoc of StringUtils.ordinalIndexOf is contradictory.
+ Thanks to Andreas Lundblad.
+o LANG-1188: StringUtils#join(T...): warning: [unchecked] Possible heap
+ pollution from parameterized vararg type T.
+o LANG-1144: Multiple calls of
+ org.apache.commons.lang3.concurrent.LazyInitializer.initialize()
+ are possible. Thanks to Waldemar Maier, Gary Gregory.
+o LANG-1276: StrBuilder#replaceAll ArrayIndexOutOfBoundsException.
+ Thanks to Andy Klimczak.
+o LANG-1278: BooleanUtils javadoc issues. Thanks to Duke Yin.
+o LANG-1070: ArrayUtils#add confusing example in javadoc.
+ Thanks to Paul Pogonyshev.
+o LANG-1271: StringUtils#isAnyEmpty and #isAnyBlank should return false for an
+ empty array. Thanks to Pierre Templier.
+o LANG-1155: Add StringUtils#unwrap. Thanks to Saif Asif, Thiago Andrade.
+o LANG-1311: TypeUtils.toString() doesn't handle primitive and Object arrays
+ correctly. Thanks to Aaron Digulla.
+o LANG-1312: LocaleUtils#toLocale does not support language followed by UN M.49
+ numeric-3 area code.
+o LANG-1265: Build failures when building with Java 9 EA.
+o LANG-1314: javadoc creation broken with Java 8. Thanks to Allon Murienik.
+o LANG-1310: MethodUtils.invokeMethod throws ArrayStoreException if using
+ varargs arguments and smaller types than the method defines.
+ Thanks to Don Jeba.
+
+CHANGES
+=======
+
+o LANG-1338: Add Automatic-Module-Name MANIFEST entry for Java 9
+ compatibility.
+o LANG-1334: Deprecate CharEncoding in favour of
+ java.nio.charset.StandardCharsets.
+o LANG-1110: Implement HashSetvBitSetTest using JMH.
+ Thanks to Bruno P. Kinoshita.
+o LANG-1290: Increase test coverage of org.apache.commons.lang3.ArrayUtils.
+ Thanks to Andrii Abramov.
+o LANG-1274: StrSubstitutor should state its thread safety.
+o LANG-1277: StringUtils#getLevenshteinDistance reduce memory consumption.
+ Thanks to yufcuy.
+o LANG-1279: Update Java requirement from Java 6 to 7.
+o LANG-1143: StringUtils should use toXxxxCase(int) rather than
+ toXxxxCase(char). Thanks to sebb.
+o LANG-1297: Add SystemUtils.getHostName() API.
+o LANG-1301: Moving apache-rat-plugin configuration into pluginManagement.
+ Thanks to Karl Heinz Marbaise.
+o LANG-1316: Deprecate classes/methods moved to commons-text.
+
+=============================================================================
+
+ Release Notes for version 3.5
+
+
+HIGHLIGHTS
+==========
+
+Some of the highlights in this release include:
+
+o Added Java 9 detection to org.apache.commons.lang3.SystemUtils.
+o Support for shifting and swapping elements in
+ org.apache.commons.lang3.ArrayUtils.
+o New methods for generating random strings from different character classes
+ including alphabetic, alpha-numeric and ASCII added to
+ org.apache.commons.lang3.RandomStringUtils.
+o Numerous extensions to org.apache.commons.lang3.StringUtils including
+ null safe compare variants, more remove and replace variants, rotation and
+ truncation.
+o Added org.apache.commons.lang3.ThreadUtils - a utility class to work with
+ instances of java.lang.Thread and java.lang.ThreadGroup.
+o Added annotations @EqualsExclude, @HashCodeExclude and @ToStringExclude to
+ mark fields which should be ignored by the reflective builders in the
+ org.apache.commons.lang3.builder package.
+o Support for various modify and retrieve value use cases added to the classes
+ in org.apache.commons.lang3.mutable.
+
+COMPATIBILITY
+=============
+
+Apache Commons Lang 3.5 is binary compatible with the 3.4 release. Users
+should not experience any problems when upgrading from 3.4 to 3.5.
+
+There has been an addition to the org.apache.commons.lang3.time.DatePrinter
+interface:
+
+o Added method 'public boolean parse(java.lang.String, java.text.ParsePosition,
+ java.util.Calendar)'
+o Added method 'public java.lang.Appendable format(long, java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Date,
+ java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Calendar,
+ java.lang.Appendable)'
+
+For this reason 3.5 is not strictly source compatible to 3.4. Since the
+DatePrinter interface is not meant to be implemented by clients, this
+change it not considered to cause any problems.
+
+JAVA 9 SUPPORT
+==============
+
+Java 9 introduces a new version-string scheme. Details of this new scheme are
+documented in JEP-223 (https://openjdk.org/jeps/223). In order to support
+JEP-223 two classes had to be changed:
+
+o org.apache.commons.lang3.JavaVersion
+ deprecated enum constant JAVA_1_9
+ introduced enum constant JAVA_9
+
+o org.apache.commons.lang3.SystemUtils
+ deprecated constant IS_JAVA_1_9
+ introduced constant IS_JAVA_9
+
+For more information see LANG-1197
+(https://issues.apache.org/jira/browse/LANG-1197). All other APIs are expected
+to work with Java 9.
+
+BUILDING ON JAVA 9
+==================
+
+Java 8 introduced the Unicode Consortium's Common Locale Data Repository as
+alternative source for locale data. Java 9 will use the CLDR provider as
+default provider for locale data (see https://openjdk.org/jeps/252). This
+causes an number of locale-sensitive test in Commons Lang to fail. In order
+to build Commons Lang 3.5 on Java 9, the locale provider has to be set to
+'JRE':
+
+ mvn -Djava.locale.providers=JRE clean install
+
+We are currently investigating ways to support building on Java 9 without
+further configuration. For more information see:
+https://issues.apache.org/jira/browse/LANG-1265
+
+
+NEW FEATURES
+==============
+
+o LANG-1275: Added a tryAcquire() method to TimedSemaphore.
+o LANG-1255: Add DateUtils.toCalendar(Date, TimeZone). Thanks to Kaiyuan Wang.
+o LANG-1023: Add WordUtils.wrap overload with customizable breakable character.
+ Thanks to Marko Bekhta.
+o LANG-787: Add method removeIgnoreCase(String, String) to StringUtils. Thanks
+ to Gokul Nanthakumar C.
+o LANG-1224: Extend RandomStringUtils with methods that generate strings
+ between a min and max length. Thanks to Caleb Cushing.
+o LANG-1257: Add APIs StringUtils.wrapIfMissing(String, char|String). Thanks to
+ Gary Gregory.
+o LANG-1253: Add RandomUtils#nextBoolean() method. Thanks to adilek.
+o LANG-1085: Add a circuit breaker implementation. Thanks to Oliver Heger and
+ Bruno P. Kinoshita.
+o LANG-1013: Add StringUtils.truncate(). Thanks to Thiago Andrade.
+o LANG-1195: Enhance MethodUtils to allow invocation of private methods. Thanks
+ to Derek C. Ashmore.
+o LANG-1189: Add getAndIncrement/getAndDecrement/getAndAdd/incrementAndGet/
+ decrementAndGet/addAndGet in Mutable* classes. Thanks to
+ Haiyang Li and Matthew Bartenschlag.
+o LANG-1225: Add RandomStringUtils#randomGraph and #randomPrint which match
+ corresponding regular expression class. Thanks to Caleb Cushing.
+o LANG-1223: Add StopWatch#getTime(TimeUnit). Thanks to Nick Manley.
+o LANG-781: Add methods to ObjectUtils class to check for null elements in the
+ array. Thanks to Krzysztof Wolny.
+o LANG-1228: Prefer Throwable.getCause() in ExceptionUtils.getCause().
+ Thanks to Brad Hess.
+o LANG-1233: DiffBuilder add method to allow appending from a DiffResult.
+ Thanks to Nick Manley.
+o LANG-1168: Add SystemUtils.IS_OS_WINDOWS_10 property.
+ Thanks to Pascal Schumacher.
+o LANG-1115: Add support for varargs in ConstructorUtils, MemberUtils, and
+ MethodUtils. Thanks to Jim Lloyd and Joe Ferner.
+o LANG-1134: Add methods to check numbers against NaN and infinite to
+ Validate. Thanks to Alan Smithee.
+o LANG-1220: Add tests for missed branches in DateUtils.
+ Thanks to Casey Scarborough.
+o LANG-1146: z/OS identification in SystemUtils.
+ Thanks to Gabor Liptak.
+o LANG-1192: FastDateFormat support of the week-year component (uppercase 'Y').
+ Thanks to Dominik Stadler.
+o LANG-1169: Add StringUtils methods to compare a string to multiple strings.
+ Thanks to Rafal Glowinski, Robert Parr and Arman Sharif.
+o LANG-1185: Add remove by regular expression methods in StringUtils.
+o LANG-1139: Add replace by regular expression methods in StringUtils.
+o LANG-1171: Add compare methods in StringUtils.
+o LANG-1174: Add sugar to RandomUtils. Thanks to Punkratz312.
+o LANG-1154: FastDateFormat APIs that use a StringBuilder. Thanks to
+ Gary Gregory.
+o LANG-1149: Ability to throw checked exceptions without declaring them. Thanks
+ to Gregory Zak.
+o LANG-1153: Implement ParsePosition api for FastDateParser.
+o LANG-1137: Add check for duplicate event listener in EventListenerSupport.
+ Thanks to Matthew Aguirre.
+o LANG-1135: Add method containsAllWords to WordUtils. Thanks to
+ Eduardo Martins.
+o LANG-1132: ReflectionToStringBuilder doesn't throw IllegalArgumentException
+ when the constructor's object param is null. Thanks to Jack Tan.
+o LANG-701: StringUtils join with var args. Thanks to James Sawle.
+o LANG-1105: Add ThreadUtils - A utility class which provides helper methods
+ related to java.lang.Thread Issue: LANG-1105. Thanks to
+ Hendrik Saly.
+o LANG-1031: Add annotations to exclude fields from ReflectionEqualsBuilder,
+ ReflectionToStringBuilder and ReflectionHashCodeBuilder. Thanks
+ to Felipe Adorno.
+o LANG-1127: Use JUnit rules to set and reset the default Locale and TimeZone.
+o LANG-1119: Add rotate(string, int) method to StringUtils. Thanks to
+ Loic Guibert.
+o LANG-1099: Add swap and shift operations for arrays to ArrayUtils. Thanks to
+ Adrian Ber.
+o LANG-1050: Change nullToEmpty methods to generics. Thanks to James Sawle.
+o LANG-1074: Add a method to ArrayUtils for removing all occurrences of a given
+ element Issue: LANG-1074. Thanks to Haiyang Li.
+
+FIXED BUGS
+============
+
+o LANG-1261: ArrayUtils.contains returns false for instances of subtypes.
+o LANG-1252: Rename NumberUtils.isNumber, isCreatable to better reflect
+ createNumber. Also, accommodated for "+" symbol as prefix in
+ isCreatable and isNumber. Thanks to Rob Tompkins.
+o LANG-1230: Remove unnecessary synchronization from registry lookup in
+ EqualsBuilder and HashCodeBuilder. Thanks to Philippe Marschall.
+o LANG-1214: Handle "void" in ClassUtils.getClass(). Thanks to Henry Tung.
+o LANG-1250: SerializationUtils#deserialize has unnecessary code and a comment
+ for that. Thanks to Glease Wang.
+o LANG-1190: TypeUtils.isAssignable throws NullPointerException when fromType
+ has type variables and toType generic superclass specifies type
+ variable. Thanks to Pascal Schumacher.
+o LANG-1226: StringUtils#normalizeSpace does not trim the string anymore.
+ Thanks to Pascal Schumacher.
+o LANG-1251: SerializationUtils.ClassLoaderAwareObjectInputStream should use
+ static initializer to initialize primitiveTypes map. Thanks to
+ Takuya Ueshin.
+o LANG-1248: FastDatePrinter Memory allocation regression. Thanks to
+ Benoit Wiart.
+o LANG-1018: Fix precision loss on NumberUtils.createNumber(String). Thanks to
+ Nick Manley.
+o LANG-1199: Fix implementation of StringUtils.getJaroWinklerDistance(). Thanks
+ to M. Steiger.
+o LANG-1244: Fix dead links in StringUtils.getLevenshteinDistance() javadoc.
+ Thanks to jjbankert.
+o LANG-1242: "\u2284":"?" mapping missing from
+ EntityArrays#HTML40_EXTENDED_ESCAPE. Thanks to Neal Stewart.
+o LANG-901: StringUtils#startsWithAny/endsWithAny is case sensitive -
+ documented as case insensitive. Thanks to Matthew Bartenschlag.
+o LANG-1232: DiffBuilder: Add null check on fieldName when appending Object or
+ Object[]. Thanks to Nick Manley.
+o LANG-1178: ArrayUtils.removeAll(Object array, int... indices) should do the
+ clone, not its callers. Thanks to Henri Yandell.
+o LANG-1120: StringUtils.stripAccents should remove accents from "Å" and "Å‚".
+ Thanks to kaching88.
+o LANG-1205: NumberUtils.createNumber() behaves inconsistently with
+ NumberUtils.isNumber(). Thanks to pbrose.
+o LANG-1222: Fix for incorrect comment on StringUtils.containsIgnoreCase
+ method. Thanks to Adam J.
+o LANG-1221: Fix typo on appendIfMissing javadoc. Thanks to Pierre Templier.
+o LANG-1202: parseDateStrictly doesn't pass specified locale. Thanks to
+ Markus Jelsma.
+o LANG-1219: FastDateFormat doesn't respect summer daylight in some localized
+ strings. Thanks to Jarek.
+o LANG-1175: Remove Ant-based build.
+o LANG-1194: Limit max heap memory for consistent Travis CI build.
+o LANG-1186: Fix NullPointerException in FastDateParser$TimeZoneStrategy.
+ Thanks to NickManley.
+o LANG-1193: ordinalIndexOf("abc", "ab", 1) gives incorrect answer of -1
+ (correct answer should be 0); revert fix for LANG-1077. Thanks to
+ Qin Li.
+o LANG-1002: Several predefined ISO FastDateFormats in DateFormatUtils are
+ incorrect. Thanks to Michael Osipov.
+o LANG-1152: StringIndexOutOfBoundsException or field over-write for large year
+ fields in FastDateParser. Thanks to Pas Filip.
+o LANG-1141: StrLookup.systemPropertiesLookup() no longer reacts on changes on
+ system properties.
+o LANG-1147: EnumUtils *BitVector issue with more than 32 values Enum. Thanks
+ to Loic Guibert.
+o LANG-1059: Capitalize javadoc is incorrect. Thanks to Colin Casey.
+o LANG-1122: Inconsistent behavior of swap for malformed inputs. Thanks to
+ Adrian Ber.
+o LANG-1130: Fix critical issues reported by SonarQube.
+o LANG-1131: StrBuilder.equals(StrBuilder) doesn't check for null inputs.
+o LANG-1128: JsonToStringStyle doesn't handle chars and objects correctly.
+ Thanks to Jack Tan.
+o LANG-1126: DateFormatUtilsTest.testSMTP depends on the default Locale.
+o LANG-1123: Unit test FastDatePrinterTimeZonesTest needs a timezone set.
+ Thanks to Christian P. Momon.
+o LANG-916: DateFormatUtils.format does not correctly change Calendar
+ TimeZone in certain situations. Thanks to Christian P. Momon.
+o LANG-1116: DateUtilsTest.testLang530 fails for some timezones. Thanks to
+ Aaron Sheldon.
+o LANG-1114: TypeUtils.ParameterizedType#equals doesn't work with wildcard
+ types. Thanks to Andy Coates.
+o LANG-1118: StringUtils.repeat('z', -1) throws NegativeArraySizeException.
+ Thanks to Loic Guibert.
+o LANG-1111: Fix FindBugs warnings in DurationFormatUtils.
+o LANG-1162: StringUtils#equals fails with Index OOBE on non-Strings with
+ identical leading prefix..
+o LANG-1163: There are no tests for CharSequenceUtils.regionMatches.
+o LANG-1200: Fix Javadoc of StringUtils.ordinalIndexOf. Thanks to BarkZhang.
+o LANG-1191: Incorrect Javadoc
+ StringUtils.containsAny(CharSequence, CharSequence...). Thanks to
+ qed, Brent Worden and Gary Gregory.
+
+CHANGES
+=========
+o LANG-1197: Prepare Java 9 detection.
+o LANG-1262: CompareToBuilder.append(Object, Object, Comparator) method is too
+ big to be inlined. Thanks to Ruslan Cheremin.
+o LANG-1259: Javadoc for ArrayUtils.isNotEmpty() is slightly misleading. Thanks
+ to Dominik Stadler.
+o LANG-1247: FastDatePrinter generates extra Date objects. Thanks to
+ Benoit Wiart.
+o LANG-1229: HashCodeBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1243: Simplify ArrayUtils removeElements by using new decrementAndGet()
+ method.
+o LANG-1240: Optimize BitField constructor implementation. Thanks to zhanhb.
+o LANG-1206: Improve CharSetUtils.squeeze() performance. Thanks to
+ Mohammed Alfallaj.
+o LANG-1176: Improve ArrayUtils removeElements time complexity to O(n). Thanks
+ to Jeffery Yuan.
+o LANG-1234: getLevenshteinDistance with a threshold: optimize implementation
+ if the strings lengths differ more than the threshold. Thanks to
+ Jonatan Jönsson.
+o LANG-1151: Performance improvements for NumberUtils.isParsable. Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-1218: EqualsBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1210: StringUtils#startsWithAny has error in Javadoc. Thanks to
+ Matthias Niehoff.
+o LANG-1208: StrSubstitutor can preserve escapes. Thanks to Samuel Karp.
+o LANG-1182: Clarify Javadoc of StringUtils.containsAny(). Thanks to
+ Larry West and Pascal Schumacher.
+o LANG-1183: Making replacePattern/removePattern methods null safe in
+ StringUtils.
+o LANG-1057: Replace StringBuilder with String concatenation for better
+ optimization. Thanks to Otávio Santana.
+o LANG-1075: Deprecate SystemUtils.FILE_SEPARATOR and
+ SystemUtils.PATH_SEPARATOR.
+o LANG-979: TypeUtils.parameterizeWithOwner - wrong format descriptor for
+ "invalid number of type parameters". Thanks to Bruno P. Kinoshita.
+o LANG-1112: MultilineRecursiveToStringStyle largely unusable due to being
+ package-private.
+o LANG-1058: StringUtils.uncapitalize performance improvement. Thanks to
+ Leo Wang.
+o LANG-1069: CharSet.getInstance documentation does not clearly explain how
+ to include negation character in set. Thanks to Arno Noordover.
+o LANG-1107: Fix parsing edge cases in FastDateParser.
+o LANG-1273: Added new property IS_OS_MAC_OSX_EL_CAPITAN in SystemUtils. Thanks
+ to Jake Wang.
+
+=============================================================================
+
+ Release Notes for version 3.4
+
+
+COMPATIBILITY
+=============
+
+Commons Lang 3.4 is fully binary compatible to the last release and can
+therefore be used as a drop in replacement for 3.3.2. Note that the value of
+org.apache.commons.lang3.time.DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN
+has changed, which may affect clients using the constant. Furthermore the
+constant is used internally in
+o DurationFormatUtils.formatDurationISO(long)
+o DurationFormatUtils.formatPeriodISO(long, long)
+
+For more information see https://issues.apache.org/jira/browse/LANG-1000.
+
+NEW FEATURES
+==============
+
+o LANG-821: Support OS X versions in SystemUtils. Thanks to Timo Kockert.
+o LANG-1103: Add SystemUtils.IS_JAVA_1_9
+o LANG-1093: Add ClassUtils.getAbbreviatedName(). Thanks to Fabian Lange.
+o LANG-1082: Add option to disable the "objectsTriviallyEqual" test in
+ DiffBuilder. Thanks to Jonathan Baker.
+o LANG-1015: Add JsonToStringStyle implementation to ToStringStyle. Thanks to
+ Thiago Andrade.
+o LANG-1080: Add NoClassNameToStringStyle implementation of ToStringStyle.
+ Thanks to Innokenty Shuvalov.
+o LANG-883: Add StringUtils.containsAny(CharSequence, CharSequence...) method.
+ Thanks to Daniel Stewart.
+o LANG-1052: Multiline recursive to string style. Thanks to Jan Matèrne.
+o LANG-536: Add isSorted() to ArrayUtils. Thanks to James Sawle.
+o LANG-1033: Add StringUtils.countMatches(CharSequence, char)
+o LANG-1021: Provide methods to retrieve all fields/methods annotated with a
+ specific type. Thanks to Alexander Müller.
+o LANG-1016: NumberUtils#isParsable method(s). Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-999: Add fuzzy String matching logic to StringUtils. Thanks to
+ Ben Ripkens.
+o LANG-994: Add zero copy read method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-993: Add zero copy write method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-1044: Add method MethodUtils.invokeExactMethod(Object, String)
+o LANG-1045: Add method MethodUtils.invokeMethod(Object, String)
+
+FIXED BUGS
+============
+
+o LANG-794: SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect. Thanks to
+ Timo Kockert.
+o LANG-1104: Parse test fails for TimeZone America/Sao_Paulo
+o LANG-948: Exception while using ExtendedMessageFormat and escaping braces.
+ Thanks to Andrey Khobnya.
+o LANG-1092: Wrong formatting of time zones with daylight saving time in
+ FastDatePrinter
+o LANG-1090: FastDateParser does not set error indication in ParsePosition
+o LANG-1089: FastDateParser does not handle excess hours as per
+ SimpleDateFormat
+o LANG-1061: FastDateParser error - timezones not handled correctly. Thanks to
+ dmeneses.
+o LANG-1087: NumberUtils#createNumber() returns positive BigDecimal when
+ negative Float is expected. Thanks to Renat Zhilkibaev.
+o LANG-1081: DiffBuilder.append(String, Object left, Object right) does not do
+ a left.equals(right) check. Thanks to Jonathan Baker.
+o LANG-1055: StrSubstitutor.replaceSystemProperties does not work consistently.
+ Thanks to Jonathan Baker.
+o LANG-1083: Add (T) casts to get unit tests to pass in old JDK. Thanks to
+ Jonathan Baker.
+o LANG-1073: Read wrong component type of array in add in ArrayUtils.
+ Thanks to haiyang li.
+o LANG-1077: StringUtils.ordinalIndexOf("aaaaaa", "aa", 2) != 3 in StringUtils.
+ Thanks to haiyang li.
+o LANG-1072: Duplicated "0x" check in createBigInteger in NumberUtils. Thanks
+ to haiyang li.
+o LANG-1064: StringUtils.abbreviate description doesn't agree with the
+ examples. Thanks to B.J. Herbison.
+o LANG-1041: Fix MethodUtilsTest so it does not depend on JDK method ordering.
+ Thanks to Alexandre Bartel.
+o LANG-1000: ParseException when trying to parse UTC dates with Z as zone
+ designator using DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT
+o LANG-1035: Javadoc for EqualsBuilder.reflectionEquals() is unclear
+o LANG-1001: ISO 8601 misspelled throughout the Javadocs. Thanks to
+ Michael Osipov.
+o LANG-1088: FastDateParser should be case insensitive
+o LANG-995: Fix bug with stripping spaces on last line in WordUtils.wrap().
+ Thanks to Andrey Khobnya.
+
+CHANGES
+=========
+
+o LANG-1102: Make logic for comparing OS versions in SystemUtils smarter
+o LANG-1091: Shutdown thread pools in test cases. Thanks to Fabian Lange.
+o LANG-1101: FastDateParser and FastDatePrinter support 'X' format
+o LANG-1100: Avoid memory allocation when using date formatting to StringBuffer.
+ Thanks to mbracher.
+o LANG-935: Possible performance improvement on string escape functions.
+ Thanks to Fabian Lange, Thomas Neidhart.
+o LANG-1098: Avoid String allocation in StrBuilder.append(CharSequence). Thanks
+ to Mikhail Mazurskiy, Fabian Lange.
+o LANG-1098: Update maven-checkstyle-plugin to 2.14. Thanks to Micha? Kordas.
+o LANG-1097: Update org.easymock:easymock to 3.3.1. Thanks to Micha? Kordas.
+o LANG-1096: Update maven-pmd-plugin to 3.4. Thanks to Micha? Kordas.
+o LANG-1095: Update maven-antrun-plugin to 1.8. Thanks to Micha? Kordas.
+o LANG-877: Performance improvements for StringEscapeUtils. Thanks to
+ Fabian Lange.
+o LANG-1071: Fix wrong examples in Javadoc of
+ StringUtils.replaceEachRepeatedly(...),
+ StringUtils.replaceEach(...) Thanks to Arno Noordover.
+o LANG-827: CompareToBuilder's doc doesn't specify precedence of fields it
+ uses in performing comparisons
+o LANG-1020: Improve performance of normalize space. Thanks to Libor Ondrusek.
+o LANG-1027: org.apache.commons.lang3.SystemUtils#isJavaVersionAtLeast should
+ return true by default
+o LANG-1026: Bring static method references in StringUtils to consistent style.
+ Thanks to Alex Yursha.
+o LANG-1017: Use non-ASCII digits in Javadoc examples for
+ StringUtils.isNumeric. Thanks to Christoph Schneegans.
+o LANG-1008: Change min/max methods in NumberUtils/IEEE754rUtils from array
+ input parameters to varargs. Thanks to Thiago Andrade.
+o LANG-1006: Add wrap (with String or char) to StringUtils. Thanks to
+ Thiago Andrade.
+o LANG-1005: Extend DurationFormatUtils#formatDurationISO default pattern to
+ match #formatDurationHMS. Thanks to Michael Osipov.
+o LANG-1007: Fixing NumberUtils JAVADoc comments for max methods. Thanks to
+ Thiago Andrade.
+o LANG-731: Better Javadoc for BitField class
+o LANG-1004: DurationFormatUtils#formatDurationHMS implementation does not
+ correspond to Javadoc and vice versa. Thanks to Michael Osipov.
+o LANG-1003: DurationFormatUtils are not able to handle negative
+ durations/periods
+o LANG-998: Javadoc is not clear on preferred pattern to instantiate
+ FastDateParser / FastDatePrinter
+
+=============================================================================
+
+ Release Notes for version 3.3.2
+
+NEW FEATURES
+==============
+
+o LANG-989: Add org.apache.commons.lang3.SystemUtils.IS_JAVA_1_8
+
+FIXED BUGS
+============
+
+o LANG-992: NumberUtils#isNumber() returns false for "0.0", "0.4790", et al
+
+=============================================================================
+
+ Release Notes for version 3.3.1
+
+FIXED BUGS
+============
+
+o LANG-987: DateUtils.getFragmentInDays(Date, Calendar.MONTH) returns wrong
+ days
+o LANG-983: DurationFormatUtils does not describe format string fully
+o LANG-981: DurationFormatUtils#lexx does not detect unmatched quote char
+o LANG-984: DurationFormatUtils does not handle large durations correctly
+o LANG-982: DurationFormatUtils.formatDuration(61999, "s.SSSS") - ms field
+ size should be 4 digits
+o LANG-978: Failing tests with Java 8 b128
+
+=============================================================================
+
+ Release Notes for version 3.3
+
+NEW FEATURES
+==============
+
+o LANG-955: Add methods for removing all invalid characters according to
+ XML 1.0 and XML 1.1 in an input string to StringEscapeUtils.
+ Thanks to Adam Hooper.
+o LANG-970: Add APIs MutableBoolean setTrue() and setFalse()
+o LANG-962: Add SerializationUtils.roundtrip(T extends Serializable) to
+ serialize then deserialize
+o LANG-637: There should be a DifferenceBuilder with a
+ ReflectionDifferenceBuilder implementation
+o LANG-944: Add the Jaro-Winkler string distance algorithm to StringUtils.
+ Thanks to Rekha Joshi.
+o LANG-417: New class ClassPathUtils with methods for turning FQN into
+ resource path
+o LANG-834: Validate: add inclusiveBetween and exclusiveBetween overloads
+ for primitive types
+o LANG-900: New RandomUtils class. Thanks to Duncan Jones.
+o LANG-966: Add IBM OS/400 detection
+
+FIXED BUGS
+============
+
+o LANG-621: ReflectionToStringBuilder.toString does not debug 3rd party object
+ fields within 3rd party object. Thanks to Philip Hodges,
+ Thomas Neidhart.
+o LANG-977: NumericEntityEscaper incorrectly encodes supplementary characters.
+ Thanks to Chris Karcher.
+o LANG-973: Make some private fields final
+o LANG-971: NumberUtils#isNumber(String) fails to reject invalid Octal numbers
+o LANG-972: NumberUtils#isNumber does not allow for hex 0XABCD
+o LANG-969: StringUtils.toEncodedString(byte[], Charset) needlessly throws
+ UnsupportedEncodingException. Thanks to Matt Bishop.
+o LANG-946: ConstantInitializerTest fails when building with IBM JDK 7
+o LANG-954: uncaught PatternSyntaxException in FastDateFormat on Android.
+ Thanks to Michael Keppler.
+o LANG-936: StringUtils.getLevenshteinDistance with too big of a threshold
+ returns wrong result. Thanks to Yaniv Kunda, Eli Lindsey.
+o LANG-943: Test DurationFormatUtilsTest.testEdgeDuration fails in
+ JDK 1.6, 1.7 and 1.8, BRST time zone
+o LANG-613: ConstructorUtils.getAccessibleConstructor() Does Not Check the
+ Accessibility of Enclosing Classes
+o LANG-951: Fragments are wrong by 1 day when using fragment YEAR or MONTH.
+ Thanks to Sebastian Götz.
+o LANG-950: FastDateParser does not handle two digit year parsing like
+ SimpleDateFormat
+o LANG-949: FastDateParserTest.testParses does not test FastDateParser
+o LANG-915: Wrong locale handling in LocaleUtils.toLocale().
+ Thanks to Sergio Fernández.
+
+CHANGES
+=========
+
+o LANG-961: org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field)
+ does not clean up after itself
+o LANG-958: FastDateParser javadoc incorrectly states that SimpleDateFormat
+ is used internally
+o LANG-956: Improve Javadoc of WordUtils.wrap methods
+o LANG-939: Move Documentation from user guide to package-info files
+o LANG-953: Convert package.html files to package-info.java files
+o LANG-940: Fix deprecation warnings
+o LANG-819: EnumUtils.generateBitVector needs a "? extends"
+
+=============================================================================
+
+ Release Notes for version 3.2.1
+
+BUG FIXES
+===========
+
+o LANG-937: Fix missing Hamcrest dependency in Ant Build
+o LANG-941: Test failure in LocaleUtilsTest when building with JDK 8
+o LANG-942: Test failure in FastDateParserTest and FastDateFormat_ParserTest
+ when building with JDK8. Thanks to Bruno P. Kinoshita,
+ Henri Yandell.
+o LANG-938: Build fails with test failures when building with JDK 8
+
+=============================================================================
+
+ Release Notes for version 3.2
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+=============================================================================
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+=============================================================================
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12 hour clock and not
+ 24 hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.7.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.7.txt
new file mode 100644
index 000000000..d71f1e804
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.7.txt
@@ -0,0 +1,1176 @@
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+ Apache Commons Lang
+ Version 3.7
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.7 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 and onwards now targets Java 5.0, making use of features that arrived with Java 5.0 such as generics,
+variable arguments, autoboxing, concurrency and formatted output.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+Apache Commons Lang, a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang.
+
+New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.
+
+Changes in this version include:
+
+New features:
+o LANG-1355: TimeZone.getTimeZone() in FastDateParser causes resource contention (PR #296.) Thanks to Chas Honton.
+o LANG-1360: Add methods to ObjectUtils to get various forms of class names in a null-safe manner Thanks to Gary Gregory.
+
+Fixed Bugs:
+o LANG-1362: Fix tests DateUtilsTest for Java 9 with en_GB locale Thanks to Stephen Colebourne.
+o LANG-1365: Fix NullPointerException in isJavaVersionAtLeast on Java 10, add SystemUtils.IS_JAVA_10, add JavaVersion.JAVA_10 Thanks to Gary Gregory.
+o LANG-1348: StackOverflowError on TypeUtils.toString(...) for a generic return type of Enum.valueOf Thanks to mbusso.
+o LANG-1350: ConstructorUtils.invokeConstructor(Class, Object...) regression Thanks to Brett Kail.
+o LANG-1349: EqualsBuilder#isRegistered: swappedPair construction bug Thanks to Naman Nigam.
+o LANG-1357: org.apache.commons.lang3.time.FastDateParser should use toUpperCase(Locale) Thanks to BruceKuiLiu.
+
+Changes:
+o LANG-1358: Improve StringUtils#replace throughput Thanks to Stephane Landelle.
+o LANG-1346: Remove deprecation from RandomStringUtils
+o LANG-1361: ExceptionUtils.getThrowableList() is using deprecated ExceptionUtils.getCause() Thanks to Ana.
+
+
+Historical list of changes: https://commons.apache.org/proper/commons-lang/changes-report.html
+
+For complete information on Apache Commons Lang, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons Lang website:
+
+https://commons.apache.org/proper/commons-lang/
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.6
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.6 version of
+Apache Commons Lang as well as a history all changes in the Commons Lang 3.x
+release line. Commons Lang is a set of utility functions and reusable
+components that should be of use in any Java environment. Commons Lang 3.6 at
+least requires Java 7.0. Note that this has changed from Commons Lang 3.5, which
+only required Java 1.6.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+HIGHLIGHTS
+==========
+
+Some of the highlights in this release include:
+
+o The class org.apache.commons.lang3.concurrent.Memoizer is an implementation
+ of the Memoizer pattern as shown in
+ Goetz, Brian et al. (2006) - Java Concurrency in Practice, p. 108.
+o The class org.apache.commons.lang3.ArchUtils has been added. ArchUtils is
+ a utility class for the "os.arch" system property.
+
+DEPRECATIONS
+============
+
+The Apache Commons Community has recently set up the Commons Text component
+as a home for algorithms working on strings. For this reason most of the string
+focused functionality in Commons Lang has been deprecated and moved to
+Commons Text. This includes:
+
+o All classes in the org.apache.commons.lang3.text and the
+ org.apache.commons.lang3.text.translate packages
+o org.apache.commons.lang3.StringEscapeUtils
+o org.apache.commons.lang3.RandomStringUtils
+o The methods org.apache.commons.lang3.StringUtils.getJaroWinklerDistance and
+ org.apache.commons.lang3.StringUtils.getLevenshteinDistance
+
+For more information see the Commons Text website:
+
+ https://commons.apache.org/text
+
+The class org.apache.commons.lang3.CharEncoding has been deprecated in favor of
+java.nio.charset.StandardCharsets.
+
+The following methods have been deprecated in
+org.apache.commons.lang3.ArrayUtils in favor of the corresponding insert
+methods. Note that the handling for null inputs differs between add and insert.
+
+o add(boolean[], int, boolean) -> insert(int, boolean[], boolean...)
+o add(byte[], int, boolean) -> insert(int, byte[], byte...)
+o add(char[], int, boolean) -> insert(int, char[], char...)
+o add(double[], int, boolean) -> insert(int, double[], double...)
+o add(float[], int, boolean) -> insert(int, float[], float...)
+o add(int[], int, boolean) -> insert(int, int[], int...)
+o add(long[], int, boolean) -> insert(int, long[], long...)
+o add(short[], int, boolean) -> insert(int, short[], short...)
+o add(T[], int, boolean) -> insert(int, T[], T...)
+
+
+COMPATIBILITY WITH JAVA 9
+==================
+
+The MANIFEST.MF now contains an additional entry:
+
+ Automatic-Module-Name: org.apache.commons.lang3
+
+This should make it possible to use Commons Lang 3.6 as a module in the Java 9
+module system. For more information see the corresponding issue and the
+referenced mailing list discussions:
+
+ https://issues.apache.org/jira/browse/LANG-1338
+
+The build problems present in the 3.5 release have been resolved. Building
+Commons Lang 3.6 should work out of the box with the latest Java 9 EA build.
+Please report any Java 9 related issues at:
+
+ https://issues.apache.org/jira/browse/LANG
+
+NEW FEATURES
+============
+
+o LANG-1336: Add NUL Byte To CharUtils. Thanks to Beluga Behr.
+o LANG-1304: Add method in StringUtils to determine if string contains both
+ mixed cased characters. Thanks to Andy Klimczak.
+o LANG-1325: Increase test coverage of ToStringBuilder class to 100%.
+ Thanks to Arshad Basha.
+o LANG-1307: Add a method in StringUtils to extract only digits out of input
+ string. Thanks to Arshad Basha.
+o LANG-1256: Add JMH maven dependencies. Thanks to C0rWin.
+o LANG-1167: Add null filter to ReflectionToStringBuilder.
+ Thanks to Mark Dacek.
+o LANG-1299: Add method for converting string to an array of code points.
+o LANG-660: Add methods to insert arrays into arrays at an index.
+o LANG-1034: Add support for recursive comparison to
+ EqualsBuilder#reflectionEquals. Thanks to Yathos UG.
+o LANG-1067: Add a reflection-based variant of DiffBuilder.
+o LANG-740: Implementation of a Memoizer. Thanks to James Sawle.
+o LANG-1258: Add ArrayUtils#toStringArray method.
+ Thanks to IG, Grzegorz Rożniecki.
+o LANG-1160: StringUtils#abbreviate should support 'custom ellipses' parameter.
+o LANG-1293: Add StringUtils#isAllEmpty and #isAllBlank methods.
+ Thanks to Pierre Templier, Martin Tarjanyi.
+o LANG-1313: Add ArchUtils - An utility class for the "os.arch" system property.
+ Thanks to Tomschi.
+o LANG-1272: Add shuffle methods to ArrayUtils.
+o LANG-1317: Add MethodUtils#findAnnotation and extend
+ MethodUtils#getMethodsWithAnnotation for non-public, super-class
+ and interface methods. Thanks to Yasser Zamani.
+o LANG-1331: Add ImmutablePair.nullPair().
+o LANG-1332: Add ImmutableTriple.nullTriple().
+
+FIXED BUGS
+==========
+
+o LANG-1337: Fix test failures in IBM JDK 8 for ToStringBuilderTest.
+o LANG-1319: MultilineRecursiveToStringStyle StackOverflowError when object is
+ an array.
+o LANG-1320: LocaleUtils#toLocale does not support language followed by UN M.49
+ numeric-3 area code followed by variant.
+o LANG-1300: Clarify or improve behavior of int-based indexOf methods in
+ StringUtils. Thanks to Mark Dacek.
+o LANG-1286: RandomStringUtils random method can overflow and return characters
+ outside of specified range.
+o LANG-1292: WordUtils.wrap throws StringIndexOutOfBoundsException.
+o LANG-1287: RandomStringUtils#random can enter infinite loop if end parameter
+ is to small. Thanks to Ivan Morozov.
+o LANG-1285: NullPointerException in FastDateParser$TimeZoneStrategy.
+ Thanks to Francesco Chicchiriccò.
+o LANG-1281: Javadoc of StringUtils.ordinalIndexOf is contradictory.
+ Thanks to Andreas Lundblad.
+o LANG-1188: StringUtils#join(T...): warning: [unchecked] Possible heap
+ pollution from parameterized vararg type T.
+o LANG-1144: Multiple calls of
+ org.apache.commons.lang3.concurrent.LazyInitializer.initialize()
+ are possible. Thanks to Waldemar Maier, Gary Gregory.
+o LANG-1276: StrBuilder#replaceAll ArrayIndexOutOfBoundsException.
+ Thanks to Andy Klimczak.
+o LANG-1278: BooleanUtils javadoc issues. Thanks to Duke Yin.
+o LANG-1070: ArrayUtils#add confusing example in javadoc.
+ Thanks to Paul Pogonyshev.
+o LANG-1271: StringUtils#isAnyEmpty and #isAnyBlank should return false for an
+ empty array. Thanks to Pierre Templier.
+o LANG-1155: Add StringUtils#unwrap. Thanks to Saif Asif, Thiago Andrade.
+o LANG-1311: TypeUtils.toString() doesn't handle primitive and Object arrays
+ correctly. Thanks to Aaron Digulla.
+o LANG-1312: LocaleUtils#toLocale does not support language followed by UN M.49
+ numeric-3 area code.
+o LANG-1265: Build failures when building with Java 9 EA.
+o LANG-1314: javadoc creation broken with Java 8. Thanks to Allon Murienik.
+o LANG-1310: MethodUtils.invokeMethod throws ArrayStoreException if using
+ varargs arguments and smaller types than the method defines.
+ Thanks to Don Jeba.
+
+CHANGES
+=======
+
+o LANG-1338: Add Automatic-Module-Name MANIFEST entry for Java 9
+ compatibility.
+o LANG-1334: Deprecate CharEncoding in favour of
+ java.nio.charset.StandardCharsets.
+o LANG-1110: Implement HashSetvBitSetTest using JMH.
+ Thanks to Bruno P. Kinoshita.
+o LANG-1290: Increase test coverage of org.apache.commons.lang3.ArrayUtils.
+ Thanks to Andrii Abramov.
+o LANG-1274: StrSubstitutor should state its thread safety.
+o LANG-1277: StringUtils#getLevenshteinDistance reduce memory consumption.
+ Thanks to yufcuy.
+o LANG-1279: Update Java requirement from Java 6 to 7.
+o LANG-1143: StringUtils should use toXxxxCase(int) rather than
+ toXxxxCase(char). Thanks to sebb.
+o LANG-1297: Add SystemUtils.getHostName() API.
+o LANG-1301: Moving apache-rat-plugin configuration into pluginManagement.
+ Thanks to Karl Heinz Marbaise.
+o LANG-1316: Deprecate classes/methods moved to commons-text.
+
+=============================================================================
+
+ Release Notes for version 3.5
+
+
+HIGHLIGHTS
+==========
+
+Some of the highlights in this release include:
+
+o Added Java 9 detection to org.apache.commons.lang3.SystemUtils.
+o Support for shifting and swapping elements in
+ org.apache.commons.lang3.ArrayUtils.
+o New methods for generating random strings from different character classes
+ including alphabetic, alpha-numeric and ASCII added to
+ org.apache.commons.lang3.RandomStringUtils.
+o Numerous extensions to org.apache.commons.lang3.StringUtils including
+ null safe compare variants, more remove and replace variants, rotation and
+ truncation.
+o Added org.apache.commons.lang3.ThreadUtils - a utility class to work with
+ instances of java.lang.Thread and java.lang.ThreadGroup.
+o Added annotations @EqualsExclude, @HashCodeExclude and @ToStringExclude to
+ mark fields which should be ignored by the reflective builders in the
+ org.apache.commons.lang3.builder package.
+o Support for various modify and retrieve value use cases added to the classes
+ in org.apache.commons.lang3.mutable.
+
+COMPATIBILITY
+=============
+
+Apache Commons Lang 3.5 is binary compatible with the 3.4 release. Users
+should not experience any problems when upgrading from 3.4 to 3.5.
+
+There has been an addition to the org.apache.commons.lang3.time.DatePrinter
+interface:
+
+o Added method 'public boolean parse(java.lang.String, java.text.ParsePosition,
+ java.util.Calendar)'
+o Added method 'public java.lang.Appendable format(long, java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Date,
+ java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Calendar,
+ java.lang.Appendable)'
+
+For this reason 3.5 is not strictly source compatible to 3.4. Since the
+DatePrinter interface is not meant to be implemented by clients, this
+change it not considered to cause any problems.
+
+JAVA 9 SUPPORT
+==============
+
+Java 9 introduces a new version-string scheme. Details of this new scheme are
+documented in JEP-223 (https://openjdk.org/jeps/223). In order to support
+JEP-223 two classes had to be changed:
+
+o org.apache.commons.lang3.JavaVersion
+ deprecated enum constant JAVA_1_9
+ introduced enum constant JAVA_9
+
+o org.apache.commons.lang3.SystemUtils
+ deprecated constant IS_JAVA_1_9
+ introduced constant IS_JAVA_9
+
+For more information see LANG-1197
+(https://issues.apache.org/jira/browse/LANG-1197). All other APIs are expected
+to work with Java 9.
+
+BUILDING ON JAVA 9
+==================
+
+Java 8 introduced the Unicode Consortium's Common Locale Data Repository as
+alternative source for locale data. Java 9 will use the CLDR provider as
+default provider for locale data (see https://openjdk.org/jeps/252). This
+causes an number of locale-sensitive test in Commons Lang to fail. In order
+to build Commons Lang 3.5 on Java 9, the locale provider has to be set to
+'JRE':
+
+ mvn -Djava.locale.providers=JRE clean install
+
+We are currently investigating ways to support building on Java 9 without
+further configuration. For more information see:
+https://issues.apache.org/jira/browse/LANG-1265
+
+
+NEW FEATURES
+==============
+
+o LANG-1275: Added a tryAcquire() method to TimedSemaphore.
+o LANG-1255: Add DateUtils.toCalendar(Date, TimeZone). Thanks to Kaiyuan Wang.
+o LANG-1023: Add WordUtils.wrap overload with customizable breakable character.
+ Thanks to Marko Bekhta.
+o LANG-787: Add method removeIgnoreCase(String, String) to StringUtils. Thanks
+ to Gokul Nanthakumar C.
+o LANG-1224: Extend RandomStringUtils with methods that generate strings
+ between a min and max length. Thanks to Caleb Cushing.
+o LANG-1257: Add APIs StringUtils.wrapIfMissing(String, char|String). Thanks to
+ Gary Gregory.
+o LANG-1253: Add RandomUtils#nextBoolean() method. Thanks to adilek.
+o LANG-1085: Add a circuit breaker implementation. Thanks to Oliver Heger and
+ Bruno P. Kinoshita.
+o LANG-1013: Add StringUtils.truncate(). Thanks to Thiago Andrade.
+o LANG-1195: Enhance MethodUtils to allow invocation of private methods. Thanks
+ to Derek C. Ashmore.
+o LANG-1189: Add getAndIncrement/getAndDecrement/getAndAdd/incrementAndGet/
+ decrementAndGet/addAndGet in Mutable* classes. Thanks to
+ Haiyang Li and Matthew Bartenschlag.
+o LANG-1225: Add RandomStringUtils#randomGraph and #randomPrint which match
+ corresponding regular expression class. Thanks to Caleb Cushing.
+o LANG-1223: Add StopWatch#getTime(TimeUnit). Thanks to Nick Manley.
+o LANG-781: Add methods to ObjectUtils class to check for null elements in the
+ array. Thanks to Krzysztof Wolny.
+o LANG-1228: Prefer Throwable.getCause() in ExceptionUtils.getCause().
+ Thanks to Brad Hess.
+o LANG-1233: DiffBuilder add method to allow appending from a DiffResult.
+ Thanks to Nick Manley.
+o LANG-1168: Add SystemUtils.IS_OS_WINDOWS_10 property.
+ Thanks to Pascal Schumacher.
+o LANG-1115: Add support for varargs in ConstructorUtils, MemberUtils, and
+ MethodUtils. Thanks to Jim Lloyd and Joe Ferner.
+o LANG-1134: Add methods to check numbers against NaN and infinite to
+ Validate. Thanks to Alan Smithee.
+o LANG-1220: Add tests for missed branches in DateUtils.
+ Thanks to Casey Scarborough.
+o LANG-1146: z/OS identification in SystemUtils.
+ Thanks to Gabor Liptak.
+o LANG-1192: FastDateFormat support of the week-year component (uppercase 'Y').
+ Thanks to Dominik Stadler.
+o LANG-1169: Add StringUtils methods to compare a string to multiple strings.
+ Thanks to Rafal Glowinski, Robert Parr and Arman Sharif.
+o LANG-1185: Add remove by regular expression methods in StringUtils.
+o LANG-1139: Add replace by regular expression methods in StringUtils.
+o LANG-1171: Add compare methods in StringUtils.
+o LANG-1174: Add sugar to RandomUtils. Thanks to Punkratz312.
+o LANG-1154: FastDateFormat APIs that use a StringBuilder. Thanks to
+ Gary Gregory.
+o LANG-1149: Ability to throw checked exceptions without declaring them. Thanks
+ to Gregory Zak.
+o LANG-1153: Implement ParsePosition api for FastDateParser.
+o LANG-1137: Add check for duplicate event listener in EventListenerSupport.
+ Thanks to Matthew Aguirre.
+o LANG-1135: Add method containsAllWords to WordUtils. Thanks to
+ Eduardo Martins.
+o LANG-1132: ReflectionToStringBuilder doesn't throw IllegalArgumentException
+ when the constructor's object param is null. Thanks to Jack Tan.
+o LANG-701: StringUtils join with var args. Thanks to James Sawle.
+o LANG-1105: Add ThreadUtils - A utility class which provides helper methods
+ related to java.lang.Thread Issue: LANG-1105. Thanks to
+ Hendrik Saly.
+o LANG-1031: Add annotations to exclude fields from ReflectionEqualsBuilder,
+ ReflectionToStringBuilder and ReflectionHashCodeBuilder. Thanks
+ to Felipe Adorno.
+o LANG-1127: Use JUnit rules to set and reset the default Locale and TimeZone.
+o LANG-1119: Add rotate(string, int) method to StringUtils. Thanks to
+ Loic Guibert.
+o LANG-1099: Add swap and shift operations for arrays to ArrayUtils. Thanks to
+ Adrian Ber.
+o LANG-1050: Change nullToEmpty methods to generics. Thanks to James Sawle.
+o LANG-1074: Add a method to ArrayUtils for removing all occurrences of a given
+ element Issue: LANG-1074. Thanks to Haiyang Li.
+
+FIXED BUGS
+============
+
+o LANG-1261: ArrayUtils.contains returns false for instances of subtypes.
+o LANG-1252: Rename NumberUtils.isNumber, isCreatable to better reflect
+ createNumber. Also, accommodated for "+" symbol as prefix in
+ isCreatable and isNumber. Thanks to Rob Tompkins.
+o LANG-1230: Remove unnecessary synchronization from registry lookup in
+ EqualsBuilder and HashCodeBuilder. Thanks to Philippe Marschall.
+o LANG-1214: Handle "void" in ClassUtils.getClass(). Thanks to Henry Tung.
+o LANG-1250: SerializationUtils#deserialize has unnecessary code and a comment
+ for that. Thanks to Glease Wang.
+o LANG-1190: TypeUtils.isAssignable throws NullPointerException when fromType
+ has type variables and toType generic superclass specifies type
+ variable. Thanks to Pascal Schumacher.
+o LANG-1226: StringUtils#normalizeSpace does not trim the string anymore.
+ Thanks to Pascal Schumacher.
+o LANG-1251: SerializationUtils.ClassLoaderAwareObjectInputStream should use
+ static initializer to initialize primitiveTypes map. Thanks to
+ Takuya Ueshin.
+o LANG-1248: FastDatePrinter Memory allocation regression. Thanks to
+ Benoit Wiart.
+o LANG-1018: Fix precision loss on NumberUtils.createNumber(String). Thanks to
+ Nick Manley.
+o LANG-1199: Fix implementation of StringUtils.getJaroWinklerDistance(). Thanks
+ to M. Steiger.
+o LANG-1244: Fix dead links in StringUtils.getLevenshteinDistance() javadoc.
+ Thanks to jjbankert.
+o LANG-1242: "\u2284":"?" mapping missing from
+ EntityArrays#HTML40_EXTENDED_ESCAPE. Thanks to Neal Stewart.
+o LANG-901: StringUtils#startsWithAny/endsWithAny is case sensitive -
+ documented as case insensitive. Thanks to Matthew Bartenschlag.
+o LANG-1232: DiffBuilder: Add null check on fieldName when appending Object or
+ Object[]. Thanks to Nick Manley.
+o LANG-1178: ArrayUtils.removeAll(Object array, int... indices) should do the
+ clone, not its callers. Thanks to Henri Yandell.
+o LANG-1120: StringUtils.stripAccents should remove accents from "Å" and "Å‚".
+ Thanks to kaching88.
+o LANG-1205: NumberUtils.createNumber() behaves inconsistently with
+ NumberUtils.isNumber(). Thanks to pbrose.
+o LANG-1222: Fix for incorrect comment on StringUtils.containsIgnoreCase
+ method. Thanks to Adam J.
+o LANG-1221: Fix typo on appendIfMissing javadoc. Thanks to Pierre Templier.
+o LANG-1202: parseDateStrictly doesn't pass specified locale. Thanks to
+ Markus Jelsma.
+o LANG-1219: FastDateFormat doesn't respect summer daylight in some localized
+ strings. Thanks to Jarek.
+o LANG-1175: Remove Ant-based build.
+o LANG-1194: Limit max heap memory for consistent Travis CI build.
+o LANG-1186: Fix NullPointerException in FastDateParser$TimeZoneStrategy.
+ Thanks to NickManley.
+o LANG-1193: ordinalIndexOf("abc", "ab", 1) gives incorrect answer of -1
+ (correct answer should be 0); revert fix for LANG-1077. Thanks to
+ Qin Li.
+o LANG-1002: Several predefined ISO FastDateFormats in DateFormatUtils are
+ incorrect. Thanks to Michael Osipov.
+o LANG-1152: StringIndexOutOfBoundsException or field over-write for large year
+ fields in FastDateParser. Thanks to Pas Filip.
+o LANG-1141: StrLookup.systemPropertiesLookup() no longer reacts on changes on
+ system properties.
+o LANG-1147: EnumUtils *BitVector issue with more than 32 values Enum. Thanks
+ to Loic Guibert.
+o LANG-1059: Capitalize javadoc is incorrect. Thanks to Colin Casey.
+o LANG-1122: Inconsistent behavior of swap for malformed inputs. Thanks to
+ Adrian Ber.
+o LANG-1130: Fix critical issues reported by SonarQube.
+o LANG-1131: StrBuilder.equals(StrBuilder) doesn't check for null inputs.
+o LANG-1128: JsonToStringStyle doesn't handle chars and objects correctly.
+ Thanks to Jack Tan.
+o LANG-1126: DateFormatUtilsTest.testSMTP depends on the default Locale.
+o LANG-1123: Unit test FastDatePrinterTimeZonesTest needs a timezone set.
+ Thanks to Christian P. Momon.
+o LANG-916: DateFormatUtils.format does not correctly change Calendar
+ TimeZone in certain situations. Thanks to Christian P. Momon.
+o LANG-1116: DateUtilsTest.testLang530 fails for some timezones. Thanks to
+ Aaron Sheldon.
+o LANG-1114: TypeUtils.ParameterizedType#equals doesn't work with wildcard
+ types. Thanks to Andy Coates.
+o LANG-1118: StringUtils.repeat('z', -1) throws NegativeArraySizeException.
+ Thanks to Loic Guibert.
+o LANG-1111: Fix FindBugs warnings in DurationFormatUtils.
+o LANG-1162: StringUtils#equals fails with Index OOBE on non-Strings with
+ identical leading prefix..
+o LANG-1163: There are no tests for CharSequenceUtils.regionMatches.
+o LANG-1200: Fix Javadoc of StringUtils.ordinalIndexOf. Thanks to BarkZhang.
+o LANG-1191: Incorrect Javadoc
+ StringUtils.containsAny(CharSequence, CharSequence...). Thanks to
+ qed, Brent Worden and Gary Gregory.
+
+CHANGES
+=========
+o LANG-1197: Prepare Java 9 detection.
+o LANG-1262: CompareToBuilder.append(Object, Object, Comparator) method is too
+ big to be inlined. Thanks to Ruslan Cheremin.
+o LANG-1259: Javadoc for ArrayUtils.isNotEmpty() is slightly misleading. Thanks
+ to Dominik Stadler.
+o LANG-1247: FastDatePrinter generates extra Date objects. Thanks to
+ Benoit Wiart.
+o LANG-1229: HashCodeBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1243: Simplify ArrayUtils removeElements by using new decrementAndGet()
+ method.
+o LANG-1240: Optimize BitField constructor implementation. Thanks to zhanhb.
+o LANG-1206: Improve CharSetUtils.squeeze() performance. Thanks to
+ Mohammed Alfallaj.
+o LANG-1176: Improve ArrayUtils removeElements time complexity to O(n). Thanks
+ to Jeffery Yuan.
+o LANG-1234: getLevenshteinDistance with a threshold: optimize implementation
+ if the strings lengths differ more than the threshold. Thanks to
+ Jonatan Jönsson.
+o LANG-1151: Performance improvements for NumberUtils.isParsable. Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-1218: EqualsBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1210: StringUtils#startsWithAny has error in Javadoc. Thanks to
+ Matthias Niehoff.
+o LANG-1208: StrSubstitutor can preserve escapes. Thanks to Samuel Karp.
+o LANG-1182: Clarify Javadoc of StringUtils.containsAny(). Thanks to
+ Larry West and Pascal Schumacher.
+o LANG-1183: Making replacePattern/removePattern methods null safe in
+ StringUtils.
+o LANG-1057: Replace StringBuilder with String concatenation for better
+ optimization. Thanks to Otávio Santana.
+o LANG-1075: Deprecate SystemUtils.FILE_SEPARATOR and
+ SystemUtils.PATH_SEPARATOR.
+o LANG-979: TypeUtils.parameterizeWithOwner - wrong format descriptor for
+ "invalid number of type parameters". Thanks to Bruno P. Kinoshita.
+o LANG-1112: MultilineRecursiveToStringStyle largely unusable due to being
+ package-private.
+o LANG-1058: StringUtils.uncapitalize performance improvement. Thanks to
+ Leo Wang.
+o LANG-1069: CharSet.getInstance documentation does not clearly explain how
+ to include negation character in set. Thanks to Arno Noordover.
+o LANG-1107: Fix parsing edge cases in FastDateParser.
+o LANG-1273: Added new property IS_OS_MAC_OSX_EL_CAPITAN in SystemUtils. Thanks
+ to Jake Wang.
+
+=============================================================================
+
+ Release Notes for version 3.4
+
+
+COMPATIBILITY
+=============
+
+Commons Lang 3.4 is fully binary compatible to the last release and can
+therefore be used as a drop in replacement for 3.3.2. Note that the value of
+org.apache.commons.lang3.time.DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN
+has changed, which may affect clients using the constant. Furthermore the
+constant is used internally in
+o DurationFormatUtils.formatDurationISO(long)
+o DurationFormatUtils.formatPeriodISO(long, long)
+
+For more information see https://issues.apache.org/jira/browse/LANG-1000.
+
+NEW FEATURES
+==============
+
+o LANG-821: Support OS X versions in SystemUtils. Thanks to Timo Kockert.
+o LANG-1103: Add SystemUtils.IS_JAVA_1_9
+o LANG-1093: Add ClassUtils.getAbbreviatedName(). Thanks to Fabian Lange.
+o LANG-1082: Add option to disable the "objectsTriviallyEqual" test in
+ DiffBuilder. Thanks to Jonathan Baker.
+o LANG-1015: Add JsonToStringStyle implementation to ToStringStyle. Thanks to
+ Thiago Andrade.
+o LANG-1080: Add NoClassNameToStringStyle implementation of ToStringStyle.
+ Thanks to Innokenty Shuvalov.
+o LANG-883: Add StringUtils.containsAny(CharSequence, CharSequence...) method.
+ Thanks to Daniel Stewart.
+o LANG-1052: Multiline recursive to string style. Thanks to Jan Matèrne.
+o LANG-536: Add isSorted() to ArrayUtils. Thanks to James Sawle.
+o LANG-1033: Add StringUtils.countMatches(CharSequence, char)
+o LANG-1021: Provide methods to retrieve all fields/methods annotated with a
+ specific type. Thanks to Alexander Müller.
+o LANG-1016: NumberUtils#isParsable method(s). Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-999: Add fuzzy String matching logic to StringUtils. Thanks to
+ Ben Ripkens.
+o LANG-994: Add zero copy read method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-993: Add zero copy write method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-1044: Add method MethodUtils.invokeExactMethod(Object, String)
+o LANG-1045: Add method MethodUtils.invokeMethod(Object, String)
+
+FIXED BUGS
+============
+
+o LANG-794: SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect. Thanks to
+ Timo Kockert.
+o LANG-1104: Parse test fails for TimeZone America/Sao_Paulo
+o LANG-948: Exception while using ExtendedMessageFormat and escaping braces.
+ Thanks to Andrey Khobnya.
+o LANG-1092: Wrong formatting of time zones with daylight saving time in
+ FastDatePrinter
+o LANG-1090: FastDateParser does not set error indication in ParsePosition
+o LANG-1089: FastDateParser does not handle excess hours as per
+ SimpleDateFormat
+o LANG-1061: FastDateParser error - timezones not handled correctly. Thanks to
+ dmeneses.
+o LANG-1087: NumberUtils#createNumber() returns positive BigDecimal when
+ negative Float is expected. Thanks to Renat Zhilkibaev.
+o LANG-1081: DiffBuilder.append(String, Object left, Object right) does not do
+ a left.equals(right) check. Thanks to Jonathan Baker.
+o LANG-1055: StrSubstitutor.replaceSystemProperties does not work consistently.
+ Thanks to Jonathan Baker.
+o LANG-1083: Add (T) casts to get unit tests to pass in old JDK. Thanks to
+ Jonathan Baker.
+o LANG-1073: Read wrong component type of array in add in ArrayUtils.
+ Thanks to haiyang li.
+o LANG-1077: StringUtils.ordinalIndexOf("aaaaaa", "aa", 2) != 3 in StringUtils.
+ Thanks to haiyang li.
+o LANG-1072: Duplicated "0x" check in createBigInteger in NumberUtils. Thanks
+ to haiyang li.
+o LANG-1064: StringUtils.abbreviate description doesn't agree with the
+ examples. Thanks to B.J. Herbison.
+o LANG-1041: Fix MethodUtilsTest so it does not depend on JDK method ordering.
+ Thanks to Alexandre Bartel.
+o LANG-1000: ParseException when trying to parse UTC dates with Z as zone
+ designator using DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT
+o LANG-1035: Javadoc for EqualsBuilder.reflectionEquals() is unclear
+o LANG-1001: ISO 8601 misspelled throughout the Javadocs. Thanks to
+ Michael Osipov.
+o LANG-1088: FastDateParser should be case insensitive
+o LANG-995: Fix bug with stripping spaces on last line in WordUtils.wrap().
+ Thanks to Andrey Khobnya.
+
+CHANGES
+=========
+
+o LANG-1102: Make logic for comparing OS versions in SystemUtils smarter
+o LANG-1091: Shutdown thread pools in test cases. Thanks to Fabian Lange.
+o LANG-1101: FastDateParser and FastDatePrinter support 'X' format
+o LANG-1100: Avoid memory allocation when using date formatting to StringBuffer.
+ Thanks to mbracher.
+o LANG-935: Possible performance improvement on string escape functions.
+ Thanks to Fabian Lange, Thomas Neidhart.
+o LANG-1098: Avoid String allocation in StrBuilder.append(CharSequence). Thanks
+ to Mikhail Mazurskiy, Fabian Lange.
+o LANG-1098: Update maven-checkstyle-plugin to 2.14. Thanks to Micha? Kordas.
+o LANG-1097: Update org.easymock:easymock to 3.3.1. Thanks to Micha? Kordas.
+o LANG-1096: Update maven-pmd-plugin to 3.4. Thanks to Micha? Kordas.
+o LANG-1095: Update maven-antrun-plugin to 1.8. Thanks to Micha? Kordas.
+o LANG-877: Performance improvements for StringEscapeUtils. Thanks to
+ Fabian Lange.
+o LANG-1071: Fix wrong examples in Javadoc of
+ StringUtils.replaceEachRepeatedly(...),
+ StringUtils.replaceEach(...) Thanks to Arno Noordover.
+o LANG-827: CompareToBuilder's doc doesn't specify precedence of fields it
+ uses in performing comparisons
+o LANG-1020: Improve performance of normalize space. Thanks to Libor Ondrusek.
+o LANG-1027: org.apache.commons.lang3.SystemUtils#isJavaVersionAtLeast should
+ return true by default
+o LANG-1026: Bring static method references in StringUtils to consistent style.
+ Thanks to Alex Yursha.
+o LANG-1017: Use non-ASCII digits in Javadoc examples for
+ StringUtils.isNumeric. Thanks to Christoph Schneegans.
+o LANG-1008: Change min/max methods in NumberUtils/IEEE754rUtils from array
+ input parameters to varargs. Thanks to Thiago Andrade.
+o LANG-1006: Add wrap (with String or char) to StringUtils. Thanks to
+ Thiago Andrade.
+o LANG-1005: Extend DurationFormatUtils#formatDurationISO default pattern to
+ match #formatDurationHMS. Thanks to Michael Osipov.
+o LANG-1007: Fixing NumberUtils JAVADoc comments for max methods. Thanks to
+ Thiago Andrade.
+o LANG-731: Better Javadoc for BitField class
+o LANG-1004: DurationFormatUtils#formatDurationHMS implementation does not
+ correspond to Javadoc and vice versa. Thanks to Michael Osipov.
+o LANG-1003: DurationFormatUtils are not able to handle negative
+ durations/periods
+o LANG-998: Javadoc is not clear on preferred pattern to instantiate
+ FastDateParser / FastDatePrinter
+
+=============================================================================
+
+ Release Notes for version 3.3.2
+
+NEW FEATURES
+==============
+
+o LANG-989: Add org.apache.commons.lang3.SystemUtils.IS_JAVA_1_8
+
+FIXED BUGS
+============
+
+o LANG-992: NumberUtils#isNumber() returns false for "0.0", "0.4790", et al
+
+=============================================================================
+
+ Release Notes for version 3.3.1
+
+FIXED BUGS
+============
+
+o LANG-987: DateUtils.getFragmentInDays(Date, Calendar.MONTH) returns wrong
+ days
+o LANG-983: DurationFormatUtils does not describe format string fully
+o LANG-981: DurationFormatUtils#lexx does not detect unmatched quote char
+o LANG-984: DurationFormatUtils does not handle large durations correctly
+o LANG-982: DurationFormatUtils.formatDuration(61999, "s.SSSS") - ms field
+ size should be 4 digits
+o LANG-978: Failing tests with Java 8 b128
+
+=============================================================================
+
+ Release Notes for version 3.3
+
+NEW FEATURES
+==============
+
+o LANG-955: Add methods for removing all invalid characters according to
+ XML 1.0 and XML 1.1 in an input string to StringEscapeUtils.
+ Thanks to Adam Hooper.
+o LANG-970: Add APIs MutableBoolean setTrue() and setFalse()
+o LANG-962: Add SerializationUtils.roundtrip(T extends Serializable) to
+ serialize then deserialize
+o LANG-637: There should be a DifferenceBuilder with a
+ ReflectionDifferenceBuilder implementation
+o LANG-944: Add the Jaro-Winkler string distance algorithm to StringUtils.
+ Thanks to Rekha Joshi.
+o LANG-417: New class ClassPathUtils with methods for turning FQN into
+ resource path
+o LANG-834: Validate: add inclusiveBetween and exclusiveBetween overloads
+ for primitive types
+o LANG-900: New RandomUtils class. Thanks to Duncan Jones.
+o LANG-966: Add IBM OS/400 detection
+
+FIXED BUGS
+============
+
+o LANG-621: ReflectionToStringBuilder.toString does not debug 3rd party object
+ fields within 3rd party object. Thanks to Philip Hodges,
+ Thomas Neidhart.
+o LANG-977: NumericEntityEscaper incorrectly encodes supplementary characters.
+ Thanks to Chris Karcher.
+o LANG-973: Make some private fields final
+o LANG-971: NumberUtils#isNumber(String) fails to reject invalid Octal numbers
+o LANG-972: NumberUtils#isNumber does not allow for hex 0XABCD
+o LANG-969: StringUtils.toEncodedString(byte[], Charset) needlessly throws
+ UnsupportedEncodingException. Thanks to Matt Bishop.
+o LANG-946: ConstantInitializerTest fails when building with IBM JDK 7
+o LANG-954: uncaught PatternSyntaxException in FastDateFormat on Android.
+ Thanks to Michael Keppler.
+o LANG-936: StringUtils.getLevenshteinDistance with too big of a threshold
+ returns wrong result. Thanks to Yaniv Kunda, Eli Lindsey.
+o LANG-943: Test DurationFormatUtilsTest.testEdgeDuration fails in
+ JDK 1.6, 1.7 and 1.8, BRST time zone
+o LANG-613: ConstructorUtils.getAccessibleConstructor() Does Not Check the
+ Accessibility of Enclosing Classes
+o LANG-951: Fragments are wrong by 1 day when using fragment YEAR or MONTH.
+ Thanks to Sebastian Götz.
+o LANG-950: FastDateParser does not handle two digit year parsing like
+ SimpleDateFormat
+o LANG-949: FastDateParserTest.testParses does not test FastDateParser
+o LANG-915: Wrong locale handling in LocaleUtils.toLocale().
+ Thanks to Sergio Fernández.
+
+CHANGES
+=========
+
+o LANG-961: org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field)
+ does not clean up after itself
+o LANG-958: FastDateParser javadoc incorrectly states that SimpleDateFormat
+ is used internally
+o LANG-956: Improve Javadoc of WordUtils.wrap methods
+o LANG-939: Move Documentation from user guide to package-info files
+o LANG-953: Convert package.html files to package-info.java files
+o LANG-940: Fix deprecation warnings
+o LANG-819: EnumUtils.generateBitVector needs a "? extends"
+
+=============================================================================
+
+ Release Notes for version 3.2.1
+
+BUG FIXES
+===========
+
+o LANG-937: Fix missing Hamcrest dependency in Ant Build
+o LANG-941: Test failure in LocaleUtilsTest when building with JDK 8
+o LANG-942: Test failure in FastDateParserTest and FastDateFormat_ParserTest
+ when building with JDK8. Thanks to Bruno P. Kinoshita,
+ Henri Yandell.
+o LANG-938: Build fails with test failures when building with JDK 8
+
+=============================================================================
+
+ Release Notes for version 3.2
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+=============================================================================
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+=============================================================================
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12 hour clock and not
+ 24 hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.8.1.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.8.1.txt
new file mode 100644
index 000000000..c11adfcf3
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.8.1.txt
@@ -0,0 +1,1270 @@
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.8.1
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.8.1 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 and onwards now targets Java 7.0, making use of features that arrived with Java 7.0.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+Apache Commons Lang, a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang.
+
+This release is a bugfix for Restoring Bundle-SymbolicName in the MANIFEST.mf file.
+
+Changes in this version include:
+
+
+Fixed Bugs:
+o LANG-1419: Restore BundleSymbolicName for OSGi
+
+
+
+Historical list of changes: https://commons.apache.org/proper/commons-lang/changes-report.html
+
+For complete information on Apache Commons Lang, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons Lang website:
+
+https://commons.apache.org/proper/commons-lang/
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.8
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.8 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 and onwards now targets Java 5.0, making use of features that arrived with Java 5.0 such as generics,
+variable arguments, autoboxing, concurrency and formatted output.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+Apache Commons Lang, a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang.
+
+New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.
+
+Changes in this version include:
+
+New features:
+o LANG-1352: EnumUtils.getEnumIgnoreCase and isValidEnumIgnoreCase methods added Thanks to Ruslan Sibgatullin.
+o LANG-1372: Add ToStringSummary annotation Thanks to Sérgio Ozaki.
+o LANG-1356: Add bypass option for classes to recursive and reflective EqualsBuilder Thanks to Yathos UG.
+o LANG-1391: Improve Javadoc for StringUtils.isAnyEmpty(null) Thanks to Sauro Matulli, Oleg Chubaryov.
+o LANG-1393: Add API SystemUtils.String getEnvironmentVariable(final String name, final String defaultValue) Thanks to Gary Gregory.
+o LANG-1394: org.apache.commons.lang3.SystemUtils should not write to System.err. Thanks to Sebb, Gary Gregory.
+o LANG-1238: Add RegexUtils class instead of overloading methods in StringUtils that take a regex to take precompiled Pattern. Thanks to Christopher Cordeiro, Gary Gregory, Bruno P. Kinoshita, Oleg Chubaryov.
+o LANG-1390: StringUtils.join() with support for List<?> with configurable start/end indices. Thanks to Jochen Schalanda.
+o LANG-1392: Methods for getting first non empty or non blank value Thanks to Jeff Nelson.
+o LANG-1408: Rounding utilities for converting to BigDecimal
+
+Fixed Bugs:
+o LANG-1380: FastDateParser too strict on abbreviated short month symbols Thanks to Markus Jelsma.
+o LANG-1396: JsonToStringStyle does not escape string names
+o LANG-1395: JsonToStringStyle does not escape double quote in a string value Thanks to Jim Gan.
+o LANG-1384: New Java version ("11") must be handled Thanks to Ian Young.
+o LANG-1364: ExceptionUtils#getRootCause(Throwable t) should return t if no lower level cause exists Thanks to Zheng Xie.
+o LANG-1060: NumberUtils.isNumber assumes number starting with Zero Thanks to Piotr Kosmala.
+o LANG-1375: defaultString(final String str) in StringUtils to reuse defaultString(final String str, final String defaultStr) Thanks to Jerry Zhao.
+o LANG-1374: Parsing Json Array failed Thanks to Jaswanth Bala.
+o LANG-1371: Fix TypeUtils#parameterize to work correctly with narrower-typed array Thanks to Dmitry Ovchinnikov.
+o LANG-1370: Fix EventCountCircuitBreaker increment batch Thanks to Andre Dieb.
+o LANG-1385: NumberUtils.createNumber() throws StringIndexOutOfBoundsException instead of NumberFormatException Thanks to Rohan Padhye.
+o LANG-1397: WordUtils.wrap throws StringIndexOutOfBoundsException when wrapLength is Integer.MAX_VALUE. Thanks to Takanobu Asanuma.
+o LANG-1401: Typo in JavaDoc for lastIndexOf Thanks to Roman Golyshev, Alex Mamedov.
+
+Changes:
+o LANG-1367: ObjectUtils.identityToString(Object) and friends should allocate builders and buffers with a size Thanks to Gary Gregory.
+o LANG-1405: Remove checks for java versions below the minimum supported one Thanks to Lars Grefer.
+o LANG-1402: Null/index safe get methods for ArrayUtils Thanks to Mark Dacek.
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.7
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.7 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 and onwards now targets Java 5.0, making use of features that arrived with Java 5.0 such as generics,
+variable arguments, autoboxing, concurrency and formatted output.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+Apache Commons Lang, a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang.
+
+New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.
+
+Changes in this version include:
+
+New features:
+o LANG-1355: TimeZone.getTimeZone() in FastDateParser causes resource contention (PR #296.) Thanks to Chas Honton.
+o LANG-1360: Add methods to ObjectUtils to get various forms of class names in a null-safe manner Thanks to Gary Gregory.
+
+Fixed Bugs:
+o LANG-1362: Fix tests DateUtilsTest for Java 9 with en_GB locale Thanks to Stephen Colebourne.
+o LANG-1365: Fix NullPointerException in isJavaVersionAtLeast on Java 10, add SystemUtils.IS_JAVA_10, add JavaVersion.JAVA_10 Thanks to Gary Gregory.
+o LANG-1348: StackOverflowError on TypeUtils.toString(...) for a generic return type of Enum.valueOf Thanks to mbusso.
+o LANG-1350: ConstructorUtils.invokeConstructor(Class, Object...) regression Thanks to Brett Kail.
+o LANG-1349: EqualsBuilder#isRegistered: swappedPair construction bug Thanks to Naman Nigam.
+o LANG-1357: org.apache.commons.lang3.time.FastDateParser should use toUpperCase(Locale) Thanks to BruceKuiLiu.
+
+Changes:
+o LANG-1358: Improve StringUtils#replace throughput Thanks to Stephane Landelle.
+o LANG-1346: Remove deprecation from RandomStringUtils
+o LANG-1361: ExceptionUtils.getThrowableList() is using deprecated ExceptionUtils.getCause() Thanks to Ana.
+
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.6
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.6 version of
+Apache Commons Lang as well as a history all changes in the Commons Lang 3.x
+release line. Commons Lang is a set of utility functions and reusable
+components that should be of use in any Java environment. Commons Lang 3.6 at
+least requires Java 7.0. Note that this has changed from Commons Lang 3.5, which
+only required Java 1.6.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+HIGHLIGHTS
+==========
+
+Some of the highlights in this release include:
+
+o The class org.apache.commons.lang3.concurrent.Memoizer is an implementation
+ of the Memoizer pattern as shown in
+ Goetz, Brian et al. (2006) - Java Concurrency in Practice, p. 108.
+o The class org.apache.commons.lang3.ArchUtils has been added. ArchUtils is
+ a utility class for the "os.arch" system property.
+
+DEPRECATIONS
+============
+
+The Apache Commons Community has recently set up the Commons Text component
+as a home for algorithms working on strings. For this reason most of the string
+focused functionality in Commons Lang has been deprecated and moved to
+Commons Text. This includes:
+
+o All classes in the org.apache.commons.lang3.text and the
+ org.apache.commons.lang3.text.translate packages
+o org.apache.commons.lang3.StringEscapeUtils
+o org.apache.commons.lang3.RandomStringUtils
+o The methods org.apache.commons.lang3.StringUtils.getJaroWinklerDistance and
+ org.apache.commons.lang3.StringUtils.getLevenshteinDistance
+
+For more information see the Commons Text website:
+
+ https://commons.apache.org/text
+
+The class org.apache.commons.lang3.CharEncoding has been deprecated in favor of
+java.nio.charset.StandardCharsets.
+
+The following methods have been deprecated in
+org.apache.commons.lang3.ArrayUtils in favor of the corresponding insert
+methods. Note that the handling for null inputs differs between add and insert.
+
+o add(boolean[], int, boolean) -> insert(int, boolean[], boolean...)
+o add(byte[], int, boolean) -> insert(int, byte[], byte...)
+o add(char[], int, boolean) -> insert(int, char[], char...)
+o add(double[], int, boolean) -> insert(int, double[], double...)
+o add(float[], int, boolean) -> insert(int, float[], float...)
+o add(int[], int, boolean) -> insert(int, int[], int...)
+o add(long[], int, boolean) -> insert(int, long[], long...)
+o add(short[], int, boolean) -> insert(int, short[], short...)
+o add(T[], int, boolean) -> insert(int, T[], T...)
+
+
+COMPATIBILITY WITH JAVA 9
+==================
+
+The MANIFEST.MF now contains an additional entry:
+
+ Automatic-Module-Name: org.apache.commons.lang3
+
+This should make it possible to use Commons Lang 3.6 as a module in the Java 9
+module system. For more information see the corresponding issue and the
+referenced mailing list discussions:
+
+ https://issues.apache.org/jira/browse/LANG-1338
+
+The build problems present in the 3.5 release have been resolved. Building
+Commons Lang 3.6 should work out of the box with the latest Java 9 EA build.
+Please report any Java 9 related issues at:
+
+ https://issues.apache.org/jira/browse/LANG
+
+NEW FEATURES
+============
+
+o LANG-1336: Add NUL Byte To CharUtils. Thanks to Beluga Behr.
+o LANG-1304: Add method in StringUtils to determine if string contains both
+ mixed cased characters. Thanks to Andy Klimczak.
+o LANG-1325: Increase test coverage of ToStringBuilder class to 100%.
+ Thanks to Arshad Basha.
+o LANG-1307: Add a method in StringUtils to extract only digits out of input
+ string. Thanks to Arshad Basha.
+o LANG-1256: Add JMH maven dependencies. Thanks to C0rWin.
+o LANG-1167: Add null filter to ReflectionToStringBuilder.
+ Thanks to Mark Dacek.
+o LANG-1299: Add method for converting string to an array of code points.
+o LANG-660: Add methods to insert arrays into arrays at an index.
+o LANG-1034: Add support for recursive comparison to
+ EqualsBuilder#reflectionEquals. Thanks to Yathos UG.
+o LANG-1067: Add a reflection-based variant of DiffBuilder.
+o LANG-740: Implementation of a Memoizer. Thanks to James Sawle.
+o LANG-1258: Add ArrayUtils#toStringArray method.
+ Thanks to IG, Grzegorz Ro?niecki.
+o LANG-1160: StringUtils#abbreviate should support 'custom ellipses' parameter.
+o LANG-1293: Add StringUtils#isAllEmpty and #isAllBlank methods.
+ Thanks to Pierre Templier, Martin Tarjanyi.
+o LANG-1313: Add ArchUtils - An utility class for the "os.arch" system property.
+ Thanks to Tomschi.
+o LANG-1272: Add shuffle methods to ArrayUtils.
+o LANG-1317: Add MethodUtils#findAnnotation and extend
+ MethodUtils#getMethodsWithAnnotation for non-public, super-class
+ and interface methods. Thanks to Yasser Zamani.
+o LANG-1331: Add ImmutablePair.nullPair().
+o LANG-1332: Add ImmutableTriple.nullTriple().
+
+FIXED BUGS
+==========
+
+o LANG-1337: Fix test failures in IBM JDK 8 for ToStringBuilderTest.
+o LANG-1319: MultilineRecursiveToStringStyle StackOverflowError when object is
+ an array.
+o LANG-1320: LocaleUtils#toLocale does not support language followed by UN M.49
+ numeric-3 area code followed by variant.
+o LANG-1300: Clarify or improve behavior of int-based indexOf methods in
+ StringUtils. Thanks to Mark Dacek.
+o LANG-1286: RandomStringUtils random method can overflow and return characters
+ outside of specified range.
+o LANG-1292: WordUtils.wrap throws StringIndexOutOfBoundsException.
+o LANG-1287: RandomStringUtils#random can enter infinite loop if end parameter
+ is to small. Thanks to Ivan Morozov.
+o LANG-1285: NullPointerException in FastDateParser$TimeZoneStrategy.
+ Thanks to Francesco Chicchiriccò.
+o LANG-1281: Javadoc of StringUtils.ordinalIndexOf is contradictory.
+ Thanks to Andreas Lundblad.
+o LANG-1188: StringUtils#join(T...): warning: [unchecked] Possible heap
+ pollution from parameterized vararg type T.
+o LANG-1144: Multiple calls of
+ org.apache.commons.lang3.concurrent.LazyInitializer.initialize()
+ are possible. Thanks to Waldemar Maier, Gary Gregory.
+o LANG-1276: StrBuilder#replaceAll ArrayIndexOutOfBoundsException.
+ Thanks to Andy Klimczak.
+o LANG-1278: BooleanUtils javadoc issues. Thanks to Duke Yin.
+o LANG-1070: ArrayUtils#add confusing example in javadoc.
+ Thanks to Paul Pogonyshev.
+o LANG-1271: StringUtils#isAnyEmpty and #isAnyBlank should return false for an
+ empty array. Thanks to Pierre Templier.
+o LANG-1155: Add StringUtils#unwrap. Thanks to Saif Asif, Thiago Andrade.
+o LANG-1311: TypeUtils.toString() doesn't handle primitive and Object arrays
+ correctly. Thanks to Aaron Digulla.
+o LANG-1312: LocaleUtils#toLocale does not support language followed by UN M.49
+ numeric-3 area code.
+o LANG-1265: Build failures when building with Java 9 EA.
+o LANG-1314: javadoc creation broken with Java 8. Thanks to Allon Murienik.
+o LANG-1310: MethodUtils.invokeMethod throws ArrayStoreException if using
+ varargs arguments and smaller types than the method defines.
+ Thanks to Don Jeba.
+
+CHANGES
+=======
+
+o LANG-1338: Add Automatic-Module-Name MANIFEST entry for Java 9
+ compatibility.
+o LANG-1334: Deprecate CharEncoding in favour of
+ java.nio.charset.StandardCharsets.
+o LANG-1110: Implement HashSetvBitSetTest using JMH.
+ Thanks to Bruno P. Kinoshita.
+o LANG-1290: Increase test coverage of org.apache.commons.lang3.ArrayUtils.
+ Thanks to Andrii Abramov.
+o LANG-1274: StrSubstitutor should state its thread safety.
+o LANG-1277: StringUtils#getLevenshteinDistance reduce memory consumption.
+ Thanks to yufcuy.
+o LANG-1279: Update Java requirement from Java 6 to 7.
+o LANG-1143: StringUtils should use toXxxxCase(int) rather than
+ toXxxxCase(char). Thanks to sebb.
+o LANG-1297: Add SystemUtils.getHostName() API.
+o LANG-1301: Moving apache-rat-plugin configuration into pluginManagement.
+ Thanks to Karl Heinz Marbaise.
+o LANG-1316: Deprecate classes/methods moved to commons-text.
+
+=============================================================================
+
+ Release Notes for version 3.5
+
+
+HIGHLIGHTS
+==========
+
+Some of the highlights in this release include:
+
+o Added Java 9 detection to org.apache.commons.lang3.SystemUtils.
+o Support for shifting and swapping elements in
+ org.apache.commons.lang3.ArrayUtils.
+o New methods for generating random strings from different character classes
+ including alphabetic, alpha-numeric and ASCII added to
+ org.apache.commons.lang3.RandomStringUtils.
+o Numerous extensions to org.apache.commons.lang3.StringUtils including
+ null safe compare variants, more remove and replace variants, rotation and
+ truncation.
+o Added org.apache.commons.lang3.ThreadUtils - a utility class to work with
+ instances of java.lang.Thread and java.lang.ThreadGroup.
+o Added annotations @EqualsExclude, @HashCodeExclude and @ToStringExclude to
+ mark fields which should be ignored by the reflective builders in the
+ org.apache.commons.lang3.builder package.
+o Support for various modify and retrieve value use cases added to the classes
+ in org.apache.commons.lang3.mutable.
+
+COMPATIBILITY
+=============
+
+Apache Commons Lang 3.5 is binary compatible with the 3.4 release. Users
+should not experience any problems when upgrading from 3.4 to 3.5.
+
+There has been an addition to the org.apache.commons.lang3.time.DatePrinter
+interface:
+
+o Added method 'public boolean parse(java.lang.String, java.text.ParsePosition,
+ java.util.Calendar)'
+o Added method 'public java.lang.Appendable format(long, java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Date,
+ java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Calendar,
+ java.lang.Appendable)'
+
+For this reason 3.5 is not strictly source compatible to 3.4. Since the
+DatePrinter interface is not meant to be implemented by clients, this
+change it not considered to cause any problems.
+
+JAVA 9 SUPPORT
+==============
+
+Java 9 introduces a new version-string scheme. Details of this new scheme are
+documented in JEP-223 (https://openjdk.org/jeps/223). In order to support
+JEP-223 two classes had to be changed:
+
+o org.apache.commons.lang3.JavaVersion
+ deprecated enum constant JAVA_1_9
+ introduced enum constant JAVA_9
+
+o org.apache.commons.lang3.SystemUtils
+ deprecated constant IS_JAVA_1_9
+ introduced constant IS_JAVA_9
+
+For more information see LANG-1197
+(https://issues.apache.org/jira/browse/LANG-1197). All other APIs are expected
+to work with Java 9.
+
+BUILDING ON JAVA 9
+==================
+
+Java 8 introduced the Unicode Consortium's Common Locale Data Repository as
+alternative source for locale data. Java 9 will use the CLDR provider as
+default provider for locale data (see https://openjdk.org/jeps/252). This
+causes an number of locale-sensitive test in Commons Lang to fail. In order
+to build Commons Lang 3.5 on Java 9, the locale provider has to be set to
+'JRE':
+
+ mvn -Djava.locale.providers=JRE clean install
+
+We are currently investigating ways to support building on Java 9 without
+further configuration. For more information see:
+https://issues.apache.org/jira/browse/LANG-1265
+
+
+NEW FEATURES
+==============
+
+o LANG-1275: Added a tryAcquire() method to TimedSemaphore.
+o LANG-1255: Add DateUtils.toCalendar(Date, TimeZone). Thanks to Kaiyuan Wang.
+o LANG-1023: Add WordUtils.wrap overload with customizable breakable character.
+ Thanks to Marko Bekhta.
+o LANG-787: Add method removeIgnoreCase(String, String) to StringUtils. Thanks
+ to Gokul Nanthakumar C.
+o LANG-1224: Extend RandomStringUtils with methods that generate strings
+ between a min and max length. Thanks to Caleb Cushing.
+o LANG-1257: Add APIs StringUtils.wrapIfMissing(String, char|String). Thanks to
+ Gary Gregory.
+o LANG-1253: Add RandomUtils#nextBoolean() method. Thanks to adilek.
+o LANG-1085: Add a circuit breaker implementation. Thanks to Oliver Heger and
+ Bruno P. Kinoshita.
+o LANG-1013: Add StringUtils.truncate(). Thanks to Thiago Andrade.
+o LANG-1195: Enhance MethodUtils to allow invocation of private methods. Thanks
+ to Derek C. Ashmore.
+o LANG-1189: Add getAndIncrement/getAndDecrement/getAndAdd/incrementAndGet/
+ decrementAndGet/addAndGet in Mutable* classes. Thanks to
+ Haiyang Li and Matthew Bartenschlag.
+o LANG-1225: Add RandomStringUtils#randomGraph and #randomPrint which match
+ corresponding regular expression class. Thanks to Caleb Cushing.
+o LANG-1223: Add StopWatch#getTime(TimeUnit). Thanks to Nick Manley.
+o LANG-781: Add methods to ObjectUtils class to check for null elements in the
+ array. Thanks to Krzysztof Wolny.
+o LANG-1228: Prefer Throwable.getCause() in ExceptionUtils.getCause().
+ Thanks to Brad Hess.
+o LANG-1233: DiffBuilder add method to allow appending from a DiffResult.
+ Thanks to Nick Manley.
+o LANG-1168: Add SystemUtils.IS_OS_WINDOWS_10 property.
+ Thanks to Pascal Schumacher.
+o LANG-1115: Add support for varargs in ConstructorUtils, MemberUtils, and
+ MethodUtils. Thanks to Jim Lloyd and Joe Ferner.
+o LANG-1134: Add methods to check numbers against NaN and infinite to
+ Validate. Thanks to Alan Smithee.
+o LANG-1220: Add tests for missed branches in DateUtils.
+ Thanks to Casey Scarborough.
+o LANG-1146: z/OS identification in SystemUtils.
+ Thanks to Gabor Liptak.
+o LANG-1192: FastDateFormat support of the week-year component (uppercase 'Y').
+ Thanks to Dominik Stadler.
+o LANG-1169: Add StringUtils methods to compare a string to multiple strings.
+ Thanks to Rafal Glowinski, Robert Parr and Arman Sharif.
+o LANG-1185: Add remove by regular expression methods in StringUtils.
+o LANG-1139: Add replace by regular expression methods in StringUtils.
+o LANG-1171: Add compare methods in StringUtils.
+o LANG-1174: Add sugar to RandomUtils. Thanks to Punkratz312.
+o LANG-1154: FastDateFormat APIs that use a StringBuilder. Thanks to
+ Gary Gregory.
+o LANG-1149: Ability to throw checked exceptions without declaring them. Thanks
+ to Gregory Zak.
+o LANG-1153: Implement ParsePosition api for FastDateParser.
+o LANG-1137: Add check for duplicate event listener in EventListenerSupport.
+ Thanks to Matthew Aguirre.
+o LANG-1135: Add method containsAllWords to WordUtils. Thanks to
+ Eduardo Martins.
+o LANG-1132: ReflectionToStringBuilder doesn't throw IllegalArgumentException
+ when the constructor's object param is null. Thanks to Jack Tan.
+o LANG-701: StringUtils join with var args. Thanks to James Sawle.
+o LANG-1105: Add ThreadUtils - A utility class which provides helper methods
+ related to java.lang.Thread Issue: LANG-1105. Thanks to
+ Hendrik Saly.
+o LANG-1031: Add annotations to exclude fields from ReflectionEqualsBuilder,
+ ReflectionToStringBuilder and ReflectionHashCodeBuilder. Thanks
+ to Felipe Adorno.
+o LANG-1127: Use JUnit rules to set and reset the default Locale and TimeZone.
+o LANG-1119: Add rotate(string, int) method to StringUtils. Thanks to
+ Loic Guibert.
+o LANG-1099: Add swap and shift operations for arrays to ArrayUtils. Thanks to
+ Adrian Ber.
+o LANG-1050: Change nullToEmpty methods to generics. Thanks to James Sawle.
+o LANG-1074: Add a method to ArrayUtils for removing all occurrences of a given
+ element Issue: LANG-1074. Thanks to Haiyang Li.
+
+FIXED BUGS
+============
+
+o LANG-1261: ArrayUtils.contains returns false for instances of subtypes.
+o LANG-1252: Rename NumberUtils.isNumber, isCreatable to better reflect
+ createNumber. Also, accommodated for "+" symbol as prefix in
+ isCreatable and isNumber. Thanks to Rob Tompkins.
+o LANG-1230: Remove unnecessary synchronization from registry lookup in
+ EqualsBuilder and HashCodeBuilder. Thanks to Philippe Marschall.
+o LANG-1214: Handle "void" in ClassUtils.getClass(). Thanks to Henry Tung.
+o LANG-1250: SerializationUtils#deserialize has unnecessary code and a comment
+ for that. Thanks to Glease Wang.
+o LANG-1190: TypeUtils.isAssignable throws NullPointerException when fromType
+ has type variables and toType generic superclass specifies type
+ variable. Thanks to Pascal Schumacher.
+o LANG-1226: StringUtils#normalizeSpace does not trim the string anymore.
+ Thanks to Pascal Schumacher.
+o LANG-1251: SerializationUtils.ClassLoaderAwareObjectInputStream should use
+ static initializer to initialize primitiveTypes map. Thanks to
+ Takuya Ueshin.
+o LANG-1248: FastDatePrinter Memory allocation regression. Thanks to
+ Benoit Wiart.
+o LANG-1018: Fix precision loss on NumberUtils.createNumber(String). Thanks to
+ Nick Manley.
+o LANG-1199: Fix implementation of StringUtils.getJaroWinklerDistance(). Thanks
+ to M. Steiger.
+o LANG-1244: Fix dead links in StringUtils.getLevenshteinDistance() javadoc.
+ Thanks to jjbankert.
+o LANG-1242: "\u2284":"?" mapping missing from
+ EntityArrays#HTML40_EXTENDED_ESCAPE. Thanks to Neal Stewart.
+o LANG-901: StringUtils#startsWithAny/endsWithAny is case sensitive -
+ documented as case insensitive. Thanks to Matthew Bartenschlag.
+o LANG-1232: DiffBuilder: Add null check on fieldName when appending Object or
+ Object[]. Thanks to Nick Manley.
+o LANG-1178: ArrayUtils.removeAll(Object array, int... indices) should do the
+ clone, not its callers. Thanks to Henri Yandell.
+o LANG-1120: StringUtils.stripAccents should remove accents from "?" and "?".
+ Thanks to kaching88.
+o LANG-1205: NumberUtils.createNumber() behaves inconsistently with
+ NumberUtils.isNumber(). Thanks to pbrose.
+o LANG-1222: Fix for incorrect comment on StringUtils.containsIgnoreCase
+ method. Thanks to Adam J.
+o LANG-1221: Fix typo on appendIfMissing javadoc. Thanks to Pierre Templier.
+o LANG-1202: parseDateStrictly doesn't pass specified locale. Thanks to
+ Markus Jelsma.
+o LANG-1219: FastDateFormat doesn't respect summer daylight in some localized
+ strings. Thanks to Jarek.
+o LANG-1175: Remove Ant-based build.
+o LANG-1194: Limit max heap memory for consistent Travis CI build.
+o LANG-1186: Fix NullPointerException in FastDateParser$TimeZoneStrategy.
+ Thanks to NickManley.
+o LANG-1193: ordinalIndexOf("abc", "ab", 1) gives incorrect answer of -1
+ (correct answer should be 0); revert fix for LANG-1077. Thanks to
+ Qin Li.
+o LANG-1002: Several predefined ISO FastDateFormats in DateFormatUtils are
+ incorrect. Thanks to Michael Osipov.
+o LANG-1152: StringIndexOutOfBoundsException or field over-write for large year
+ fields in FastDateParser. Thanks to Pas Filip.
+o LANG-1141: StrLookup.systemPropertiesLookup() no longer reacts on changes on
+ system properties.
+o LANG-1147: EnumUtils *BitVector issue with more than 32 values Enum. Thanks
+ to Loic Guibert.
+o LANG-1059: Capitalize javadoc is incorrect. Thanks to Colin Casey.
+o LANG-1122: Inconsistent behavior of swap for malformed inputs. Thanks to
+ Adrian Ber.
+o LANG-1130: Fix critical issues reported by SonarQube.
+o LANG-1131: StrBuilder.equals(StrBuilder) doesn't check for null inputs.
+o LANG-1128: JsonToStringStyle doesn't handle chars and objects correctly.
+ Thanks to Jack Tan.
+o LANG-1126: DateFormatUtilsTest.testSMTP depends on the default Locale.
+o LANG-1123: Unit test FastDatePrinterTimeZonesTest needs a timezone set.
+ Thanks to Christian P. Momon.
+o LANG-916: DateFormatUtils.format does not correctly change Calendar
+ TimeZone in certain situations. Thanks to Christian P. Momon.
+o LANG-1116: DateUtilsTest.testLang530 fails for some timezones. Thanks to
+ Aaron Sheldon.
+o LANG-1114: TypeUtils.ParameterizedType#equals doesn't work with wildcard
+ types. Thanks to Andy Coates.
+o LANG-1118: StringUtils.repeat('z', -1) throws NegativeArraySizeException.
+ Thanks to Loic Guibert.
+o LANG-1111: Fix FindBugs warnings in DurationFormatUtils.
+o LANG-1162: StringUtils#equals fails with Index OOBE on non-Strings with
+ identical leading prefix..
+o LANG-1163: There are no tests for CharSequenceUtils.regionMatches.
+o LANG-1200: Fix Javadoc of StringUtils.ordinalIndexOf. Thanks to BarkZhang.
+o LANG-1191: Incorrect Javadoc
+ StringUtils.containsAny(CharSequence, CharSequence...). Thanks to
+ qed, Brent Worden and Gary Gregory.
+
+CHANGES
+=========
+o LANG-1197: Prepare Java 9 detection.
+o LANG-1262: CompareToBuilder.append(Object, Object, Comparator) method is too
+ big to be inlined. Thanks to Ruslan Cheremin.
+o LANG-1259: Javadoc for ArrayUtils.isNotEmpty() is slightly misleading. Thanks
+ to Dominik Stadler.
+o LANG-1247: FastDatePrinter generates extra Date objects. Thanks to
+ Benoit Wiart.
+o LANG-1229: HashCodeBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1243: Simplify ArrayUtils removeElements by using new decrementAndGet()
+ method.
+o LANG-1240: Optimize BitField constructor implementation. Thanks to zhanhb.
+o LANG-1206: Improve CharSetUtils.squeeze() performance. Thanks to
+ Mohammed Alfallaj.
+o LANG-1176: Improve ArrayUtils removeElements time complexity to O(n). Thanks
+ to Jeffery Yuan.
+o LANG-1234: getLevenshteinDistance with a threshold: optimize implementation
+ if the strings lengths differ more than the threshold. Thanks to
+ Jonatan Jönsson.
+o LANG-1151: Performance improvements for NumberUtils.isParsable. Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-1218: EqualsBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1210: StringUtils#startsWithAny has error in Javadoc. Thanks to
+ Matthias Niehoff.
+o LANG-1208: StrSubstitutor can preserve escapes. Thanks to Samuel Karp.
+o LANG-1182: Clarify Javadoc of StringUtils.containsAny(). Thanks to
+ Larry West and Pascal Schumacher.
+o LANG-1183: Making replacePattern/removePattern methods null safe in
+ StringUtils.
+o LANG-1057: Replace StringBuilder with String concatenation for better
+ optimization. Thanks to Otávio Santana.
+o LANG-1075: Deprecate SystemUtils.FILE_SEPARATOR and
+ SystemUtils.PATH_SEPARATOR.
+o LANG-979: TypeUtils.parameterizeWithOwner - wrong format descriptor for
+ "invalid number of type parameters". Thanks to Bruno P. Kinoshita.
+o LANG-1112: MultilineRecursiveToStringStyle largely unusable due to being
+ package-private.
+o LANG-1058: StringUtils.uncapitalize performance improvement. Thanks to
+ Leo Wang.
+o LANG-1069: CharSet.getInstance documentation does not clearly explain how
+ to include negation character in set. Thanks to Arno Noordover.
+o LANG-1107: Fix parsing edge cases in FastDateParser.
+o LANG-1273: Added new property IS_OS_MAC_OSX_EL_CAPITAN in SystemUtils. Thanks
+ to Jake Wang.
+
+=============================================================================
+
+ Release Notes for version 3.4
+
+
+COMPATIBILITY
+=============
+
+Commons Lang 3.4 is fully binary compatible to the last release and can
+therefore be used as a drop in replacement for 3.3.2. Note that the value of
+org.apache.commons.lang3.time.DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN
+has changed, which may affect clients using the constant. Furthermore the
+constant is used internally in
+o DurationFormatUtils.formatDurationISO(long)
+o DurationFormatUtils.formatPeriodISO(long, long)
+
+For more information see https://issues.apache.org/jira/browse/LANG-1000.
+
+NEW FEATURES
+==============
+
+o LANG-821: Support OS X versions in SystemUtils. Thanks to Timo Kockert.
+o LANG-1103: Add SystemUtils.IS_JAVA_1_9
+o LANG-1093: Add ClassUtils.getAbbreviatedName(). Thanks to Fabian Lange.
+o LANG-1082: Add option to disable the "objectsTriviallyEqual" test in
+ DiffBuilder. Thanks to Jonathan Baker.
+o LANG-1015: Add JsonToStringStyle implementation to ToStringStyle. Thanks to
+ Thiago Andrade.
+o LANG-1080: Add NoClassNameToStringStyle implementation of ToStringStyle.
+ Thanks to Innokenty Shuvalov.
+o LANG-883: Add StringUtils.containsAny(CharSequence, CharSequence...) method.
+ Thanks to Daniel Stewart.
+o LANG-1052: Multiline recursive to string style. Thanks to Jan Matèrne.
+o LANG-536: Add isSorted() to ArrayUtils. Thanks to James Sawle.
+o LANG-1033: Add StringUtils.countMatches(CharSequence, char)
+o LANG-1021: Provide methods to retrieve all fields/methods annotated with a
+ specific type. Thanks to Alexander Müller.
+o LANG-1016: NumberUtils#isParsable method(s). Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-999: Add fuzzy String matching logic to StringUtils. Thanks to
+ Ben Ripkens.
+o LANG-994: Add zero copy read method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-993: Add zero copy write method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-1044: Add method MethodUtils.invokeExactMethod(Object, String)
+o LANG-1045: Add method MethodUtils.invokeMethod(Object, String)
+
+FIXED BUGS
+============
+
+o LANG-794: SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect. Thanks to
+ Timo Kockert.
+o LANG-1104: Parse test fails for TimeZone America/Sao_Paulo
+o LANG-948: Exception while using ExtendedMessageFormat and escaping braces.
+ Thanks to Andrey Khobnya.
+o LANG-1092: Wrong formatting of time zones with daylight saving time in
+ FastDatePrinter
+o LANG-1090: FastDateParser does not set error indication in ParsePosition
+o LANG-1089: FastDateParser does not handle excess hours as per
+ SimpleDateFormat
+o LANG-1061: FastDateParser error - timezones not handled correctly. Thanks to
+ dmeneses.
+o LANG-1087: NumberUtils#createNumber() returns positive BigDecimal when
+ negative Float is expected. Thanks to Renat Zhilkibaev.
+o LANG-1081: DiffBuilder.append(String, Object left, Object right) does not do
+ a left.equals(right) check. Thanks to Jonathan Baker.
+o LANG-1055: StrSubstitutor.replaceSystemProperties does not work consistently.
+ Thanks to Jonathan Baker.
+o LANG-1083: Add (T) casts to get unit tests to pass in old JDK. Thanks to
+ Jonathan Baker.
+o LANG-1073: Read wrong component type of array in add in ArrayUtils.
+ Thanks to haiyang li.
+o LANG-1077: StringUtils.ordinalIndexOf("aaaaaa", "aa", 2) != 3 in StringUtils.
+ Thanks to haiyang li.
+o LANG-1072: Duplicated "0x" check in createBigInteger in NumberUtils. Thanks
+ to haiyang li.
+o LANG-1064: StringUtils.abbreviate description doesn't agree with the
+ examples. Thanks to B.J. Herbison.
+o LANG-1041: Fix MethodUtilsTest so it does not depend on JDK method ordering.
+ Thanks to Alexandre Bartel.
+o LANG-1000: ParseException when trying to parse UTC dates with Z as zone
+ designator using DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT
+o LANG-1035: Javadoc for EqualsBuilder.reflectionEquals() is unclear
+o LANG-1001: ISO 8601 misspelled throughout the Javadocs. Thanks to
+ Michael Osipov.
+o LANG-1088: FastDateParser should be case insensitive
+o LANG-995: Fix bug with stripping spaces on last line in WordUtils.wrap().
+ Thanks to Andrey Khobnya.
+
+CHANGES
+=========
+
+o LANG-1102: Make logic for comparing OS versions in SystemUtils smarter
+o LANG-1091: Shutdown thread pools in test cases. Thanks to Fabian Lange.
+o LANG-1101: FastDateParser and FastDatePrinter support 'X' format
+o LANG-1100: Avoid memory allocation when using date formatting to StringBuffer.
+ Thanks to mbracher.
+o LANG-935: Possible performance improvement on string escape functions.
+ Thanks to Fabian Lange, Thomas Neidhart.
+o LANG-1098: Avoid String allocation in StrBuilder.append(CharSequence). Thanks
+ to Mikhail Mazurskiy, Fabian Lange.
+o LANG-1098: Update maven-checkstyle-plugin to 2.14. Thanks to Micha? Kordas.
+o LANG-1097: Update org.easymock:easymock to 3.3.1. Thanks to Micha? Kordas.
+o LANG-1096: Update maven-pmd-plugin to 3.4. Thanks to Micha? Kordas.
+o LANG-1095: Update maven-antrun-plugin to 1.8. Thanks to Micha? Kordas.
+o LANG-877: Performance improvements for StringEscapeUtils. Thanks to
+ Fabian Lange.
+o LANG-1071: Fix wrong examples in Javadoc of
+ StringUtils.replaceEachRepeatedly(...),
+ StringUtils.replaceEach(...) Thanks to Arno Noordover.
+o LANG-827: CompareToBuilder's doc doesn't specify precedence of fields it
+ uses in performing comparisons
+o LANG-1020: Improve performance of normalize space. Thanks to Libor Ondrusek.
+o LANG-1027: org.apache.commons.lang3.SystemUtils#isJavaVersionAtLeast should
+ return true by default
+o LANG-1026: Bring static method references in StringUtils to consistent style.
+ Thanks to Alex Yursha.
+o LANG-1017: Use non-ASCII digits in Javadoc examples for
+ StringUtils.isNumeric. Thanks to Christoph Schneegans.
+o LANG-1008: Change min/max methods in NumberUtils/IEEE754rUtils from array
+ input parameters to varargs. Thanks to Thiago Andrade.
+o LANG-1006: Add wrap (with String or char) to StringUtils. Thanks to
+ Thiago Andrade.
+o LANG-1005: Extend DurationFormatUtils#formatDurationISO default pattern to
+ match #formatDurationHMS. Thanks to Michael Osipov.
+o LANG-1007: Fixing NumberUtils JAVADoc comments for max methods. Thanks to
+ Thiago Andrade.
+o LANG-731: Better Javadoc for BitField class
+o LANG-1004: DurationFormatUtils#formatDurationHMS implementation does not
+ correspond to Javadoc and vice versa. Thanks to Michael Osipov.
+o LANG-1003: DurationFormatUtils are not able to handle negative
+ durations/periods
+o LANG-998: Javadoc is not clear on preferred pattern to instantiate
+ FastDateParser / FastDatePrinter
+
+=============================================================================
+
+ Release Notes for version 3.3.2
+
+NEW FEATURES
+==============
+
+o LANG-989: Add org.apache.commons.lang3.SystemUtils.IS_JAVA_1_8
+
+FIXED BUGS
+============
+
+o LANG-992: NumberUtils#isNumber() returns false for "0.0", "0.4790", et al
+
+=============================================================================
+
+ Release Notes for version 3.3.1
+
+FIXED BUGS
+============
+
+o LANG-987: DateUtils.getFragmentInDays(Date, Calendar.MONTH) returns wrong
+ days
+o LANG-983: DurationFormatUtils does not describe format string fully
+o LANG-981: DurationFormatUtils#lexx does not detect unmatched quote char
+o LANG-984: DurationFormatUtils does not handle large durations correctly
+o LANG-982: DurationFormatUtils.formatDuration(61999, "s.SSSS") - ms field
+ size should be 4 digits
+o LANG-978: Failing tests with Java 8 b128
+
+=============================================================================
+
+ Release Notes for version 3.3
+
+NEW FEATURES
+==============
+
+o LANG-955: Add methods for removing all invalid characters according to
+ XML 1.0 and XML 1.1 in an input string to StringEscapeUtils.
+ Thanks to Adam Hooper.
+o LANG-970: Add APIs MutableBoolean setTrue() and setFalse()
+o LANG-962: Add SerializationUtils.roundtrip(T extends Serializable) to
+ serialize then deserialize
+o LANG-637: There should be a DifferenceBuilder with a
+ ReflectionDifferenceBuilder implementation
+o LANG-944: Add the Jaro-Winkler string distance algorithm to StringUtils.
+ Thanks to Rekha Joshi.
+o LANG-417: New class ClassPathUtils with methods for turning FQN into
+ resource path
+o LANG-834: Validate: add inclusiveBetween and exclusiveBetween overloads
+ for primitive types
+o LANG-900: New RandomUtils class. Thanks to Duncan Jones.
+o LANG-966: Add IBM OS/400 detection
+
+FIXED BUGS
+============
+
+o LANG-621: ReflectionToStringBuilder.toString does not debug 3rd party object
+ fields within 3rd party object. Thanks to Philip Hodges,
+ Thomas Neidhart.
+o LANG-977: NumericEntityEscaper incorrectly encodes supplementary characters.
+ Thanks to Chris Karcher.
+o LANG-973: Make some private fields final
+o LANG-971: NumberUtils#isNumber(String) fails to reject invalid Octal numbers
+o LANG-972: NumberUtils#isNumber does not allow for hex 0XABCD
+o LANG-969: StringUtils.toEncodedString(byte[], Charset) needlessly throws
+ UnsupportedEncodingException. Thanks to Matt Bishop.
+o LANG-946: ConstantInitializerTest fails when building with IBM JDK 7
+o LANG-954: uncaught PatternSyntaxException in FastDateFormat on Android.
+ Thanks to Michael Keppler.
+o LANG-936: StringUtils.getLevenshteinDistance with too big of a threshold
+ returns wrong result. Thanks to Yaniv Kunda, Eli Lindsey.
+o LANG-943: Test DurationFormatUtilsTest.testEdgeDuration fails in
+ JDK 1.6, 1.7 and 1.8, BRST time zone
+o LANG-613: ConstructorUtils.getAccessibleConstructor() Does Not Check the
+ Accessibility of Enclosing Classes
+o LANG-951: Fragments are wrong by 1 day when using fragment YEAR or MONTH.
+ Thanks to Sebastian Götz.
+o LANG-950: FastDateParser does not handle two digit year parsing like
+ SimpleDateFormat
+o LANG-949: FastDateParserTest.testParses does not test FastDateParser
+o LANG-915: Wrong locale handling in LocaleUtils.toLocale().
+ Thanks to Sergio Fernández.
+
+CHANGES
+=========
+
+o LANG-961: org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field)
+ does not clean up after itself
+o LANG-958: FastDateParser javadoc incorrectly states that SimpleDateFormat
+ is used internally
+o LANG-956: Improve Javadoc of WordUtils.wrap methods
+o LANG-939: Move Documentation from user guide to package-info files
+o LANG-953: Convert package.html files to package-info.java files
+o LANG-940: Fix deprecation warnings
+o LANG-819: EnumUtils.generateBitVector needs a "? extends"
+
+=============================================================================
+
+ Release Notes for version 3.2.1
+
+BUG FIXES
+===========
+
+o LANG-937: Fix missing Hamcrest dependency in Ant Build
+o LANG-941: Test failure in LocaleUtilsTest when building with JDK 8
+o LANG-942: Test failure in FastDateParserTest and FastDateFormat_ParserTest
+ when building with JDK8. Thanks to Bruno P. Kinoshita,
+ Henri Yandell.
+o LANG-938: Build fails with test failures when building with JDK 8
+
+=============================================================================
+
+ Release Notes for version 3.2
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+=============================================================================
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+=============================================================================
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12 hour clock and not
+ 24 hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.8.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.8.txt
new file mode 100644
index 000000000..b760d8308
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.8.txt
@@ -0,0 +1,1237 @@
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.8
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.8 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 and onwards now targets Java 7.0, making use of features that arrived with Java 7.0.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+Apache Commons Lang, a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang.
+
+New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.
+
+Changes in this version include:
+
+New features:
+o LANG-1352: EnumUtils.getEnumIgnoreCase and isValidEnumIgnoreCase methods added Thanks to Ruslan Sibgatullin.
+o LANG-1372: Add ToStringSummary annotation Thanks to Sérgio Ozaki.
+o LANG-1356: Add bypass option for classes to recursive and reflective EqualsBuilder Thanks to Yathos UG.
+o LANG-1391: Improve Javadoc for StringUtils.isAnyEmpty(null) Thanks to Sauro Matulli, Oleg Chubaryov.
+o LANG-1393: Add API SystemUtils.String getEnvironmentVariable(final String name, final String defaultValue) Thanks to Gary Gregory.
+o LANG-1394: org.apache.commons.lang3.SystemUtils should not write to System.err. Thanks to Sebb, Gary Gregory.
+o LANG-1238: Add RegexUtils class instead of overloading methods in StringUtils that take a regex to take precompiled Pattern. Thanks to Christopher Cordeiro, Gary Gregory, Bruno P. Kinoshita, Oleg Chubaryov.
+o LANG-1390: StringUtils.join() with support for List<?> with configurable start/end indices. Thanks to Jochen Schalanda.
+o LANG-1392: Methods for getting first non empty or non blank value Thanks to Jeff Nelson.
+o LANG-1408: Rounding utilities for converting to BigDecimal
+
+Fixed Bugs:
+o LANG-1380: FastDateParser too strict on abbreviated short month symbols Thanks to Markus Jelsma.
+o LANG-1396: JsonToStringStyle does not escape string names
+o LANG-1395: JsonToStringStyle does not escape double quote in a string value Thanks to Jim Gan.
+o LANG-1384: New Java version ("11") must be handled Thanks to Ian Young.
+o LANG-1364: ExceptionUtils#getRootCause(Throwable t) should return t if no lower level cause exists Thanks to Zheng Xie.
+o LANG-1060: NumberUtils.isNumber assumes number starting with Zero Thanks to Piotr Kosmala.
+o LANG-1375: defaultString(final String str) in StringUtils to reuse defaultString(final String str, final String defaultStr) Thanks to Jerry Zhao.
+o LANG-1374: Parsing Json Array failed Thanks to Jaswanth Bala.
+o LANG-1371: Fix TypeUtils#parameterize to work correctly with narrower-typed array Thanks to Dmitry Ovchinnikov.
+o LANG-1370: Fix EventCountCircuitBreaker increment batch Thanks to Andre Dieb.
+o LANG-1385: NumberUtils.createNumber() throws StringIndexOutOfBoundsException instead of NumberFormatException Thanks to Rohan Padhye.
+o LANG-1397: WordUtils.wrap throws StringIndexOutOfBoundsException when wrapLength is Integer.MAX_VALUE. Thanks to Takanobu Asanuma.
+o LANG-1401: Typo in JavaDoc for lastIndexOf Thanks to Roman Golyshev, Alex Mamedov.
+
+Changes:
+o LANG-1367: ObjectUtils.identityToString(Object) and friends should allocate builders and buffers with a size Thanks to Gary Gregory.
+o LANG-1405: Remove checks for java versions below the minimum supported one Thanks to Lars Grefer.
+o LANG-1402: Null/index safe get methods for ArrayUtils Thanks to Mark Dacek.
+
+
+Historical list of changes: https://commons.apache.org/proper/commons-lang/changes-report.html
+
+For complete information on Apache Commons Lang, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons Lang website:
+
+https://commons.apache.org/proper/commons-lang/
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.7
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.7 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 and onwards now targets Java 5.0, making use of features that arrived with Java 5.0 such as generics,
+variable arguments, autoboxing, concurrency and formatted output.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+Apache Commons Lang, a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang.
+
+New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.
+
+Changes in this version include:
+
+New features:
+o LANG-1355: TimeZone.getTimeZone() in FastDateParser causes resource contention (PR #296.) Thanks to Chas Honton.
+o LANG-1360: Add methods to ObjectUtils to get various forms of class names in a null-safe manner Thanks to Gary Gregory.
+
+Fixed Bugs:
+o LANG-1362: Fix tests DateUtilsTest for Java 9 with en_GB locale Thanks to Stephen Colebourne.
+o LANG-1365: Fix NullPointerException in isJavaVersionAtLeast on Java 10, add SystemUtils.IS_JAVA_10, add JavaVersion.JAVA_10 Thanks to Gary Gregory.
+o LANG-1348: StackOverflowError on TypeUtils.toString(...) for a generic return type of Enum.valueOf Thanks to mbusso.
+o LANG-1350: ConstructorUtils.invokeConstructor(Class, Object...) regression Thanks to Brett Kail.
+o LANG-1349: EqualsBuilder#isRegistered: swappedPair construction bug Thanks to Naman Nigam.
+o LANG-1357: org.apache.commons.lang3.time.FastDateParser should use toUpperCase(Locale) Thanks to BruceKuiLiu.
+
+Changes:
+o LANG-1358: Improve StringUtils#replace throughput Thanks to Stephane Landelle.
+o LANG-1346: Remove deprecation from RandomStringUtils
+o LANG-1361: ExceptionUtils.getThrowableList() is using deprecated ExceptionUtils.getCause() Thanks to Ana.
+
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.6
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.6 version of
+Apache Commons Lang as well as a history all changes in the Commons Lang 3.x
+release line. Commons Lang is a set of utility functions and reusable
+components that should be of use in any Java environment. Commons Lang 3.6 at
+least requires Java 7.0. Note that this has changed from Commons Lang 3.5, which
+only required Java 1.6.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+HIGHLIGHTS
+==========
+
+Some of the highlights in this release include:
+
+o The class org.apache.commons.lang3.concurrent.Memoizer is an implementation
+ of the Memoizer pattern as shown in
+ Goetz, Brian et al. (2006) - Java Concurrency in Practice, p. 108.
+o The class org.apache.commons.lang3.ArchUtils has been added. ArchUtils is
+ a utility class for the "os.arch" system property.
+
+DEPRECATIONS
+============
+
+The Apache Commons Community has recently set up the Commons Text component
+as a home for algorithms working on strings. For this reason most of the string
+focused functionality in Commons Lang has been deprecated and moved to
+Commons Text. This includes:
+
+o All classes in the org.apache.commons.lang3.text and the
+ org.apache.commons.lang3.text.translate packages
+o org.apache.commons.lang3.StringEscapeUtils
+o org.apache.commons.lang3.RandomStringUtils
+o The methods org.apache.commons.lang3.StringUtils.getJaroWinklerDistance and
+ org.apache.commons.lang3.StringUtils.getLevenshteinDistance
+
+For more information see the Commons Text website:
+
+ https://commons.apache.org/text
+
+The class org.apache.commons.lang3.CharEncoding has been deprecated in favor of
+java.nio.charset.StandardCharsets.
+
+The following methods have been deprecated in
+org.apache.commons.lang3.ArrayUtils in favor of the corresponding insert
+methods. Note that the handling for null inputs differs between add and insert.
+
+o add(boolean[], int, boolean) -> insert(int, boolean[], boolean...)
+o add(byte[], int, boolean) -> insert(int, byte[], byte...)
+o add(char[], int, boolean) -> insert(int, char[], char...)
+o add(double[], int, boolean) -> insert(int, double[], double...)
+o add(float[], int, boolean) -> insert(int, float[], float...)
+o add(int[], int, boolean) -> insert(int, int[], int...)
+o add(long[], int, boolean) -> insert(int, long[], long...)
+o add(short[], int, boolean) -> insert(int, short[], short...)
+o add(T[], int, boolean) -> insert(int, T[], T...)
+
+
+COMPATIBILITY WITH JAVA 9
+==================
+
+The MANIFEST.MF now contains an additional entry:
+
+ Automatic-Module-Name: org.apache.commons.lang3
+
+This should make it possible to use Commons Lang 3.6 as a module in the Java 9
+module system. For more information see the corresponding issue and the
+referenced mailing list discussions:
+
+ https://issues.apache.org/jira/browse/LANG-1338
+
+The build problems present in the 3.5 release have been resolved. Building
+Commons Lang 3.6 should work out of the box with the latest Java 9 EA build.
+Please report any Java 9 related issues at:
+
+ https://issues.apache.org/jira/browse/LANG
+
+NEW FEATURES
+============
+
+o LANG-1336: Add NUL Byte To CharUtils. Thanks to Beluga Behr.
+o LANG-1304: Add method in StringUtils to determine if string contains both
+ mixed cased characters. Thanks to Andy Klimczak.
+o LANG-1325: Increase test coverage of ToStringBuilder class to 100%.
+ Thanks to Arshad Basha.
+o LANG-1307: Add a method in StringUtils to extract only digits out of input
+ string. Thanks to Arshad Basha.
+o LANG-1256: Add JMH maven dependencies. Thanks to C0rWin.
+o LANG-1167: Add null filter to ReflectionToStringBuilder.
+ Thanks to Mark Dacek.
+o LANG-1299: Add method for converting string to an array of code points.
+o LANG-660: Add methods to insert arrays into arrays at an index.
+o LANG-1034: Add support for recursive comparison to
+ EqualsBuilder#reflectionEquals. Thanks to Yathos UG.
+o LANG-1067: Add a reflection-based variant of DiffBuilder.
+o LANG-740: Implementation of a Memoizer. Thanks to James Sawle.
+o LANG-1258: Add ArrayUtils#toStringArray method.
+ Thanks to IG, Grzegorz Ro?niecki.
+o LANG-1160: StringUtils#abbreviate should support 'custom ellipses' parameter.
+o LANG-1293: Add StringUtils#isAllEmpty and #isAllBlank methods.
+ Thanks to Pierre Templier, Martin Tarjanyi.
+o LANG-1313: Add ArchUtils - An utility class for the "os.arch" system property.
+ Thanks to Tomschi.
+o LANG-1272: Add shuffle methods to ArrayUtils.
+o LANG-1317: Add MethodUtils#findAnnotation and extend
+ MethodUtils#getMethodsWithAnnotation for non-public, super-class
+ and interface methods. Thanks to Yasser Zamani.
+o LANG-1331: Add ImmutablePair.nullPair().
+o LANG-1332: Add ImmutableTriple.nullTriple().
+
+FIXED BUGS
+==========
+
+o LANG-1337: Fix test failures in IBM JDK 8 for ToStringBuilderTest.
+o LANG-1319: MultilineRecursiveToStringStyle StackOverflowError when object is
+ an array.
+o LANG-1320: LocaleUtils#toLocale does not support language followed by UN M.49
+ numeric-3 area code followed by variant.
+o LANG-1300: Clarify or improve behavior of int-based indexOf methods in
+ StringUtils. Thanks to Mark Dacek.
+o LANG-1286: RandomStringUtils random method can overflow and return characters
+ outside of specified range.
+o LANG-1292: WordUtils.wrap throws StringIndexOutOfBoundsException.
+o LANG-1287: RandomStringUtils#random can enter infinite loop if end parameter
+ is to small. Thanks to Ivan Morozov.
+o LANG-1285: NullPointerException in FastDateParser$TimeZoneStrategy.
+ Thanks to Francesco Chicchiriccò.
+o LANG-1281: Javadoc of StringUtils.ordinalIndexOf is contradictory.
+ Thanks to Andreas Lundblad.
+o LANG-1188: StringUtils#join(T...): warning: [unchecked] Possible heap
+ pollution from parameterized vararg type T.
+o LANG-1144: Multiple calls of
+ org.apache.commons.lang3.concurrent.LazyInitializer.initialize()
+ are possible. Thanks to Waldemar Maier, Gary Gregory.
+o LANG-1276: StrBuilder#replaceAll ArrayIndexOutOfBoundsException.
+ Thanks to Andy Klimczak.
+o LANG-1278: BooleanUtils javadoc issues. Thanks to Duke Yin.
+o LANG-1070: ArrayUtils#add confusing example in javadoc.
+ Thanks to Paul Pogonyshev.
+o LANG-1271: StringUtils#isAnyEmpty and #isAnyBlank should return false for an
+ empty array. Thanks to Pierre Templier.
+o LANG-1155: Add StringUtils#unwrap. Thanks to Saif Asif, Thiago Andrade.
+o LANG-1311: TypeUtils.toString() doesn't handle primitive and Object arrays
+ correctly. Thanks to Aaron Digulla.
+o LANG-1312: LocaleUtils#toLocale does not support language followed by UN M.49
+ numeric-3 area code.
+o LANG-1265: Build failures when building with Java 9 EA.
+o LANG-1314: javadoc creation broken with Java 8. Thanks to Allon Murienik.
+o LANG-1310: MethodUtils.invokeMethod throws ArrayStoreException if using
+ varargs arguments and smaller types than the method defines.
+ Thanks to Don Jeba.
+
+CHANGES
+=======
+
+o LANG-1338: Add Automatic-Module-Name MANIFEST entry for Java 9
+ compatibility.
+o LANG-1334: Deprecate CharEncoding in favour of
+ java.nio.charset.StandardCharsets.
+o LANG-1110: Implement HashSetvBitSetTest using JMH.
+ Thanks to Bruno P. Kinoshita.
+o LANG-1290: Increase test coverage of org.apache.commons.lang3.ArrayUtils.
+ Thanks to Andrii Abramov.
+o LANG-1274: StrSubstitutor should state its thread safety.
+o LANG-1277: StringUtils#getLevenshteinDistance reduce memory consumption.
+ Thanks to yufcuy.
+o LANG-1279: Update Java requirement from Java 6 to 7.
+o LANG-1143: StringUtils should use toXxxxCase(int) rather than
+ toXxxxCase(char). Thanks to sebb.
+o LANG-1297: Add SystemUtils.getHostName() API.
+o LANG-1301: Moving apache-rat-plugin configuration into pluginManagement.
+ Thanks to Karl Heinz Marbaise.
+o LANG-1316: Deprecate classes/methods moved to commons-text.
+
+=============================================================================
+
+ Release Notes for version 3.5
+
+
+HIGHLIGHTS
+==========
+
+Some of the highlights in this release include:
+
+o Added Java 9 detection to org.apache.commons.lang3.SystemUtils.
+o Support for shifting and swapping elements in
+ org.apache.commons.lang3.ArrayUtils.
+o New methods for generating random strings from different character classes
+ including alphabetic, alpha-numeric and ASCII added to
+ org.apache.commons.lang3.RandomStringUtils.
+o Numerous extensions to org.apache.commons.lang3.StringUtils including
+ null safe compare variants, more remove and replace variants, rotation and
+ truncation.
+o Added org.apache.commons.lang3.ThreadUtils - a utility class to work with
+ instances of java.lang.Thread and java.lang.ThreadGroup.
+o Added annotations @EqualsExclude, @HashCodeExclude and @ToStringExclude to
+ mark fields which should be ignored by the reflective builders in the
+ org.apache.commons.lang3.builder package.
+o Support for various modify and retrieve value use cases added to the classes
+ in org.apache.commons.lang3.mutable.
+
+COMPATIBILITY
+=============
+
+Apache Commons Lang 3.5 is binary compatible with the 3.4 release. Users
+should not experience any problems when upgrading from 3.4 to 3.5.
+
+There has been an addition to the org.apache.commons.lang3.time.DatePrinter
+interface:
+
+o Added method 'public boolean parse(java.lang.String, java.text.ParsePosition,
+ java.util.Calendar)'
+o Added method 'public java.lang.Appendable format(long, java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Date,
+ java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Calendar,
+ java.lang.Appendable)'
+
+For this reason 3.5 is not strictly source compatible to 3.4. Since the
+DatePrinter interface is not meant to be implemented by clients, this
+change it not considered to cause any problems.
+
+JAVA 9 SUPPORT
+==============
+
+Java 9 introduces a new version-string scheme. Details of this new scheme are
+documented in JEP-223 (https://openjdk.org/jeps/223). In order to support
+JEP-223 two classes had to be changed:
+
+o org.apache.commons.lang3.JavaVersion
+ deprecated enum constant JAVA_1_9
+ introduced enum constant JAVA_9
+
+o org.apache.commons.lang3.SystemUtils
+ deprecated constant IS_JAVA_1_9
+ introduced constant IS_JAVA_9
+
+For more information see LANG-1197
+(https://issues.apache.org/jira/browse/LANG-1197). All other APIs are expected
+to work with Java 9.
+
+BUILDING ON JAVA 9
+==================
+
+Java 8 introduced the Unicode Consortium's Common Locale Data Repository as
+alternative source for locale data. Java 9 will use the CLDR provider as
+default provider for locale data (see https://openjdk.org/jeps/252). This
+causes an number of locale-sensitive test in Commons Lang to fail. In order
+to build Commons Lang 3.5 on Java 9, the locale provider has to be set to
+'JRE':
+
+ mvn -Djava.locale.providers=JRE clean install
+
+We are currently investigating ways to support building on Java 9 without
+further configuration. For more information see:
+https://issues.apache.org/jira/browse/LANG-1265
+
+
+NEW FEATURES
+==============
+
+o LANG-1275: Added a tryAcquire() method to TimedSemaphore.
+o LANG-1255: Add DateUtils.toCalendar(Date, TimeZone). Thanks to Kaiyuan Wang.
+o LANG-1023: Add WordUtils.wrap overload with customizable breakable character.
+ Thanks to Marko Bekhta.
+o LANG-787: Add method removeIgnoreCase(String, String) to StringUtils. Thanks
+ to Gokul Nanthakumar C.
+o LANG-1224: Extend RandomStringUtils with methods that generate strings
+ between a min and max length. Thanks to Caleb Cushing.
+o LANG-1257: Add APIs StringUtils.wrapIfMissing(String, char|String). Thanks to
+ Gary Gregory.
+o LANG-1253: Add RandomUtils#nextBoolean() method. Thanks to adilek.
+o LANG-1085: Add a circuit breaker implementation. Thanks to Oliver Heger and
+ Bruno P. Kinoshita.
+o LANG-1013: Add StringUtils.truncate(). Thanks to Thiago Andrade.
+o LANG-1195: Enhance MethodUtils to allow invocation of private methods. Thanks
+ to Derek C. Ashmore.
+o LANG-1189: Add getAndIncrement/getAndDecrement/getAndAdd/incrementAndGet/
+ decrementAndGet/addAndGet in Mutable* classes. Thanks to
+ Haiyang Li and Matthew Bartenschlag.
+o LANG-1225: Add RandomStringUtils#randomGraph and #randomPrint which match
+ corresponding regular expression class. Thanks to Caleb Cushing.
+o LANG-1223: Add StopWatch#getTime(TimeUnit). Thanks to Nick Manley.
+o LANG-781: Add methods to ObjectUtils class to check for null elements in the
+ array. Thanks to Krzysztof Wolny.
+o LANG-1228: Prefer Throwable.getCause() in ExceptionUtils.getCause().
+ Thanks to Brad Hess.
+o LANG-1233: DiffBuilder add method to allow appending from a DiffResult.
+ Thanks to Nick Manley.
+o LANG-1168: Add SystemUtils.IS_OS_WINDOWS_10 property.
+ Thanks to Pascal Schumacher.
+o LANG-1115: Add support for varargs in ConstructorUtils, MemberUtils, and
+ MethodUtils. Thanks to Jim Lloyd and Joe Ferner.
+o LANG-1134: Add methods to check numbers against NaN and infinite to
+ Validate. Thanks to Alan Smithee.
+o LANG-1220: Add tests for missed branches in DateUtils.
+ Thanks to Casey Scarborough.
+o LANG-1146: z/OS identification in SystemUtils.
+ Thanks to Gabor Liptak.
+o LANG-1192: FastDateFormat support of the week-year component (uppercase 'Y').
+ Thanks to Dominik Stadler.
+o LANG-1169: Add StringUtils methods to compare a string to multiple strings.
+ Thanks to Rafal Glowinski, Robert Parr and Arman Sharif.
+o LANG-1185: Add remove by regular expression methods in StringUtils.
+o LANG-1139: Add replace by regular expression methods in StringUtils.
+o LANG-1171: Add compare methods in StringUtils.
+o LANG-1174: Add sugar to RandomUtils. Thanks to Punkratz312.
+o LANG-1154: FastDateFormat APIs that use a StringBuilder. Thanks to
+ Gary Gregory.
+o LANG-1149: Ability to throw checked exceptions without declaring them. Thanks
+ to Gregory Zak.
+o LANG-1153: Implement ParsePosition api for FastDateParser.
+o LANG-1137: Add check for duplicate event listener in EventListenerSupport.
+ Thanks to Matthew Aguirre.
+o LANG-1135: Add method containsAllWords to WordUtils. Thanks to
+ Eduardo Martins.
+o LANG-1132: ReflectionToStringBuilder doesn't throw IllegalArgumentException
+ when the constructor's object param is null. Thanks to Jack Tan.
+o LANG-701: StringUtils join with var args. Thanks to James Sawle.
+o LANG-1105: Add ThreadUtils - A utility class which provides helper methods
+ related to java.lang.Thread Issue: LANG-1105. Thanks to
+ Hendrik Saly.
+o LANG-1031: Add annotations to exclude fields from ReflectionEqualsBuilder,
+ ReflectionToStringBuilder and ReflectionHashCodeBuilder. Thanks
+ to Felipe Adorno.
+o LANG-1127: Use JUnit rules to set and reset the default Locale and TimeZone.
+o LANG-1119: Add rotate(string, int) method to StringUtils. Thanks to
+ Loic Guibert.
+o LANG-1099: Add swap and shift operations for arrays to ArrayUtils. Thanks to
+ Adrian Ber.
+o LANG-1050: Change nullToEmpty methods to generics. Thanks to James Sawle.
+o LANG-1074: Add a method to ArrayUtils for removing all occurrences of a given
+ element Issue: LANG-1074. Thanks to Haiyang Li.
+
+FIXED BUGS
+============
+
+o LANG-1261: ArrayUtils.contains returns false for instances of subtypes.
+o LANG-1252: Rename NumberUtils.isNumber, isCreatable to better reflect
+ createNumber. Also, accommodated for "+" symbol as prefix in
+ isCreatable and isNumber. Thanks to Rob Tompkins.
+o LANG-1230: Remove unnecessary synchronization from registry lookup in
+ EqualsBuilder and HashCodeBuilder. Thanks to Philippe Marschall.
+o LANG-1214: Handle "void" in ClassUtils.getClass(). Thanks to Henry Tung.
+o LANG-1250: SerializationUtils#deserialize has unnecessary code and a comment
+ for that. Thanks to Glease Wang.
+o LANG-1190: TypeUtils.isAssignable throws NullPointerException when fromType
+ has type variables and toType generic superclass specifies type
+ variable. Thanks to Pascal Schumacher.
+o LANG-1226: StringUtils#normalizeSpace does not trim the string anymore.
+ Thanks to Pascal Schumacher.
+o LANG-1251: SerializationUtils.ClassLoaderAwareObjectInputStream should use
+ static initializer to initialize primitiveTypes map. Thanks to
+ Takuya Ueshin.
+o LANG-1248: FastDatePrinter Memory allocation regression. Thanks to
+ Benoit Wiart.
+o LANG-1018: Fix precision loss on NumberUtils.createNumber(String). Thanks to
+ Nick Manley.
+o LANG-1199: Fix implementation of StringUtils.getJaroWinklerDistance(). Thanks
+ to M. Steiger.
+o LANG-1244: Fix dead links in StringUtils.getLevenshteinDistance() javadoc.
+ Thanks to jjbankert.
+o LANG-1242: "\u2284":"?" mapping missing from
+ EntityArrays#HTML40_EXTENDED_ESCAPE. Thanks to Neal Stewart.
+o LANG-901: StringUtils#startsWithAny/endsWithAny is case sensitive -
+ documented as case insensitive. Thanks to Matthew Bartenschlag.
+o LANG-1232: DiffBuilder: Add null check on fieldName when appending Object or
+ Object[]. Thanks to Nick Manley.
+o LANG-1178: ArrayUtils.removeAll(Object array, int... indices) should do the
+ clone, not its callers. Thanks to Henri Yandell.
+o LANG-1120: StringUtils.stripAccents should remove accents from "?" and "?".
+ Thanks to kaching88.
+o LANG-1205: NumberUtils.createNumber() behaves inconsistently with
+ NumberUtils.isNumber(). Thanks to pbrose.
+o LANG-1222: Fix for incorrect comment on StringUtils.containsIgnoreCase
+ method. Thanks to Adam J.
+o LANG-1221: Fix typo on appendIfMissing javadoc. Thanks to Pierre Templier.
+o LANG-1202: parseDateStrictly doesn't pass specified locale. Thanks to
+ Markus Jelsma.
+o LANG-1219: FastDateFormat doesn't respect summer daylight in some localized
+ strings. Thanks to Jarek.
+o LANG-1175: Remove Ant-based build.
+o LANG-1194: Limit max heap memory for consistent Travis CI build.
+o LANG-1186: Fix NullPointerException in FastDateParser$TimeZoneStrategy.
+ Thanks to NickManley.
+o LANG-1193: ordinalIndexOf("abc", "ab", 1) gives incorrect answer of -1
+ (correct answer should be 0); revert fix for LANG-1077. Thanks to
+ Qin Li.
+o LANG-1002: Several predefined ISO FastDateFormats in DateFormatUtils are
+ incorrect. Thanks to Michael Osipov.
+o LANG-1152: StringIndexOutOfBoundsException or field over-write for large year
+ fields in FastDateParser. Thanks to Pas Filip.
+o LANG-1141: StrLookup.systemPropertiesLookup() no longer reacts on changes on
+ system properties.
+o LANG-1147: EnumUtils *BitVector issue with more than 32 values Enum. Thanks
+ to Loic Guibert.
+o LANG-1059: Capitalize javadoc is incorrect. Thanks to Colin Casey.
+o LANG-1122: Inconsistent behavior of swap for malformed inputs. Thanks to
+ Adrian Ber.
+o LANG-1130: Fix critical issues reported by SonarQube.
+o LANG-1131: StrBuilder.equals(StrBuilder) doesn't check for null inputs.
+o LANG-1128: JsonToStringStyle doesn't handle chars and objects correctly.
+ Thanks to Jack Tan.
+o LANG-1126: DateFormatUtilsTest.testSMTP depends on the default Locale.
+o LANG-1123: Unit test FastDatePrinterTimeZonesTest needs a timezone set.
+ Thanks to Christian P. Momon.
+o LANG-916: DateFormatUtils.format does not correctly change Calendar
+ TimeZone in certain situations. Thanks to Christian P. Momon.
+o LANG-1116: DateUtilsTest.testLang530 fails for some timezones. Thanks to
+ Aaron Sheldon.
+o LANG-1114: TypeUtils.ParameterizedType#equals doesn't work with wildcard
+ types. Thanks to Andy Coates.
+o LANG-1118: StringUtils.repeat('z', -1) throws NegativeArraySizeException.
+ Thanks to Loic Guibert.
+o LANG-1111: Fix FindBugs warnings in DurationFormatUtils.
+o LANG-1162: StringUtils#equals fails with Index OOBE on non-Strings with
+ identical leading prefix..
+o LANG-1163: There are no tests for CharSequenceUtils.regionMatches.
+o LANG-1200: Fix Javadoc of StringUtils.ordinalIndexOf. Thanks to BarkZhang.
+o LANG-1191: Incorrect Javadoc
+ StringUtils.containsAny(CharSequence, CharSequence...). Thanks to
+ qed, Brent Worden and Gary Gregory.
+
+CHANGES
+=========
+o LANG-1197: Prepare Java 9 detection.
+o LANG-1262: CompareToBuilder.append(Object, Object, Comparator) method is too
+ big to be inlined. Thanks to Ruslan Cheremin.
+o LANG-1259: Javadoc for ArrayUtils.isNotEmpty() is slightly misleading. Thanks
+ to Dominik Stadler.
+o LANG-1247: FastDatePrinter generates extra Date objects. Thanks to
+ Benoit Wiart.
+o LANG-1229: HashCodeBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1243: Simplify ArrayUtils removeElements by using new decrementAndGet()
+ method.
+o LANG-1240: Optimize BitField constructor implementation. Thanks to zhanhb.
+o LANG-1206: Improve CharSetUtils.squeeze() performance. Thanks to
+ Mohammed Alfallaj.
+o LANG-1176: Improve ArrayUtils removeElements time complexity to O(n). Thanks
+ to Jeffery Yuan.
+o LANG-1234: getLevenshteinDistance with a threshold: optimize implementation
+ if the strings lengths differ more than the threshold. Thanks to
+ Jonatan Jönsson.
+o LANG-1151: Performance improvements for NumberUtils.isParsable. Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-1218: EqualsBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1210: StringUtils#startsWithAny has error in Javadoc. Thanks to
+ Matthias Niehoff.
+o LANG-1208: StrSubstitutor can preserve escapes. Thanks to Samuel Karp.
+o LANG-1182: Clarify Javadoc of StringUtils.containsAny(). Thanks to
+ Larry West and Pascal Schumacher.
+o LANG-1183: Making replacePattern/removePattern methods null safe in
+ StringUtils.
+o LANG-1057: Replace StringBuilder with String concatenation for better
+ optimization. Thanks to Otávio Santana.
+o LANG-1075: Deprecate SystemUtils.FILE_SEPARATOR and
+ SystemUtils.PATH_SEPARATOR.
+o LANG-979: TypeUtils.parameterizeWithOwner - wrong format descriptor for
+ "invalid number of type parameters". Thanks to Bruno P. Kinoshita.
+o LANG-1112: MultilineRecursiveToStringStyle largely unusable due to being
+ package-private.
+o LANG-1058: StringUtils.uncapitalize performance improvement. Thanks to
+ Leo Wang.
+o LANG-1069: CharSet.getInstance documentation does not clearly explain how
+ to include negation character in set. Thanks to Arno Noordover.
+o LANG-1107: Fix parsing edge cases in FastDateParser.
+o LANG-1273: Added new property IS_OS_MAC_OSX_EL_CAPITAN in SystemUtils. Thanks
+ to Jake Wang.
+
+=============================================================================
+
+ Release Notes for version 3.4
+
+
+COMPATIBILITY
+=============
+
+Commons Lang 3.4 is fully binary compatible to the last release and can
+therefore be used as a drop in replacement for 3.3.2. Note that the value of
+org.apache.commons.lang3.time.DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN
+has changed, which may affect clients using the constant. Furthermore the
+constant is used internally in
+o DurationFormatUtils.formatDurationISO(long)
+o DurationFormatUtils.formatPeriodISO(long, long)
+
+For more information see https://issues.apache.org/jira/browse/LANG-1000.
+
+NEW FEATURES
+==============
+
+o LANG-821: Support OS X versions in SystemUtils. Thanks to Timo Kockert.
+o LANG-1103: Add SystemUtils.IS_JAVA_1_9
+o LANG-1093: Add ClassUtils.getAbbreviatedName(). Thanks to Fabian Lange.
+o LANG-1082: Add option to disable the "objectsTriviallyEqual" test in
+ DiffBuilder. Thanks to Jonathan Baker.
+o LANG-1015: Add JsonToStringStyle implementation to ToStringStyle. Thanks to
+ Thiago Andrade.
+o LANG-1080: Add NoClassNameToStringStyle implementation of ToStringStyle.
+ Thanks to Innokenty Shuvalov.
+o LANG-883: Add StringUtils.containsAny(CharSequence, CharSequence...) method.
+ Thanks to Daniel Stewart.
+o LANG-1052: Multiline recursive to string style. Thanks to Jan Matèrne.
+o LANG-536: Add isSorted() to ArrayUtils. Thanks to James Sawle.
+o LANG-1033: Add StringUtils.countMatches(CharSequence, char)
+o LANG-1021: Provide methods to retrieve all fields/methods annotated with a
+ specific type. Thanks to Alexander Müller.
+o LANG-1016: NumberUtils#isParsable method(s). Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-999: Add fuzzy String matching logic to StringUtils. Thanks to
+ Ben Ripkens.
+o LANG-994: Add zero copy read method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-993: Add zero copy write method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-1044: Add method MethodUtils.invokeExactMethod(Object, String)
+o LANG-1045: Add method MethodUtils.invokeMethod(Object, String)
+
+FIXED BUGS
+============
+
+o LANG-794: SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect. Thanks to
+ Timo Kockert.
+o LANG-1104: Parse test fails for TimeZone America/Sao_Paulo
+o LANG-948: Exception while using ExtendedMessageFormat and escaping braces.
+ Thanks to Andrey Khobnya.
+o LANG-1092: Wrong formatting of time zones with daylight saving time in
+ FastDatePrinter
+o LANG-1090: FastDateParser does not set error indication in ParsePosition
+o LANG-1089: FastDateParser does not handle excess hours as per
+ SimpleDateFormat
+o LANG-1061: FastDateParser error - timezones not handled correctly. Thanks to
+ dmeneses.
+o LANG-1087: NumberUtils#createNumber() returns positive BigDecimal when
+ negative Float is expected. Thanks to Renat Zhilkibaev.
+o LANG-1081: DiffBuilder.append(String, Object left, Object right) does not do
+ a left.equals(right) check. Thanks to Jonathan Baker.
+o LANG-1055: StrSubstitutor.replaceSystemProperties does not work consistently.
+ Thanks to Jonathan Baker.
+o LANG-1083: Add (T) casts to get unit tests to pass in old JDK. Thanks to
+ Jonathan Baker.
+o LANG-1073: Read wrong component type of array in add in ArrayUtils.
+ Thanks to haiyang li.
+o LANG-1077: StringUtils.ordinalIndexOf("aaaaaa", "aa", 2) != 3 in StringUtils.
+ Thanks to haiyang li.
+o LANG-1072: Duplicated "0x" check in createBigInteger in NumberUtils. Thanks
+ to haiyang li.
+o LANG-1064: StringUtils.abbreviate description doesn't agree with the
+ examples. Thanks to B.J. Herbison.
+o LANG-1041: Fix MethodUtilsTest so it does not depend on JDK method ordering.
+ Thanks to Alexandre Bartel.
+o LANG-1000: ParseException when trying to parse UTC dates with Z as zone
+ designator using DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT
+o LANG-1035: Javadoc for EqualsBuilder.reflectionEquals() is unclear
+o LANG-1001: ISO 8601 misspelled throughout the Javadocs. Thanks to
+ Michael Osipov.
+o LANG-1088: FastDateParser should be case insensitive
+o LANG-995: Fix bug with stripping spaces on last line in WordUtils.wrap().
+ Thanks to Andrey Khobnya.
+
+CHANGES
+=========
+
+o LANG-1102: Make logic for comparing OS versions in SystemUtils smarter
+o LANG-1091: Shutdown thread pools in test cases. Thanks to Fabian Lange.
+o LANG-1101: FastDateParser and FastDatePrinter support 'X' format
+o LANG-1100: Avoid memory allocation when using date formatting to StringBuffer.
+ Thanks to mbracher.
+o LANG-935: Possible performance improvement on string escape functions.
+ Thanks to Fabian Lange, Thomas Neidhart.
+o LANG-1098: Avoid String allocation in StrBuilder.append(CharSequence). Thanks
+ to Mikhail Mazurskiy, Fabian Lange.
+o LANG-1098: Update maven-checkstyle-plugin to 2.14. Thanks to Micha? Kordas.
+o LANG-1097: Update org.easymock:easymock to 3.3.1. Thanks to Micha? Kordas.
+o LANG-1096: Update maven-pmd-plugin to 3.4. Thanks to Micha? Kordas.
+o LANG-1095: Update maven-antrun-plugin to 1.8. Thanks to Micha? Kordas.
+o LANG-877: Performance improvements for StringEscapeUtils. Thanks to
+ Fabian Lange.
+o LANG-1071: Fix wrong examples in Javadoc of
+ StringUtils.replaceEachRepeatedly(...),
+ StringUtils.replaceEach(...) Thanks to Arno Noordover.
+o LANG-827: CompareToBuilder's doc doesn't specify precedence of fields it
+ uses in performing comparisons
+o LANG-1020: Improve performance of normalize space. Thanks to Libor Ondrusek.
+o LANG-1027: org.apache.commons.lang3.SystemUtils#isJavaVersionAtLeast should
+ return true by default
+o LANG-1026: Bring static method references in StringUtils to consistent style.
+ Thanks to Alex Yursha.
+o LANG-1017: Use non-ASCII digits in Javadoc examples for
+ StringUtils.isNumeric. Thanks to Christoph Schneegans.
+o LANG-1008: Change min/max methods in NumberUtils/IEEE754rUtils from array
+ input parameters to varargs. Thanks to Thiago Andrade.
+o LANG-1006: Add wrap (with String or char) to StringUtils. Thanks to
+ Thiago Andrade.
+o LANG-1005: Extend DurationFormatUtils#formatDurationISO default pattern to
+ match #formatDurationHMS. Thanks to Michael Osipov.
+o LANG-1007: Fixing NumberUtils JAVADoc comments for max methods. Thanks to
+ Thiago Andrade.
+o LANG-731: Better Javadoc for BitField class
+o LANG-1004: DurationFormatUtils#formatDurationHMS implementation does not
+ correspond to Javadoc and vice versa. Thanks to Michael Osipov.
+o LANG-1003: DurationFormatUtils are not able to handle negative
+ durations/periods
+o LANG-998: Javadoc is not clear on preferred pattern to instantiate
+ FastDateParser / FastDatePrinter
+
+=============================================================================
+
+ Release Notes for version 3.3.2
+
+NEW FEATURES
+==============
+
+o LANG-989: Add org.apache.commons.lang3.SystemUtils.IS_JAVA_1_8
+
+FIXED BUGS
+============
+
+o LANG-992: NumberUtils#isNumber() returns false for "0.0", "0.4790", et al
+
+=============================================================================
+
+ Release Notes for version 3.3.1
+
+FIXED BUGS
+============
+
+o LANG-987: DateUtils.getFragmentInDays(Date, Calendar.MONTH) returns wrong
+ days
+o LANG-983: DurationFormatUtils does not describe format string fully
+o LANG-981: DurationFormatUtils#lexx does not detect unmatched quote char
+o LANG-984: DurationFormatUtils does not handle large durations correctly
+o LANG-982: DurationFormatUtils.formatDuration(61999, "s.SSSS") - ms field
+ size should be 4 digits
+o LANG-978: Failing tests with Java 8 b128
+
+=============================================================================
+
+ Release Notes for version 3.3
+
+NEW FEATURES
+==============
+
+o LANG-955: Add methods for removing all invalid characters according to
+ XML 1.0 and XML 1.1 in an input string to StringEscapeUtils.
+ Thanks to Adam Hooper.
+o LANG-970: Add APIs MutableBoolean setTrue() and setFalse()
+o LANG-962: Add SerializationUtils.roundtrip(T extends Serializable) to
+ serialize then deserialize
+o LANG-637: There should be a DifferenceBuilder with a
+ ReflectionDifferenceBuilder implementation
+o LANG-944: Add the Jaro-Winkler string distance algorithm to StringUtils.
+ Thanks to Rekha Joshi.
+o LANG-417: New class ClassPathUtils with methods for turning FQN into
+ resource path
+o LANG-834: Validate: add inclusiveBetween and exclusiveBetween overloads
+ for primitive types
+o LANG-900: New RandomUtils class. Thanks to Duncan Jones.
+o LANG-966: Add IBM OS/400 detection
+
+FIXED BUGS
+============
+
+o LANG-621: ReflectionToStringBuilder.toString does not debug 3rd party object
+ fields within 3rd party object. Thanks to Philip Hodges,
+ Thomas Neidhart.
+o LANG-977: NumericEntityEscaper incorrectly encodes supplementary characters.
+ Thanks to Chris Karcher.
+o LANG-973: Make some private fields final
+o LANG-971: NumberUtils#isNumber(String) fails to reject invalid Octal numbers
+o LANG-972: NumberUtils#isNumber does not allow for hex 0XABCD
+o LANG-969: StringUtils.toEncodedString(byte[], Charset) needlessly throws
+ UnsupportedEncodingException. Thanks to Matt Bishop.
+o LANG-946: ConstantInitializerTest fails when building with IBM JDK 7
+o LANG-954: uncaught PatternSyntaxException in FastDateFormat on Android.
+ Thanks to Michael Keppler.
+o LANG-936: StringUtils.getLevenshteinDistance with too big of a threshold
+ returns wrong result. Thanks to Yaniv Kunda, Eli Lindsey.
+o LANG-943: Test DurationFormatUtilsTest.testEdgeDuration fails in
+ JDK 1.6, 1.7 and 1.8, BRST time zone
+o LANG-613: ConstructorUtils.getAccessibleConstructor() Does Not Check the
+ Accessibility of Enclosing Classes
+o LANG-951: Fragments are wrong by 1 day when using fragment YEAR or MONTH.
+ Thanks to Sebastian Götz.
+o LANG-950: FastDateParser does not handle two digit year parsing like
+ SimpleDateFormat
+o LANG-949: FastDateParserTest.testParses does not test FastDateParser
+o LANG-915: Wrong locale handling in LocaleUtils.toLocale().
+ Thanks to Sergio Fernández.
+
+CHANGES
+=========
+
+o LANG-961: org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field)
+ does not clean up after itself
+o LANG-958: FastDateParser javadoc incorrectly states that SimpleDateFormat
+ is used internally
+o LANG-956: Improve Javadoc of WordUtils.wrap methods
+o LANG-939: Move Documentation from user guide to package-info files
+o LANG-953: Convert package.html files to package-info.java files
+o LANG-940: Fix deprecation warnings
+o LANG-819: EnumUtils.generateBitVector needs a "? extends"
+
+=============================================================================
+
+ Release Notes for version 3.2.1
+
+BUG FIXES
+===========
+
+o LANG-937: Fix missing Hamcrest dependency in Ant Build
+o LANG-941: Test failure in LocaleUtilsTest when building with JDK 8
+o LANG-942: Test failure in FastDateParserTest and FastDateFormat_ParserTest
+ when building with JDK8. Thanks to Bruno P. Kinoshita,
+ Henri Yandell.
+o LANG-938: Build fails with test failures when building with JDK 8
+
+=============================================================================
+
+ Release Notes for version 3.2
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+=============================================================================
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+=============================================================================
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12 hour clock and not
+ 24 hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/resources/release-notes/RELEASE-NOTES-3.9.txt b/src/site/resources/release-notes/RELEASE-NOTES-3.9.txt
new file mode 100644
index 000000000..613847d80
--- /dev/null
+++ b/src/site/resources/release-notes/RELEASE-NOTES-3.9.txt
@@ -0,0 +1,1293 @@
+ Apache Commons Lang
+ Version 3.9
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.9 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.9 and onwards now targets Java 8, making use of features that arrived with Java 8.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+Apache Commons Lang, a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang.
+
+New features and bug fixes. Requires Java 8, supports Java 9, 10, 11
+
+Changes in this version include:
+
+New features:
+o LANG-1442: Javadoc pointing to Commons RNG.
+o Adding the Functions class.
+o LANG-1411: Add isEmpty method to ObjectUtils Thanks to Alexander Tsvetkov.
+o LANG-1422: Add null-safe StringUtils.valueOf(char[]) to delegate to String.valueOf(char[])
+o LANG-1427: Add API org.apache.commons.lang3.SystemUtils.isJavaVersionAtMost(JavaVersion)
+
+
+Changes:
+o LANG-1416: Add more SystemUtils.IS_JAVA_XX variants.
+o LANG-1416: Update to JUnit 5
+o LANG-1417: Add @FunctionalInterface to ThreadPredicate and ThreadGroupPredicate
+o LANG-1415: Update Java Language requirement to 1.8
+o LANG-1436: Consolidate the StringUtils equals and equalsIgnoreCase Javadoc and implementation
+o (doc) Fix javadoc for 'startIndex' parameter of StringUtils.join() methods. GitHub PR #412. Thanks to Andrei Troie aft90.
+
+
+Historical list of changes: https://commons.apache.org/proper/commons-lang/changes-report.html
+
+For complete information on Apache Commons Lang, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons Lang website:
+
+https://commons.apache.org/proper/commons-lang/
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.8.1
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.8.1 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 and onwards now targets Java 7.0, making use of features that arrived with Java 7.0.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+Apache Commons Lang, a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang.
+
+This release is a bugfix for Restoring Bundle-SymbolicName in the MANIFEST.mf file.
+
+Changes in this version include:
+
+
+Fixed Bugs:
+o LANG-1419: Restore BundleSymbolicName for OSGi
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.8
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.8 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 and onwards now targets Java 7.0, making use of features that arrived with Java 7.0.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+Apache Commons Lang, a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang.
+
+New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.
+
+Changes in this version include:
+
+New features:
+o LANG-1352: EnumUtils.getEnumIgnoreCase and isValidEnumIgnoreCase methods added Thanks to Ruslan Sibgatullin.
+o LANG-1372: Add ToStringSummary annotation Thanks to Sérgio Ozaki.
+o LANG-1356: Add bypass option for classes to recursive and reflective EqualsBuilder Thanks to Yathos UG.
+o LANG-1391: Improve Javadoc for StringUtils.isAnyEmpty(null) Thanks to Sauro Matulli, Oleg Chubaryov.
+o LANG-1393: Add API SystemUtils.String getEnvironmentVariable(final String name, final String defaultValue) Thanks to Gary Gregory.
+o LANG-1394: org.apache.commons.lang3.SystemUtils should not write to System.err. Thanks to Sebb, Gary Gregory.
+o LANG-1238: Add RegexUtils class instead of overloading methods in StringUtils that take a regex to take precompiled Pattern. Thanks to Christopher Cordeiro, Gary Gregory, Bruno P. Kinoshita, Oleg Chubaryov.
+o LANG-1390: StringUtils.join() with support for List<?> with configurable start/end indices. Thanks to Jochen Schalanda.
+o LANG-1392: Methods for getting first non empty or non blank value Thanks to Jeff Nelson.
+o LANG-1408: Rounding utilities for converting to BigDecimal
+
+Fixed Bugs:
+o LANG-1380: FastDateParser too strict on abbreviated short month symbols Thanks to Markus Jelsma.
+o LANG-1396: JsonToStringStyle does not escape string names
+o LANG-1395: JsonToStringStyle does not escape double quote in a string value Thanks to Jim Gan.
+o LANG-1384: New Java version ("11") must be handled Thanks to Ian Young.
+o LANG-1364: ExceptionUtils#getRootCause(Throwable t) should return t if no lower level cause exists Thanks to Zheng Xie.
+o LANG-1060: NumberUtils.isNumber assumes number starting with Zero Thanks to Piotr Kosmala.
+o LANG-1375: defaultString(final String str) in StringUtils to reuse defaultString(final String str, final String defaultStr) Thanks to Jerry Zhao.
+o LANG-1374: Parsing Json Array failed Thanks to Jaswanth Bala.
+o LANG-1371: Fix TypeUtils#parameterize to work correctly with narrower-typed array Thanks to Dmitry Ovchinnikov.
+o LANG-1370: Fix EventCountCircuitBreaker increment batch Thanks to Andre Dieb.
+o LANG-1385: NumberUtils.createNumber() throws StringIndexOutOfBoundsException instead of NumberFormatException Thanks to Rohan Padhye.
+o LANG-1397: WordUtils.wrap throws StringIndexOutOfBoundsException when wrapLength is Integer.MAX_VALUE. Thanks to Takanobu Asanuma.
+o LANG-1401: Typo in JavaDoc for lastIndexOf Thanks to Roman Golyshev, Alex Mamedov.
+
+Changes:
+o LANG-1367: ObjectUtils.identityToString(Object) and friends should allocate builders and buffers with a size Thanks to Gary Gregory.
+o LANG-1405: Remove checks for java versions below the minimum supported one Thanks to Lars Grefer.
+o LANG-1402: Null/index safe get methods for ArrayUtils Thanks to Mark Dacek.
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.7
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.7 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 and onwards now targets Java 5.0, making use of features that arrived with Java 5.0 such as generics,
+variable arguments, autoboxing, concurrency and formatted output.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+Apache Commons Lang, a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang.
+
+New features and bug fixes. Requires Java 7, supports Java 8, 9, 10.
+
+Changes in this version include:
+
+New features:
+o LANG-1355: TimeZone.getTimeZone() in FastDateParser causes resource contention (PR #296.) Thanks to Chas Honton.
+o LANG-1360: Add methods to ObjectUtils to get various forms of class names in a null-safe manner Thanks to Gary Gregory.
+
+Fixed Bugs:
+o LANG-1362: Fix tests DateUtilsTest for Java 9 with en_GB locale Thanks to Stephen Colebourne.
+o LANG-1365: Fix NullPointerException in isJavaVersionAtLeast on Java 10, add SystemUtils.IS_JAVA_10, add JavaVersion.JAVA_10 Thanks to Gary Gregory.
+o LANG-1348: StackOverflowError on TypeUtils.toString(...) for a generic return type of Enum.valueOf Thanks to mbusso.
+o LANG-1350: ConstructorUtils.invokeConstructor(Class, Object...) regression Thanks to Brett Kail.
+o LANG-1349: EqualsBuilder#isRegistered: swappedPair construction bug Thanks to Naman Nigam.
+o LANG-1357: org.apache.commons.lang3.time.FastDateParser should use toUpperCase(Locale) Thanks to BruceKuiLiu.
+
+Changes:
+o LANG-1358: Improve StringUtils#replace throughput Thanks to Stephane Landelle.
+o LANG-1346: Remove deprecation from RandomStringUtils
+o LANG-1361: ExceptionUtils.getThrowableList() is using deprecated ExceptionUtils.getCause() Thanks to Ana.
+
+
+=============================================================================
+
+ Apache Commons Lang
+ Version 3.6
+ Release Notes
+
+
+INTRODUCTION:
+
+This document contains the release notes for the 3.6 version of
+Apache Commons Lang as well as a history all changes in the Commons Lang 3.x
+release line. Commons Lang is a set of utility functions and reusable
+components that should be of use in any Java environment. Commons Lang 3.6 at
+least requires Java 7.0. Note that this has changed from Commons Lang 3.5, which
+only required Java 1.6.
+
+For the advice on upgrading from 2.x to 3.x, see the following page:
+
+ https://commons.apache.org/lang/article3_0.html
+
+HIGHLIGHTS
+==========
+
+Some of the highlights in this release include:
+
+o The class org.apache.commons.lang3.concurrent.Memoizer is an implementation
+ of the Memoizer pattern as shown in
+ Goetz, Brian et al. (2006) - Java Concurrency in Practice, p. 108.
+o The class org.apache.commons.lang3.ArchUtils has been added. ArchUtils is
+ a utility class for the "os.arch" system property.
+
+DEPRECATIONS
+============
+
+The Apache Commons Community has recently set up the Commons Text component
+as a home for algorithms working on strings. For this reason most of the string
+focused functionality in Commons Lang has been deprecated and moved to
+Commons Text. This includes:
+
+o All classes in the org.apache.commons.lang3.text and the
+ org.apache.commons.lang3.text.translate packages
+o org.apache.commons.lang3.StringEscapeUtils
+o org.apache.commons.lang3.RandomStringUtils
+o The methods org.apache.commons.lang3.StringUtils.getJaroWinklerDistance and
+ org.apache.commons.lang3.StringUtils.getLevenshteinDistance
+
+For more information see the Commons Text website:
+
+ https://commons.apache.org/text
+
+The class org.apache.commons.lang3.CharEncoding has been deprecated in favor of
+java.nio.charset.StandardCharsets.
+
+The following methods have been deprecated in
+org.apache.commons.lang3.ArrayUtils in favor of the corresponding insert
+methods. Note that the handling for null inputs differs between add and insert.
+
+o add(boolean[], int, boolean) -> insert(int, boolean[], boolean...)
+o add(byte[], int, boolean) -> insert(int, byte[], byte...)
+o add(char[], int, boolean) -> insert(int, char[], char...)
+o add(double[], int, boolean) -> insert(int, double[], double...)
+o add(float[], int, boolean) -> insert(int, float[], float...)
+o add(int[], int, boolean) -> insert(int, int[], int...)
+o add(long[], int, boolean) -> insert(int, long[], long...)
+o add(short[], int, boolean) -> insert(int, short[], short...)
+o add(T[], int, boolean) -> insert(int, T[], T...)
+
+
+COMPATIBILITY WITH JAVA 9
+==================
+
+The MANIFEST.MF now contains an additional entry:
+
+ Automatic-Module-Name: org.apache.commons.lang3
+
+This should make it possible to use Commons Lang 3.6 as a module in the Java 9
+module system. For more information see the corresponding issue and the
+referenced mailing list discussions:
+
+ https://issues.apache.org/jira/browse/LANG-1338
+
+The build problems present in the 3.5 release have been resolved. Building
+Commons Lang 3.6 should work out of the box with the latest Java 9 EA build.
+Please report any Java 9 related issues at:
+
+ https://issues.apache.org/jira/browse/LANG
+
+NEW FEATURES
+============
+
+o LANG-1336: Add NUL Byte To CharUtils. Thanks to Beluga Behr.
+o LANG-1304: Add method in StringUtils to determine if string contains both
+ mixed cased characters. Thanks to Andy Klimczak.
+o LANG-1325: Increase test coverage of ToStringBuilder class to 100%.
+ Thanks to Arshad Basha.
+o LANG-1307: Add a method in StringUtils to extract only digits out of input
+ string. Thanks to Arshad Basha.
+o LANG-1256: Add JMH maven dependencies. Thanks to C0rWin.
+o LANG-1167: Add null filter to ReflectionToStringBuilder.
+ Thanks to Mark Dacek.
+o LANG-1299: Add method for converting string to an array of code points.
+o LANG-660: Add methods to insert arrays into arrays at an index.
+o LANG-1034: Add support for recursive comparison to
+ EqualsBuilder#reflectionEquals. Thanks to Yathos UG.
+o LANG-1067: Add a reflection-based variant of DiffBuilder.
+o LANG-740: Implementation of a Memoizer. Thanks to James Sawle.
+o LANG-1258: Add ArrayUtils#toStringArray method.
+ Thanks to IG, Grzegorz Ro?niecki.
+o LANG-1160: StringUtils#abbreviate should support 'custom ellipses' parameter.
+o LANG-1293: Add StringUtils#isAllEmpty and #isAllBlank methods.
+ Thanks to Pierre Templier, Martin Tarjanyi.
+o LANG-1313: Add ArchUtils - An utility class for the "os.arch" system property.
+ Thanks to Tomschi.
+o LANG-1272: Add shuffle methods to ArrayUtils.
+o LANG-1317: Add MethodUtils#findAnnotation and extend
+ MethodUtils#getMethodsWithAnnotation for non-public, super-class
+ and interface methods. Thanks to Yasser Zamani.
+o LANG-1331: Add ImmutablePair.nullPair().
+o LANG-1332: Add ImmutableTriple.nullTriple().
+
+FIXED BUGS
+==========
+
+o LANG-1337: Fix test failures in IBM JDK 8 for ToStringBuilderTest.
+o LANG-1319: MultilineRecursiveToStringStyle StackOverflowError when object is
+ an array.
+o LANG-1320: LocaleUtils#toLocale does not support language followed by UN M.49
+ numeric-3 area code followed by variant.
+o LANG-1300: Clarify or improve behavior of int-based indexOf methods in
+ StringUtils. Thanks to Mark Dacek.
+o LANG-1286: RandomStringUtils random method can overflow and return characters
+ outside of specified range.
+o LANG-1292: WordUtils.wrap throws StringIndexOutOfBoundsException.
+o LANG-1287: RandomStringUtils#random can enter infinite loop if end parameter
+ is to small. Thanks to Ivan Morozov.
+o LANG-1285: NullPointerException in FastDateParser$TimeZoneStrategy.
+ Thanks to Francesco Chicchiriccò.
+o LANG-1281: Javadoc of StringUtils.ordinalIndexOf is contradictory.
+ Thanks to Andreas Lundblad.
+o LANG-1188: StringUtils#join(T...): warning: [unchecked] Possible heap
+ pollution from parameterized vararg type T.
+o LANG-1144: Multiple calls of
+ org.apache.commons.lang3.concurrent.LazyInitializer.initialize()
+ are possible. Thanks to Waldemar Maier, Gary Gregory.
+o LANG-1276: StrBuilder#replaceAll ArrayIndexOutOfBoundsException.
+ Thanks to Andy Klimczak.
+o LANG-1278: BooleanUtils javadoc issues. Thanks to Duke Yin.
+o LANG-1070: ArrayUtils#add confusing example in javadoc.
+ Thanks to Paul Pogonyshev.
+o LANG-1271: StringUtils#isAnyEmpty and #isAnyBlank should return false for an
+ empty array. Thanks to Pierre Templier.
+o LANG-1155: Add StringUtils#unwrap. Thanks to Saif Asif, Thiago Andrade.
+o LANG-1311: TypeUtils.toString() doesn't handle primitive and Object arrays
+ correctly. Thanks to Aaron Digulla.
+o LANG-1312: LocaleUtils#toLocale does not support language followed by UN M.49
+ numeric-3 area code.
+o LANG-1265: Build failures when building with Java 9 EA.
+o LANG-1314: javadoc creation broken with Java 8. Thanks to Allon Murienik.
+o LANG-1310: MethodUtils.invokeMethod throws ArrayStoreException if using
+ varargs arguments and smaller types than the method defines.
+ Thanks to Don Jeba.
+
+CHANGES
+=======
+
+o LANG-1338: Add Automatic-Module-Name MANIFEST entry for Java 9
+ compatibility.
+o LANG-1334: Deprecate CharEncoding in favour of
+ java.nio.charset.StandardCharsets.
+o LANG-1110: Implement HashSetvBitSetTest using JMH.
+ Thanks to Bruno P. Kinoshita.
+o LANG-1290: Increase test coverage of org.apache.commons.lang3.ArrayUtils.
+ Thanks to Andrii Abramov.
+o LANG-1274: StrSubstitutor should state its thread safety.
+o LANG-1277: StringUtils#getLevenshteinDistance reduce memory consumption.
+ Thanks to yufcuy.
+o LANG-1279: Update Java requirement from Java 6 to 7.
+o LANG-1143: StringUtils should use toXxxxCase(int) rather than
+ toXxxxCase(char). Thanks to sebb.
+o LANG-1297: Add SystemUtils.getHostName() API.
+o LANG-1301: Moving apache-rat-plugin configuration into pluginManagement.
+ Thanks to Karl Heinz Marbaise.
+o LANG-1316: Deprecate classes/methods moved to commons-text.
+
+=============================================================================
+
+ Release Notes for version 3.5
+
+
+HIGHLIGHTS
+==========
+
+Some of the highlights in this release include:
+
+o Added Java 9 detection to org.apache.commons.lang3.SystemUtils.
+o Support for shifting and swapping elements in
+ org.apache.commons.lang3.ArrayUtils.
+o New methods for generating random strings from different character classes
+ including alphabetic, alpha-numeric and ASCII added to
+ org.apache.commons.lang3.RandomStringUtils.
+o Numerous extensions to org.apache.commons.lang3.StringUtils including
+ null safe compare variants, more remove and replace variants, rotation and
+ truncation.
+o Added org.apache.commons.lang3.ThreadUtils - a utility class to work with
+ instances of java.lang.Thread and java.lang.ThreadGroup.
+o Added annotations @EqualsExclude, @HashCodeExclude and @ToStringExclude to
+ mark fields which should be ignored by the reflective builders in the
+ org.apache.commons.lang3.builder package.
+o Support for various modify and retrieve value use cases added to the classes
+ in org.apache.commons.lang3.mutable.
+
+COMPATIBILITY
+=============
+
+Apache Commons Lang 3.5 is binary compatible with the 3.4 release. Users
+should not experience any problems when upgrading from 3.4 to 3.5.
+
+There has been an addition to the org.apache.commons.lang3.time.DatePrinter
+interface:
+
+o Added method 'public boolean parse(java.lang.String, java.text.ParsePosition,
+ java.util.Calendar)'
+o Added method 'public java.lang.Appendable format(long, java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Date,
+ java.lang.Appendable)'
+o Added method 'public java.lang.Appendable format(java.util.Calendar,
+ java.lang.Appendable)'
+
+For this reason 3.5 is not strictly source compatible to 3.4. Since the
+DatePrinter interface is not meant to be implemented by clients, this
+change it not considered to cause any problems.
+
+JAVA 9 SUPPORT
+==============
+
+Java 9 introduces a new version-string scheme. Details of this new scheme are
+documented in JEP-223 (https://openjdk.org/jeps/223). In order to support
+JEP-223 two classes had to be changed:
+
+o org.apache.commons.lang3.JavaVersion
+ deprecated enum constant JAVA_1_9
+ introduced enum constant JAVA_9
+
+o org.apache.commons.lang3.SystemUtils
+ deprecated constant IS_JAVA_1_9
+ introduced constant IS_JAVA_9
+
+For more information see LANG-1197
+(https://issues.apache.org/jira/browse/LANG-1197). All other APIs are expected
+to work with Java 9.
+
+BUILDING ON JAVA 9
+==================
+
+Java 8 introduced the Unicode Consortium's Common Locale Data Repository as
+alternative source for locale data. Java 9 will use the CLDR provider as
+default provider for locale data (see https://openjdk.org/jeps/252). This
+causes an number of locale-sensitive test in Commons Lang to fail. In order
+to build Commons Lang 3.5 on Java 9, the locale provider has to be set to
+'JRE':
+
+ mvn -Djava.locale.providers=JRE clean install
+
+We are currently investigating ways to support building on Java 9 without
+further configuration. For more information see:
+https://issues.apache.org/jira/browse/LANG-1265
+
+
+NEW FEATURES
+==============
+
+o LANG-1275: Added a tryAcquire() method to TimedSemaphore.
+o LANG-1255: Add DateUtils.toCalendar(Date, TimeZone). Thanks to Kaiyuan Wang.
+o LANG-1023: Add WordUtils.wrap overload with customizable breakable character.
+ Thanks to Marko Bekhta.
+o LANG-787: Add method removeIgnoreCase(String, String) to StringUtils. Thanks
+ to Gokul Nanthakumar C.
+o LANG-1224: Extend RandomStringUtils with methods that generate strings
+ between a min and max length. Thanks to Caleb Cushing.
+o LANG-1257: Add APIs StringUtils.wrapIfMissing(String, char|String). Thanks to
+ Gary Gregory.
+o LANG-1253: Add RandomUtils#nextBoolean() method. Thanks to adilek.
+o LANG-1085: Add a circuit breaker implementation. Thanks to Oliver Heger and
+ Bruno P. Kinoshita.
+o LANG-1013: Add StringUtils.truncate(). Thanks to Thiago Andrade.
+o LANG-1195: Enhance MethodUtils to allow invocation of private methods. Thanks
+ to Derek C. Ashmore.
+o LANG-1189: Add getAndIncrement/getAndDecrement/getAndAdd/incrementAndGet/
+ decrementAndGet/addAndGet in Mutable* classes. Thanks to
+ Haiyang Li and Matthew Bartenschlag.
+o LANG-1225: Add RandomStringUtils#randomGraph and #randomPrint which match
+ corresponding regular expression class. Thanks to Caleb Cushing.
+o LANG-1223: Add StopWatch#getTime(TimeUnit). Thanks to Nick Manley.
+o LANG-781: Add methods to ObjectUtils class to check for null elements in the
+ array. Thanks to Krzysztof Wolny.
+o LANG-1228: Prefer Throwable.getCause() in ExceptionUtils.getCause().
+ Thanks to Brad Hess.
+o LANG-1233: DiffBuilder add method to allow appending from a DiffResult.
+ Thanks to Nick Manley.
+o LANG-1168: Add SystemUtils.IS_OS_WINDOWS_10 property.
+ Thanks to Pascal Schumacher.
+o LANG-1115: Add support for varargs in ConstructorUtils, MemberUtils, and
+ MethodUtils. Thanks to Jim Lloyd and Joe Ferner.
+o LANG-1134: Add methods to check numbers against NaN and infinite to
+ Validate. Thanks to Alan Smithee.
+o LANG-1220: Add tests for missed branches in DateUtils.
+ Thanks to Casey Scarborough.
+o LANG-1146: z/OS identification in SystemUtils.
+ Thanks to Gabor Liptak.
+o LANG-1192: FastDateFormat support of the week-year component (uppercase 'Y').
+ Thanks to Dominik Stadler.
+o LANG-1169: Add StringUtils methods to compare a string to multiple strings.
+ Thanks to Rafal Glowinski, Robert Parr and Arman Sharif.
+o LANG-1185: Add remove by regular expression methods in StringUtils.
+o LANG-1139: Add replace by regular expression methods in StringUtils.
+o LANG-1171: Add compare methods in StringUtils.
+o LANG-1174: Add sugar to RandomUtils. Thanks to Punkratz312.
+o LANG-1154: FastDateFormat APIs that use a StringBuilder. Thanks to
+ Gary Gregory.
+o LANG-1149: Ability to throw checked exceptions without declaring them. Thanks
+ to Gregory Zak.
+o LANG-1153: Implement ParsePosition api for FastDateParser.
+o LANG-1137: Add check for duplicate event listener in EventListenerSupport.
+ Thanks to Matthew Aguirre.
+o LANG-1135: Add method containsAllWords to WordUtils. Thanks to
+ Eduardo Martins.
+o LANG-1132: ReflectionToStringBuilder doesn't throw IllegalArgumentException
+ when the constructor's object param is null. Thanks to Jack Tan.
+o LANG-701: StringUtils join with var args. Thanks to James Sawle.
+o LANG-1105: Add ThreadUtils - A utility class which provides helper methods
+ related to java.lang.Thread Issue: LANG-1105. Thanks to
+ Hendrik Saly.
+o LANG-1031: Add annotations to exclude fields from ReflectionEqualsBuilder,
+ ReflectionToStringBuilder and ReflectionHashCodeBuilder. Thanks
+ to Felipe Adorno.
+o LANG-1127: Use JUnit rules to set and reset the default Locale and TimeZone.
+o LANG-1119: Add rotate(string, int) method to StringUtils. Thanks to
+ Loic Guibert.
+o LANG-1099: Add swap and shift operations for arrays to ArrayUtils. Thanks to
+ Adrian Ber.
+o LANG-1050: Change nullToEmpty methods to generics. Thanks to James Sawle.
+o LANG-1074: Add a method to ArrayUtils for removing all occurrences of a given
+ element Issue: LANG-1074. Thanks to Haiyang Li.
+
+FIXED BUGS
+============
+
+o LANG-1261: ArrayUtils.contains returns false for instances of subtypes.
+o LANG-1252: Rename NumberUtils.isNumber, isCreatable to better reflect
+ createNumber. Also, accommodated for "+" symbol as prefix in
+ isCreatable and isNumber. Thanks to Rob Tompkins.
+o LANG-1230: Remove unnecessary synchronization from registry lookup in
+ EqualsBuilder and HashCodeBuilder. Thanks to Philippe Marschall.
+o LANG-1214: Handle "void" in ClassUtils.getClass(). Thanks to Henry Tung.
+o LANG-1250: SerializationUtils#deserialize has unnecessary code and a comment
+ for that. Thanks to Glease Wang.
+o LANG-1190: TypeUtils.isAssignable throws NullPointerException when fromType
+ has type variables and toType generic superclass specifies type
+ variable. Thanks to Pascal Schumacher.
+o LANG-1226: StringUtils#normalizeSpace does not trim the string anymore.
+ Thanks to Pascal Schumacher.
+o LANG-1251: SerializationUtils.ClassLoaderAwareObjectInputStream should use
+ static initializer to initialize primitiveTypes map. Thanks to
+ Takuya Ueshin.
+o LANG-1248: FastDatePrinter Memory allocation regression. Thanks to
+ Benoit Wiart.
+o LANG-1018: Fix precision loss on NumberUtils.createNumber(String). Thanks to
+ Nick Manley.
+o LANG-1199: Fix implementation of StringUtils.getJaroWinklerDistance(). Thanks
+ to M. Steiger.
+o LANG-1244: Fix dead links in StringUtils.getLevenshteinDistance() javadoc.
+ Thanks to jjbankert.
+o LANG-1242: "\u2284":"?" mapping missing from
+ EntityArrays#HTML40_EXTENDED_ESCAPE. Thanks to Neal Stewart.
+o LANG-901: StringUtils#startsWithAny/endsWithAny is case sensitive -
+ documented as case insensitive. Thanks to Matthew Bartenschlag.
+o LANG-1232: DiffBuilder: Add null check on fieldName when appending Object or
+ Object[]. Thanks to Nick Manley.
+o LANG-1178: ArrayUtils.removeAll(Object array, int... indices) should do the
+ clone, not its callers. Thanks to Henri Yandell.
+o LANG-1120: StringUtils.stripAccents should remove accents from "?" and "?".
+ Thanks to kaching88.
+o LANG-1205: NumberUtils.createNumber() behaves inconsistently with
+ NumberUtils.isNumber(). Thanks to pbrose.
+o LANG-1222: Fix for incorrect comment on StringUtils.containsIgnoreCase
+ method. Thanks to Adam J.
+o LANG-1221: Fix typo on appendIfMissing javadoc. Thanks to Pierre Templier.
+o LANG-1202: parseDateStrictly doesn't pass specified locale. Thanks to
+ Markus Jelsma.
+o LANG-1219: FastDateFormat doesn't respect summer daylight in some localized
+ strings. Thanks to Jarek.
+o LANG-1175: Remove Ant-based build.
+o LANG-1194: Limit max heap memory for consistent Travis CI build.
+o LANG-1186: Fix NullPointerException in FastDateParser$TimeZoneStrategy.
+ Thanks to NickManley.
+o LANG-1193: ordinalIndexOf("abc", "ab", 1) gives incorrect answer of -1
+ (correct answer should be 0); revert fix for LANG-1077. Thanks to
+ Qin Li.
+o LANG-1002: Several predefined ISO FastDateFormats in DateFormatUtils are
+ incorrect. Thanks to Michael Osipov.
+o LANG-1152: StringIndexOutOfBoundsException or field over-write for large year
+ fields in FastDateParser. Thanks to Pas Filip.
+o LANG-1141: StrLookup.systemPropertiesLookup() no longer reacts on changes on
+ system properties.
+o LANG-1147: EnumUtils *BitVector issue with more than 32 values Enum. Thanks
+ to Loic Guibert.
+o LANG-1059: Capitalize javadoc is incorrect. Thanks to Colin Casey.
+o LANG-1122: Inconsistent behavior of swap for malformed inputs. Thanks to
+ Adrian Ber.
+o LANG-1130: Fix critical issues reported by SonarQube.
+o LANG-1131: StrBuilder.equals(StrBuilder) doesn't check for null inputs.
+o LANG-1128: JsonToStringStyle doesn't handle chars and objects correctly.
+ Thanks to Jack Tan.
+o LANG-1126: DateFormatUtilsTest.testSMTP depends on the default Locale.
+o LANG-1123: Unit test FastDatePrinterTimeZonesTest needs a timezone set.
+ Thanks to Christian P. Momon.
+o LANG-916: DateFormatUtils.format does not correctly change Calendar
+ TimeZone in certain situations. Thanks to Christian P. Momon.
+o LANG-1116: DateUtilsTest.testLang530 fails for some timezones. Thanks to
+ Aaron Sheldon.
+o LANG-1114: TypeUtils.ParameterizedType#equals doesn't work with wildcard
+ types. Thanks to Andy Coates.
+o LANG-1118: StringUtils.repeat('z', -1) throws NegativeArraySizeException.
+ Thanks to Loic Guibert.
+o LANG-1111: Fix FindBugs warnings in DurationFormatUtils.
+o LANG-1162: StringUtils#equals fails with Index OOBE on non-Strings with
+ identical leading prefix..
+o LANG-1163: There are no tests for CharSequenceUtils.regionMatches.
+o LANG-1200: Fix Javadoc of StringUtils.ordinalIndexOf. Thanks to BarkZhang.
+o LANG-1191: Incorrect Javadoc
+ StringUtils.containsAny(CharSequence, CharSequence...). Thanks to
+ qed, Brent Worden and Gary Gregory.
+
+CHANGES
+=========
+o LANG-1197: Prepare Java 9 detection.
+o LANG-1262: CompareToBuilder.append(Object, Object, Comparator) method is too
+ big to be inlined. Thanks to Ruslan Cheremin.
+o LANG-1259: Javadoc for ArrayUtils.isNotEmpty() is slightly misleading. Thanks
+ to Dominik Stadler.
+o LANG-1247: FastDatePrinter generates extra Date objects. Thanks to
+ Benoit Wiart.
+o LANG-1229: HashCodeBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1243: Simplify ArrayUtils removeElements by using new decrementAndGet()
+ method.
+o LANG-1240: Optimize BitField constructor implementation. Thanks to zhanhb.
+o LANG-1206: Improve CharSetUtils.squeeze() performance. Thanks to
+ Mohammed Alfallaj.
+o LANG-1176: Improve ArrayUtils removeElements time complexity to O(n). Thanks
+ to Jeffery Yuan.
+o LANG-1234: getLevenshteinDistance with a threshold: optimize implementation
+ if the strings lengths differ more than the threshold. Thanks to
+ Jonatan Jönsson.
+o LANG-1151: Performance improvements for NumberUtils.isParsable. Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-1218: EqualsBuilder.append(Object,Object) is too big to be inlined,
+ which prevents whole builder to be scalarized. Thanks to
+ Ruslan Cheremin.
+o LANG-1210: StringUtils#startsWithAny has error in Javadoc. Thanks to
+ Matthias Niehoff.
+o LANG-1208: StrSubstitutor can preserve escapes. Thanks to Samuel Karp.
+o LANG-1182: Clarify Javadoc of StringUtils.containsAny(). Thanks to
+ Larry West and Pascal Schumacher.
+o LANG-1183: Making replacePattern/removePattern methods null safe in
+ StringUtils.
+o LANG-1057: Replace StringBuilder with String concatenation for better
+ optimization. Thanks to Otávio Santana.
+o LANG-1075: Deprecate SystemUtils.FILE_SEPARATOR and
+ SystemUtils.PATH_SEPARATOR.
+o LANG-979: TypeUtils.parameterizeWithOwner - wrong format descriptor for
+ "invalid number of type parameters". Thanks to Bruno P. Kinoshita.
+o LANG-1112: MultilineRecursiveToStringStyle largely unusable due to being
+ package-private.
+o LANG-1058: StringUtils.uncapitalize performance improvement. Thanks to
+ Leo Wang.
+o LANG-1069: CharSet.getInstance documentation does not clearly explain how
+ to include negation character in set. Thanks to Arno Noordover.
+o LANG-1107: Fix parsing edge cases in FastDateParser.
+o LANG-1273: Added new property IS_OS_MAC_OSX_EL_CAPITAN in SystemUtils. Thanks
+ to Jake Wang.
+
+=============================================================================
+
+ Release Notes for version 3.4
+
+
+COMPATIBILITY
+=============
+
+Commons Lang 3.4 is fully binary compatible to the last release and can
+therefore be used as a drop in replacement for 3.3.2. Note that the value of
+org.apache.commons.lang3.time.DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN
+has changed, which may affect clients using the constant. Furthermore the
+constant is used internally in
+o DurationFormatUtils.formatDurationISO(long)
+o DurationFormatUtils.formatPeriodISO(long, long)
+
+For more information see https://issues.apache.org/jira/browse/LANG-1000.
+
+NEW FEATURES
+==============
+
+o LANG-821: Support OS X versions in SystemUtils. Thanks to Timo Kockert.
+o LANG-1103: Add SystemUtils.IS_JAVA_1_9
+o LANG-1093: Add ClassUtils.getAbbreviatedName(). Thanks to Fabian Lange.
+o LANG-1082: Add option to disable the "objectsTriviallyEqual" test in
+ DiffBuilder. Thanks to Jonathan Baker.
+o LANG-1015: Add JsonToStringStyle implementation to ToStringStyle. Thanks to
+ Thiago Andrade.
+o LANG-1080: Add NoClassNameToStringStyle implementation of ToStringStyle.
+ Thanks to Innokenty Shuvalov.
+o LANG-883: Add StringUtils.containsAny(CharSequence, CharSequence...) method.
+ Thanks to Daniel Stewart.
+o LANG-1052: Multiline recursive to string style. Thanks to Jan Matèrne.
+o LANG-536: Add isSorted() to ArrayUtils. Thanks to James Sawle.
+o LANG-1033: Add StringUtils.countMatches(CharSequence, char)
+o LANG-1021: Provide methods to retrieve all fields/methods annotated with a
+ specific type. Thanks to Alexander Müller.
+o LANG-1016: NumberUtils#isParsable method(s). Thanks to
+ Juan Pablo Santos Rodríguez.
+o LANG-999: Add fuzzy String matching logic to StringUtils. Thanks to
+ Ben Ripkens.
+o LANG-994: Add zero copy read method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-993: Add zero copy write method to StrBuilder. Thanks to
+ Mikhail Mazursky.
+o LANG-1044: Add method MethodUtils.invokeExactMethod(Object, String)
+o LANG-1045: Add method MethodUtils.invokeMethod(Object, String)
+
+FIXED BUGS
+============
+
+o LANG-794: SystemUtils.IS_OS_WINDOWS_2008, VISTA are incorrect. Thanks to
+ Timo Kockert.
+o LANG-1104: Parse test fails for TimeZone America/Sao_Paulo
+o LANG-948: Exception while using ExtendedMessageFormat and escaping braces.
+ Thanks to Andrey Khobnya.
+o LANG-1092: Wrong formatting of time zones with daylight saving time in
+ FastDatePrinter
+o LANG-1090: FastDateParser does not set error indication in ParsePosition
+o LANG-1089: FastDateParser does not handle excess hours as per
+ SimpleDateFormat
+o LANG-1061: FastDateParser error - timezones not handled correctly. Thanks to
+ dmeneses.
+o LANG-1087: NumberUtils#createNumber() returns positive BigDecimal when
+ negative Float is expected. Thanks to Renat Zhilkibaev.
+o LANG-1081: DiffBuilder.append(String, Object left, Object right) does not do
+ a left.equals(right) check. Thanks to Jonathan Baker.
+o LANG-1055: StrSubstitutor.replaceSystemProperties does not work consistently.
+ Thanks to Jonathan Baker.
+o LANG-1083: Add (T) casts to get unit tests to pass in old JDK. Thanks to
+ Jonathan Baker.
+o LANG-1073: Read wrong component type of array in add in ArrayUtils.
+ Thanks to haiyang li.
+o LANG-1077: StringUtils.ordinalIndexOf("aaaaaa", "aa", 2) != 3 in StringUtils.
+ Thanks to haiyang li.
+o LANG-1072: Duplicated "0x" check in createBigInteger in NumberUtils. Thanks
+ to haiyang li.
+o LANG-1064: StringUtils.abbreviate description doesn't agree with the
+ examples. Thanks to B.J. Herbison.
+o LANG-1041: Fix MethodUtilsTest so it does not depend on JDK method ordering.
+ Thanks to Alexandre Bartel.
+o LANG-1000: ParseException when trying to parse UTC dates with Z as zone
+ designator using DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT
+o LANG-1035: Javadoc for EqualsBuilder.reflectionEquals() is unclear
+o LANG-1001: ISO 8601 misspelled throughout the Javadocs. Thanks to
+ Michael Osipov.
+o LANG-1088: FastDateParser should be case insensitive
+o LANG-995: Fix bug with stripping spaces on last line in WordUtils.wrap().
+ Thanks to Andrey Khobnya.
+
+CHANGES
+=========
+
+o LANG-1102: Make logic for comparing OS versions in SystemUtils smarter
+o LANG-1091: Shutdown thread pools in test cases. Thanks to Fabian Lange.
+o LANG-1101: FastDateParser and FastDatePrinter support 'X' format
+o LANG-1100: Avoid memory allocation when using date formatting to StringBuffer.
+ Thanks to mbracher.
+o LANG-935: Possible performance improvement on string escape functions.
+ Thanks to Fabian Lange, Thomas Neidhart.
+o LANG-1098: Avoid String allocation in StrBuilder.append(CharSequence). Thanks
+ to Mikhail Mazurskiy, Fabian Lange.
+o LANG-1098: Update maven-checkstyle-plugin to 2.14. Thanks to Micha? Kordas.
+o LANG-1097: Update org.easymock:easymock to 3.3.1. Thanks to Micha? Kordas.
+o LANG-1096: Update maven-pmd-plugin to 3.4. Thanks to Micha? Kordas.
+o LANG-1095: Update maven-antrun-plugin to 1.8. Thanks to Micha? Kordas.
+o LANG-877: Performance improvements for StringEscapeUtils. Thanks to
+ Fabian Lange.
+o LANG-1071: Fix wrong examples in Javadoc of
+ StringUtils.replaceEachRepeatedly(...),
+ StringUtils.replaceEach(...) Thanks to Arno Noordover.
+o LANG-827: CompareToBuilder's doc doesn't specify precedence of fields it
+ uses in performing comparisons
+o LANG-1020: Improve performance of normalize space. Thanks to Libor Ondrusek.
+o LANG-1027: org.apache.commons.lang3.SystemUtils#isJavaVersionAtLeast should
+ return true by default
+o LANG-1026: Bring static method references in StringUtils to consistent style.
+ Thanks to Alex Yursha.
+o LANG-1017: Use non-ASCII digits in Javadoc examples for
+ StringUtils.isNumeric. Thanks to Christoph Schneegans.
+o LANG-1008: Change min/max methods in NumberUtils/IEEE754rUtils from array
+ input parameters to varargs. Thanks to Thiago Andrade.
+o LANG-1006: Add wrap (with String or char) to StringUtils. Thanks to
+ Thiago Andrade.
+o LANG-1005: Extend DurationFormatUtils#formatDurationISO default pattern to
+ match #formatDurationHMS. Thanks to Michael Osipov.
+o LANG-1007: Fixing NumberUtils JAVADoc comments for max methods. Thanks to
+ Thiago Andrade.
+o LANG-731: Better Javadoc for BitField class
+o LANG-1004: DurationFormatUtils#formatDurationHMS implementation does not
+ correspond to Javadoc and vice versa. Thanks to Michael Osipov.
+o LANG-1003: DurationFormatUtils are not able to handle negative
+ durations/periods
+o LANG-998: Javadoc is not clear on preferred pattern to instantiate
+ FastDateParser / FastDatePrinter
+
+=============================================================================
+
+ Release Notes for version 3.3.2
+
+NEW FEATURES
+==============
+
+o LANG-989: Add org.apache.commons.lang3.SystemUtils.IS_JAVA_1_8
+
+FIXED BUGS
+============
+
+o LANG-992: NumberUtils#isNumber() returns false for "0.0", "0.4790", et al
+
+=============================================================================
+
+ Release Notes for version 3.3.1
+
+FIXED BUGS
+============
+
+o LANG-987: DateUtils.getFragmentInDays(Date, Calendar.MONTH) returns wrong
+ days
+o LANG-983: DurationFormatUtils does not describe format string fully
+o LANG-981: DurationFormatUtils#lexx does not detect unmatched quote char
+o LANG-984: DurationFormatUtils does not handle large durations correctly
+o LANG-982: DurationFormatUtils.formatDuration(61999, "s.SSSS") - ms field
+ size should be 4 digits
+o LANG-978: Failing tests with Java 8 b128
+
+=============================================================================
+
+ Release Notes for version 3.3
+
+NEW FEATURES
+==============
+
+o LANG-955: Add methods for removing all invalid characters according to
+ XML 1.0 and XML 1.1 in an input string to StringEscapeUtils.
+ Thanks to Adam Hooper.
+o LANG-970: Add APIs MutableBoolean setTrue() and setFalse()
+o LANG-962: Add SerializationUtils.roundtrip(T extends Serializable) to
+ serialize then deserialize
+o LANG-637: There should be a DifferenceBuilder with a
+ ReflectionDifferenceBuilder implementation
+o LANG-944: Add the Jaro-Winkler string distance algorithm to StringUtils.
+ Thanks to Rekha Joshi.
+o LANG-417: New class ClassPathUtils with methods for turning FQN into
+ resource path
+o LANG-834: Validate: add inclusiveBetween and exclusiveBetween overloads
+ for primitive types
+o LANG-900: New RandomUtils class. Thanks to Duncan Jones.
+o LANG-966: Add IBM OS/400 detection
+
+FIXED BUGS
+============
+
+o LANG-621: ReflectionToStringBuilder.toString does not debug 3rd party object
+ fields within 3rd party object. Thanks to Philip Hodges,
+ Thomas Neidhart.
+o LANG-977: NumericEntityEscaper incorrectly encodes supplementary characters.
+ Thanks to Chris Karcher.
+o LANG-973: Make some private fields final
+o LANG-971: NumberUtils#isNumber(String) fails to reject invalid Octal numbers
+o LANG-972: NumberUtils#isNumber does not allow for hex 0XABCD
+o LANG-969: StringUtils.toEncodedString(byte[], Charset) needlessly throws
+ UnsupportedEncodingException. Thanks to Matt Bishop.
+o LANG-946: ConstantInitializerTest fails when building with IBM JDK 7
+o LANG-954: uncaught PatternSyntaxException in FastDateFormat on Android.
+ Thanks to Michael Keppler.
+o LANG-936: StringUtils.getLevenshteinDistance with too big of a threshold
+ returns wrong result. Thanks to Yaniv Kunda, Eli Lindsey.
+o LANG-943: Test DurationFormatUtilsTest.testEdgeDuration fails in
+ JDK 1.6, 1.7 and 1.8, BRST time zone
+o LANG-613: ConstructorUtils.getAccessibleConstructor() Does Not Check the
+ Accessibility of Enclosing Classes
+o LANG-951: Fragments are wrong by 1 day when using fragment YEAR or MONTH.
+ Thanks to Sebastian Götz.
+o LANG-950: FastDateParser does not handle two digit year parsing like
+ SimpleDateFormat
+o LANG-949: FastDateParserTest.testParses does not test FastDateParser
+o LANG-915: Wrong locale handling in LocaleUtils.toLocale().
+ Thanks to Sergio Fernández.
+
+CHANGES
+=========
+
+o LANG-961: org.apache.commons.lang3.reflect.FieldUtils.removeFinalModifier(Field)
+ does not clean up after itself
+o LANG-958: FastDateParser javadoc incorrectly states that SimpleDateFormat
+ is used internally
+o LANG-956: Improve Javadoc of WordUtils.wrap methods
+o LANG-939: Move Documentation from user guide to package-info files
+o LANG-953: Convert package.html files to package-info.java files
+o LANG-940: Fix deprecation warnings
+o LANG-819: EnumUtils.generateBitVector needs a "? extends"
+
+=============================================================================
+
+ Release Notes for version 3.2.1
+
+BUG FIXES
+===========
+
+o LANG-937: Fix missing Hamcrest dependency in Ant Build
+o LANG-941: Test failure in LocaleUtilsTest when building with JDK 8
+o LANG-942: Test failure in FastDateParserTest and FastDateFormat_ParserTest
+ when building with JDK8. Thanks to Bruno P. Kinoshita,
+ Henri Yandell.
+o LANG-938: Build fails with test failures when building with JDK 8
+
+=============================================================================
+
+ Release Notes for version 3.2
+
+COMPATIBILITY WITH 3.1
+========================
+
+This release introduces backwards incompatible changes in
+org.apache.commons.lang3.time.FastDateFormat:
+o Method 'protected java.util.List parsePattern()' has been removed
+o Method 'protected java.lang.String parseToken(java.lang.String, int[])' has
+ been removed
+o Method 'protected org.apache.commons.lang3.time.FastDateFormat$NumberRule
+ selectNumberRule(int, int)' has been removed
+
+These changes were the result of [LANG-462]. It is assumed that this change
+will not break clients as Charles Honton pointed out on 25/Jan/12:
+"
+ 1. Methods "FastDateFormat$NumberRule selectNumberRule(int, int)" and
+ "List<Rule> parsePattern()" couldn't have been overridden because
+ NumberRule and Rule were private to FastDateFormat.
+ 2. Due to the factory pattern used, it's unlikely other two methods would have
+ been overridden.
+ 3. The four methods are highly implementation specific. I consider it a
+ mistake that the methods were exposed.
+"
+For more information see https://issues.apache.org/jira/browse/LANG-462.
+
+NEW FEATURES
+==============
+
+o LANG-934: Add removeFinalModifier to FieldUtils
+o LANG-863: Method returns number of inheritance hops between parent and
+ subclass. Thanks to Daneel S. Yaitskov.
+o LANG-774: Added isStarted, isSuspended and isStopped to StopWatch.
+ Thanks to Erhan Bagdemir.
+o LANG-848: Added StringUtils.isBlank/isEmpty CharSequence... methods.
+ Thanks to Alexander Muthmann.
+o LANG-926: Added ArrayUtils.reverse(array, from, to) methods.
+o LANG-795: StringUtils.toString(byte[], String) deprecated in favour of a new
+ StringUtils.toString(byte[], CharSet). Thanks to Aaron Digulla.
+o LANG-893: StrSubstitutor now supports default values for variables.
+ Thanks to Woonsan Ko.
+o LANG-913: Adding .gitignore to commons-lang. Thanks to Allon Mureinik.
+o LANG-837: Add ObjectUtils.toIdentityString methods that support
+ StringBuilder, StrBuilder, and Appendable.
+o LANG-886: Added CharSetUtils.containsAny(String, String).
+o LANG-797: Added escape/unescapeJson to StringEscapeUtils.
+o LANG-875: Added appendIfMissing and prependIfMissing methods to StringUtils.
+o LANG-870: Add StringUtils.LF and StringUtils.CR values.
+o LANG-873: Add FieldUtils getAllFields() to return all the fields defined in
+ the given class and super classes.
+o LANG-835: StrBuilder should support StringBuilder as an input parameter.
+o LANG-857: StringIndexOutOfBoundsException in CharSequenceTranslator.
+o LANG-856: Code refactoring in NumberUtils.
+o LANG-855: NumberUtils#createBigInteger does not allow for hex and octal
+ numbers.
+o LANG-854: NumberUtils#createNumber - does not allow for hex numbers to be
+ larger than Long.
+o LANG-853: StringUtils join APIs for primitives.
+o LANG-841: Add StringUtils API to call String.replaceAll in DOTALL a.k.a.
+ single-line mode.
+o LANG-825: Create StrBuilder APIs similar to
+ String.format(String, Object...).
+o LANG-675: Add Triple class (ternary version of Pair).
+o LANG-462: FastDateFormat supports parse methods.
+
+BUG FIXES
+===========
+
+o LANG-932: Spelling fixes. Thanks to Ville Skyttä.
+o LANG-929: OctalUnescaper tried to parse all of \279.
+o LANG-928: OctalUnescaper had bugs when parsing octals starting with a zero.
+o LANG-905: EqualsBuilder returned true when comparing arrays, even when the
+ elements are different.
+o LANG-917: Fixed exception when combining custom and choice format in
+ ExtendedMessageFormat. Thanks to Arne Burmeister.
+o LANG-902: RandomStringUtils.random javadoc was incorrectly promising letters
+ and numbers would, as opposed to may, appear Issue:. Thanks to
+ Andrzej Winnicki.
+o LANG-921: BooleanUtils.xor(boolean...) produces wrong results.
+o LANG-896: BooleanUtils.toBoolean(String str) javadoc is not updated. Thanks
+ to Mark Bryan Yu.
+o LANG-879: LocaleUtils test fails with new Locale "ja_JP_JP_#u-ca-japanese"
+ of JDK7.
+o LANG-836: StrSubstitutor does not support StringBuilder or CharSequence.
+ Thanks to Arnaud Brunet.
+o LANG-693: Method createNumber from NumberUtils doesn't work for floating
+ point numbers other than Float Issue: LANG-693. Thanks to
+ Calvin Echols.
+o LANG-887: FastDateFormat does not use the locale specific cache correctly.
+o LANG-754: ClassUtils.getShortName(String) will now only do a reverse lookup
+ for array types.
+o LANG-881: NumberUtils.createNumber() Javadoc says it does not work for octal
+ numbers.
+o LANG-865: LocaleUtils.toLocale does not parse strings starting with an
+ underscore.
+o LANG-858: StringEscapeUtils.escapeJava() and escapeEcmaScript() do not
+ output the escaped surrogate pairs that are Java parsable.
+o LANG-849: FastDateFormat and FastDatePrinter generates Date objects
+ wastefully.
+o LANG-845: Spelling fixes.
+o LANG-844: Fix examples contained in javadoc of StringUtils.center methods.
+o LANG-832: FastDateParser does not handle unterminated quotes correctly.
+o LANG-831: FastDateParser does not handle white-space properly.
+o LANG-830: FastDateParser could use \Q \E to quote regexes.
+o LANG-828: FastDateParser does not handle non-Gregorian calendars properly.
+o LANG-826: FastDateParser does not handle non-ASCII digits correctly.
+o LANG-822: NumberUtils#createNumber - bad behavior for leading "--".
+o LANG-818: FastDateFormat's "z" pattern does not respect timezone of Calendar
+ instances passed to format().
+o LANG-817: Add org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS_8.
+o LANG-813: StringUtils.equalsIgnoreCase doesn't check string reference
+ equality.
+o LANG-810: StringUtils.join() endIndex, bugged for loop.
+o LANG-807: RandomStringUtils throws confusing IAE when end <= start.
+o LANG-805: RandomStringUtils.random(count, 0, 0, false, false, universe,
+ random) always throws java.lang.ArrayIndexOutOfBoundsException.
+o LANG-802: LocaleUtils - unnecessary recursive call in SyncAvoid class.
+o LANG-800: Javadoc bug in DateUtils#ceiling for Calendar and Object versions.
+o LANG-788: SerializationUtils throws ClassNotFoundException when cloning
+ primitive classes.
+o LANG-786: StringUtils equals() relies on undefined behavior.
+o LANG-783: Documentation bug: StringUtils.split.
+o LANG-777: jar contains velocity template of release notes.
+o LANG-776: TypeUtilsTest contains incorrect type assignability assertion.
+o LANG-775: TypeUtils.getTypeArguments() misses type arguments for
+ partially-assigned classes.
+o LANG-773: ImmutablePair doc contains nonsense text.
+o LANG-772: ClassUtils.PACKAGE_SEPARATOR Javadoc contains garbage text.
+o LANG-765: EventListenerSupport.ProxyInvocationHandler no longer defines
+ serialVersionUID.
+o LANG-764: StrBuilder is now serializable.
+o LANG-761: Fix Javadoc Ant warnings.
+o LANG-747: NumberUtils does not handle Long Hex numbers.
+o LANG-743: Javadoc bug in static inner class DateIterator.
+
+CHANGES
+=========
+
+o LANG-931: Misleading Javadoc comment in StrBuilderReader class. Thanks
+ to Christoph Schneegans.
+o LANG-910: StringUtils.normalizeSpace now handles non-breaking spaces
+ (Unicode 00A0). Thanks to Timur Yarosh.
+o LANG-804: Redundant check for zero in HashCodeBuilder ctor. Thanks to
+ Allon Mureinik.
+o LANG-884: Simplify FastDateFormat; eliminate boxing.
+o LANG-882: LookupTranslator now works with implementations of CharSequence
+ other than String.
+o LANG-846: Provide CharSequenceUtils.regionMatches with a proper green
+ implementation instead of inefficiently converting to Strings.
+o LANG-839: ArrayUtils removeElements methods use unnecessary HashSet.
+o LANG-838: ArrayUtils removeElements methods clone temporary index arrays
+ unnecessarily.
+o LANG-799: DateUtils#parseDate uses default locale; add Locale support.
+o LANG-798: Use generics in SerializationUtils.
+
+CHANGES WITHOUT TICKET
+========================
+
+o Fixed URLs in javadoc to point to new oracle.com pages
+
+=============================================================================
+
+ Release Notes for version 3.1
+
+NEW FEATURES
+==============
+
+o LANG-801: Add Conversion utility to convert between data types on byte level
+o LANG-760: Add API StringUtils.toString(byte[] input, String charsetName)
+o LANG-756: Add APIs ClassUtils.isPrimitiveWrapper(Class<?>) and
+ isPrimitiveOrWrapper(Class<?>)
+o LANG-695: SystemUtils.IS_OS_UNIX doesn't recognize FreeBSD as a Unix system
+
+BUG FIXES
+===========
+
+o LANG-749: Incorrect Bundle-SymbolicName in Manifest
+o LANG-746: NumberUtils does not handle upper-case hex: 0X and -0X
+o LANG-744: StringUtils throws java.security.AccessControlException on Google
+ App Engine
+o LANG-741: Ant build has wrong component.name
+o LANG-698: Document that the Mutable numbers don't work as expected with
+ String.format
+
+CHANGES
+=========
+
+o LANG-758: Add an example with whitespace in StringUtils.defaultIfEmpty
+o LANG-752: Fix createLong() so it behaves like createInteger()
+o LANG-751: Include the actual type in the Validate.isInstance and
+ isAssignableFrom exception messages
+o LANG-748: Deprecating chomp(String, String)
+o LANG-736: CharUtils static final array CHAR_STRING is not needed to compute
+ CHAR_STRING_ARRAY
+
+=============================================================================
+
+ Release Notes for version 3.0
+
+ADDITIONS
+===========
+
+o LANG-276: MutableBigDecimal and MutableBigInteger.
+o LANG-285: Wish : method unaccent.
+o LANG-358: ObjectUtils.coalesce.
+o LANG-386: LeftOf/RightOfNumber in Range convenience methods necessary.
+o LANG-435: Add ClassUtils.isAssignable() variants with autoboxing.
+o LANG-444: StringUtils.emptyToNull.
+o LANG-482: Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+o LANG-482: StrSubstitutor now supports substitution in variable names.
+o LANG-496: A generic implementation of the Lazy initialization pattern.
+o LANG-497: Addition of ContextedException and ContextedRuntimeException.
+o LANG-498: Add StringEscapeUtils.escapeText() methods.
+o LANG-499: Add support for the handling of ExecutionExceptions.
+o LANG-501: Add support for background initialization.
+o LANG-529: Add a concurrent package.
+o LANG-533: Validate: support for validating blank strings.
+o LANG-537: Add ArrayUtils.toArray to create generic arrays.
+o LANG-545: Add ability to create a Future for a constant.
+o LANG-546: Add methods to Validate to check whether the index is valid for
+ the array/list/string.
+o LANG-553: Add TypeUtils class to provide utility code for working with generic
+ types.
+o LANG-559: Added isAssignableFrom and isInstanceOf validation methods.
+o LANG-559: Added validState validation method.
+o LANG-560: New TimedSemaphore class.
+o LANG-582: Provide an implementation of the ThreadFactory interface.
+o LANG-588: Create a basic Pair<L, R> class.
+o LANG-594: DateUtils equal & compare functions up to most significant field.
+o LANG-601: Add Builder Interface / Update Builders to Implement It.
+o LANG-609: Support lazy initialization using atomic variables
+o LANG-610: Extend exception handling in ConcurrentUtils to runtime exceptions.
+o LANG-614: StringUtils.endsWithAny method
+o LANG-640: Add normalizeSpace to StringUtils
+o LANG-644: Provide documentation about the new concurrent package
+o LANG-649: BooleanUtils.toBooleanObject to support single character input
+o LANG-651: Add AnnotationUtils
+o LANG-653: Provide a very basic ConcurrentInitializer implementation
+o LANG-655: Add StringUtils.defaultIfBlank()
+o LANG-667: Add a Null-safe compare() method to ObjectUtils
+o LANG-676: Documented potential NPE if auto-boxing occurs for some BooleanUtils
+ methods
+o LANG-678: Add support for ConcurrentMap.putIfAbsent()
+o LANG-692: Add hashCodeMulti varargs method
+o LANG-697: Add FormattableUtils class
+o LANG-684: Levenshtein Distance Within a Given Threshold
+
+REMOVALS
+==========
+
+o LANG-438: Remove @deprecateds.
+o LANG-492: Remove code handled now by the JDK.
+o LANG-493: Remove code that does not hold enough value to remain.
+o LANG-590: Remove JDK 1.2/1.3 bug handling in
+ StringUtils.indexOf(String, String, int).
+o LANG-673: WordUtils.abbreviate() removed
+o LANG-691: Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS
+==============
+
+o LANG-290: EnumUtils for JDK 5.0.
+o LANG-336: Finally start using generics.
+o LANG-355: StrBuilder should implement CharSequence and Appendable.
+o LANG-396: Investigate for vararg usages.
+o LANG-424: Improve Javadoc for StringUtils class.
+o LANG-458: Refactor Validate.java to eliminate code redundancy.
+o LANG-479: Document where in SVN trunk is.
+o LANG-504: bring ArrayUtils.isEmpty to the generics world.
+o LANG-505: Rewrite StringEscapeUtils.
+o LANG-507: StringEscapeUtils.unescapeJava should support \u+ notation.
+o LANG-510: Convert StringUtils API to take CharSequence.
+o LANG-513: Better EnumUtils.
+o LANG-528: Mutable classes should implement an appropriately typed Mutable
+ interface.
+o LANG-539: Compile commons.lang for CDC 1.1/Foundation 1.1.
+o LANG-540: Make NumericEntityEscaper immutable.
+o LANG-541: Replace StringBuffer with StringBuilder.
+o LANG-548: Use Iterable on API instead of Collection.
+o LANG-551: Replace Range classes with generic version.
+o LANG-562: Change Maven groupId.
+o LANG-563: Change Java package name.
+o LANG-570: Do the test cases really still require main() and suite() methods?
+o LANG-579: Add new Validate methods.
+o LANG-599: ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+o LANG-605: DefaultExceptionContext overwrites values in recursive situations.
+o LANG-668: Change ObjectUtils min() & max() functions to use varargs rather
+ than just two parameters
+o LANG-681: Push down WordUtils to "text" sub-package.
+o LANG-711: Add includeantruntime=false to javac targets to quell warnings in
+ ant 1.8.1 and better (and modest performance gain).
+o LANG-713: Increase test coverage of FieldUtils read methods and tweak
+ javadoc.
+o LANG-718: build.xml Java 1.5+ updates.
+
+BUG FIXES
+===========
+
+o LANG-11: Depend on JDK 1.5+.
+o LANG-302: StrBuilder does not implement clone().
+o LANG-339: StringEscapeUtils.escapeHtml() escapes multibyte characters like
+ Chinese, Japanese, etc.
+o LANG-369: ExceptionUtils not thread-safe.
+o LANG-418: Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+o LANG-428: StringUtils.isAlpha, isAlphanumeric and isNumeric now return false
+ for ""
+o LANG-439: StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+o LANG-448: Lower Ascii Characters don't get encoded by Entities.java.
+o LANG-468: JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+o LANG-474: Fixes for thread safety.
+o LANG-478: StopWatch does not resist to system time changes.
+o LANG-480: StringEscapeUtils.escapeHtml incorrectly converts unicode
+ characters above U+00FFFF into 2 characters.
+o LANG-481: Possible race-conditions in hashCode of the range classes.
+o LANG-564: Improve StrLookup API documentation.
+o LANG-568: @SuppressWarnings("unchecked") is used too generally.
+o LANG-571: ArrayUtils.add(T[: array, T element) can create unexpected
+ ClassCastException.
+o LANG-585: exception.DefaultExceptionContext.getFormattedExceptionMessage
+ catches Throwable.
+o LANG-596: StrSubstitutor should also handle the default properties of a
+ java.util.Properties class
+o LANG-600: Javadoc is incorrect for public static int
+ lastIndexOf(String str, String searchStr).
+o LANG-602: ContextedRuntimeException no longer an 'unchecked' exception.
+o LANG-606: EqualsBuilder causes StackOverflowException.
+o LANG-608: Some StringUtils methods should take an int character instead of
+ char to use String API features.
+o LANG-617: StringEscapeUtils.escapeXML() can't process UTF-16 supplementary
+ characters
+o LANG-624: SystemUtils.getJavaVersionAsFloat throws
+ StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+o LANG-629: Charset may not be threadsafe, because the HashSet is not synch.
+o LANG-638: NumberUtils createNumber throws a StringIndexOutOfBoundsException
+ when argument containing "e" and "E" is passed in
+o LANG-643: Javadoc StringUtils.left() claims to throw on negative len, but
+ doesn't
+o LANG-645: FastDateFormat.format() outputs incorrect week of year because
+ locale isn't respected
+o LANG-646: StringEscapeUtils.unescapeJava doesn't handle octal escapes and
+ Unicode with extra u
+o LANG-656: Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+o LANG-658: Some entities like &Ouml; are not matched properly against its
+ ISO8859-1 representation
+o LANG-659: EntityArrays typo: {"\u2122", "&minus;"}, // minus sign, U+2212
+ ISOtech
+o LANG-66: StringEscaper.escapeXml() escapes characters > 0x7f.
+o LANG-662: org.apache.commons.lang3.math.Fraction does not reduce
+ (Integer.MIN_VALUE, 2^k)
+o LANG-663: org.apache.commons.lang3.math.Fraction does not always succeed in
+ multiplyBy and divideBy
+o LANG-664: NumberUtils.isNumber(String) is not right when the String is
+ "1.1L"
+o LANG-672: Doc bug in DateUtils#ceiling
+o LANG-677: DateUtils.isSameLocalTime compares using 12 hour clock and not
+ 24 hour
+o LANG-685: EqualsBuilder synchronizes on HashCodeBuilder.
+o LANG-703: StringUtils.join throws NPE when toString returns null for one of
+ objects in collection
+o LANG-710: StringIndexOutOfBoundsException when calling unescapeHtml4("&#03")
+o LANG-714: StringUtils doc/comment spelling fixes.
+o LANG-715: CharSetUtils.squeeze() speedup.
+o LANG-716: swapCase and *capitalize speedups.
+
+
+Historical list of changes: https://commons.apache.org/lang/changes-report.html
+
+For complete information on Commons Lang, including instructions on how to
+submit bug reports, patches, or suggestions for improvement, see the
+Apache Commons Lang website:
+
+https://commons.apache.org/lang/
+
+Have fun!
+-Apache Commons Lang team
+
diff --git a/src/site/site.xml b/src/site/site.xml
new file mode 100644
index 000000000..a08e5f0ed
--- /dev/null
+++ b/src/site/site.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<project name="Lang">
+ <bannerRight>
+ <name>Commons Lang</name>
+ <src>/images/logo.png</src>
+ <href>/index.html</href>
+ </bannerRight>
+
+ <body>
+ <menu name="Lang">
+ <item name="Overview" href="/index.html" />
+ <item name="Download" href="/download_lang.cgi" />
+ <item name="Users guide" href="/userguide.html" />
+ <item name="Release History" href="/changes-report.html" />
+ <item name="Javadoc" href="/apidocs/index.html" />
+ <item name="Javadoc Archive" href="https://javadoc.io/doc/org.apache.commons/commons-lang3" />
+ </menu>
+
+ <menu name="Development">
+ <item name="Building" href="/building.html" />
+ <item name="Mailing Lists" href="/mail-lists.html" />
+ <item name="Issue Tracking" href="/issue-tracking.html" />
+ <item name="Proposal" href="/proposal.html" />
+ <item name="Developer guide" href="/developerguide.html" />
+ <item name="Source Repository" href="/scm.html" />
+ </menu>
+
+ </body>
+
+</project>
diff --git a/src/site/xdoc/article2_4.xml b/src/site/xdoc/article2_4.xml
new file mode 100644
index 000000000..996ef6bd6
--- /dev/null
+++ b/src/site/xdoc/article2_4.xml
@@ -0,0 +1,195 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>What's new in Commons Lang 2.4?</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="What's new in Commons Lang 2.4?">
+<p>Commons Lang 2.4 is out, and the obvious question is: <em>"So what? What's changed?"</em>.</p>
+<p>This article aims to briefly cover the changes and save you from having to dig through each JIRA
+issue to see what went on in the year of development between Lang 2.3 and 2.4.</p>
+<section name="Deprecations">
+<p>First, let us start with a couple of deprecations. As you can see in the release notes, we chose
+to deprecate the <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/ObjectUtils.html#appendIdentityToString(java.lang.StringBuffer,%20java.lang.Object)"><code>ObjectUtils.appendIdentityToString(StringBuffer, Object)</code></a> method as its
+null handling did not match its design (see <a href="https://issues.apache.org/jira/browse/LANG-360">LANG-360</a>
+for more details. Instead users should use <code>ObjectUtils.identityToString(StringBuffer, Object)</code>.</p>
+
+<p>We also deprecated <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/time/DateUtils.html#add(java.util.Date,%20int,%20int)"><code>DateUtils.add(java.util.Date, int, int)</code></a>. It should have been <code>private</code>
+from the beginning; please let us know if you actually use it.</p>
+</section>
+<section name="The build">
+<p>Before we move on, a quick note on the build: we built 2.4 using Maven 2 and Java 1.4. We also tested that the Ant build passed the tests
+successfully under Java 1.3, and that the classes compiled under Java 1.2. As it's been so long, we stopped building a Java 1.1-compatible jar. <strong>Most importantly</strong>, it <em>should</em> be a drop in replacement for Lang 2.3, but we recommend testing first, of course. Also, for those of you who work within an OSGi framework, the jar should be ready for OSGi. Now... time to move on.
+</p>
+</section>
+<section name="New classes">
+<p>Three new classes were added, so let's cover those next.</p>
+<p>Firstly, we added an <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/math/IEEE754rUtils.html"><code>IEEE754rUtils</code></a>
+class to the <code>org.apache.commons.lang.math</code> package.
+This candidate for ugly name of the month was needed to add <a href="https://en.wikipedia.org/wiki/IEEE_754r#min_and_max">IEEE-754r</a>
+semantics for some of the <code>NumberUtils</code> methods. The relevant part of that
+IEEE specification in this case is the NaN handling for <code>min</code> and <code>max</code> methods, and
+you can read more about it in <a href="https://issues.apache.org/jira/browse/LANG-381">LANG-381</a>.
+</p>
+<p>Second and third on our newcomers list are the <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/text/ExtendedMessageFormat.html"><code>ExtendedMessageFormat</code></a> class and its peer
+<a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/text/FormatFactory.html"><code>FormatFactory</code></a>
+interface, both found in the <code>org.apache.commons.lang.text</code> package.</p>
+<p>Together they allow you to take the <code>java.text.MessageFormat</code> class further and insert your own formatting elements.</p>
+<p>
+By way of an example, imagine that we have a need for custom formatting of an employee identification
+number or EIN. Perhaps, simplistically, our EIN is composed of a two-character department code
+followed by a four-digit number, and that it is customary within our organization to render the EIN
+with a hyphen following the department identifier. Here we'll represent the EIN as a simple
+String (of course in real life we would likely create a class composed of department and number).
+We can create a custom <code>Format</code> class:
+<pre><code>
+public class EINFormat extends Format {
+ private char[] idMask;
+
+ public EINFormat() {
+ }
+ public EINFormat(char maskChar) {
+ idMask = new char[4];
+ Arrays.fill(idMask, maskChar);
+ }
+ public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) {
+ String ein = (String) obj; //assume or assert length &gt;= 2
+ if (idMask == null) {
+ return new StringBuffer(ein).insert(2, '-').toString();
+ }
+ return new StringBuffer(ein.substring(0, 2)).append('-').append(idMask).toString();
+ }
+ public Object parseObject(String source, ParsePosition pos) {
+ int idx = pos.getIndex();
+ int endIdx = idx + 7;
+ if (source == null || source.length() &lt; endIdx) {
+ pos.setErrorIndex(idx);
+ return null;
+ }
+ if (source.charAt(idx + 2) != '-') {
+ pos.setErrorIndex(idx);
+ return null;
+ }
+ pos.setIndex(endIdx);
+ return source.substring(idx, endIdx).deleteCharAt(2);
+ }
+}
+</code></pre>
+Our custom EIN format is made available for <code>MessageFormat</code>-style processing by a
+<code>FormatFactory</code> implementation:
+<pre><code>
+public class EINFormatFactory implements FormatFactory {
+ public static final String EIN_FORMAT = "ein";
+ public Format getFormat(String name, String arguments, Locale locale) {
+ if (EIN_FORMAT.equals(name)) {
+ if (arguments == null || "".equals(arguments)) {
+ return new EINFormat();
+ }
+ return new EINFormat(arguments.charAt(0));
+ }
+ return null;
+ }
+}
+</code></pre>
+
+Now you simply provide a <code>java.util.Map&lt;String, FormatFactory&gt;</code> registry (keyed
+by format type) to <code>ExtendedMessageFormat</code>:
+<pre><code>
+new ExtendedMessageFormat("EIN: {0,ein}", Collections.singletonMap(EINFormatFactory.EIN_FORMAT, new EINFormatFactory()));
+</code></pre>
+As expected, this will render a String EIN "AA9999" as: <code>"EIN: AA-9999"</code>.
+<br /> <br />
+If we wanted to trigger the EIN masking code, we could trigger that in the format pattern:
+<pre><code>
+new ExtendedMessageFormat("EIN: {0,ein,#}", Collections.singletonMap(EINFormatFactory.EIN_FORMAT, new EINFormatFactory()));
+</code></pre>
+This should render "AA9999" as: <code>"EIN: AA-####"</code>.
+<br /> <br />
+You can also use <code>ExtendedMessageFormat</code> to override any or all of the built-in
+formats supported by <code>java.text.MessageFormat</code>. Finally, note that because
+<code>ExtendedMessageFormat</code> extends <code>MessageFormat</code> it should work in most
+cases as a <em>true</em> drop-in replacement.
+</p>
+</section>
+<section name="New methods">
+<p>There were 58 new methods added to existing Commons Lang classes. Going through each one, one at a time would be dull,
+and fortunately there are some nice groupings that we can discuss instead:</p>
+<p>CharSet <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/CharSet.html#getInstance(java.lang.String[])">getInstance(String[])</a> adds an additional builder method by which you can build a CharSet from multiple sets of characters at the same time. If you weren't aware of the CharSet class, it holds a set of characters created by a simple pattern language allowing constructs such as <code>"a-z"</code> and <code>"^a"</code> (everything but 'a'). It's most used by the CharSetUtils class, and came out of CharSetUtils.translate, a simple variant of the UNIX tr command.</p>
+<p>ClassUtils <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/ClassUtils.html">canonical name</a> methods are akin to the non '<code>Canonical</code>' methods, except they work with the more human readable <code>int[]</code> type names rather than the JVM versions of <code>[I</code>. This makes them useful for parsing input from developer's configuration files. </p>
+<p>ClassUtils <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/ClassUtils.html#toClass(java.lang.Object[])">toClass(String[])</a> is very easy to explain - it calls <code>toClass</code> on each <code>Object</code> in the array and returns an array of <code>Class</code> objects.</p>
+<p>ClassUtils <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/ClassUtils.html#wrappersToPrimitives(java.lang.Class[])">wrapper-&gt;primitive</a> conversions are the reflection of the pre-existing <code>primitiveToWrapper</code> methods. Again easy to explain, they turn an array of <code>Integer</code> into an array of <code>int[]</code>.</p>
+<p>ObjectUtils <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/ObjectUtils.html#identityToString(java.lang.StringBuffer,%20java.lang.Object)">identityToString(StringBuffer, Object)</a> is the StringBuffer variant of the pre-existing <code>identityToString</code> method. In case you've not met that before, it produces the toString that would have been produced by an Object if it hadn't been overridden.</p>
+<p>StringEscapeUtils <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringEscapeUtils.html#escapeCsv(java.lang.String)">CSV methods</a> are a new addition to our range of simple parser/printers. These, quite as expected, parse and unparse CSV text as per <a href="https://datatracker.ietf.org/doc/html/rfc4180">RFC-4180</a>.</p>
+<p>StringUtils has a host of new methods, as always, and we'll leave these for later.</p>
+<p>WordUtils <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/WordUtils.html#abbreviate(java.lang.String,%20int,%20int,%20java.lang.String)">abbreviate</a> finds the first space after the lower limit and abbreviates the text.</p>
+<p>math.<a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/math/IntRange.html#toArray()">IntRange</a>/<a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/math/LongRange.html#toArray()">LongRange.toArray</a> turn the range into an array of primitive <code>int</code>/<code>long</code>s contained in the range.</p>
+<p>text.StrMatch.<a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/text/StrMatcher.html#isMatch(char[],%20int)">isMatch(char[], int)</a> is a helper method for checking whether there was a match with the StrMatcher objects.</p>
+<p>time.DateFormatUtils <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/time/DateFormatUtils.html">format(Calendar, ...)</a> provide Calendar variants for the pre-existing format methods. If these are new to you, they are helper methods to formatting a date.</p>
+<p>time.DateUtils <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/time/DateUtils.html">getFragment*</a> methods are used to splice the time element out of Date. If you have <code>2008/12/13 14:57</code>, then these could, for example, pull out the 13.</p>
+<p>time.DateUtils <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/time/DateUtils.html">setXxx methods</a> round off our walk through the methods - the setXxx variant of the existing addXxx helper methods.</p>
+</section>
+
+<section name="StringUtils methods">
+<p>The <code>StringUtils</code> class is a little large, isn't it? Sorry, but it's gotten bigger.
+</p>
+<ul>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#containsOnly(java.lang.String,%20char[])">boolean containsAny(String, char[])</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#containsOnly(java.lang.String,%20java.lang.String)">boolean containsAny(String, String)</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#endsWith(java.lang.String,%20java.lang.String)">boolean endsWith(String, String)</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#endsWithIgnoreCase(java.lang.String,%20java.lang.String)">boolean endsWithIgnoreCase(String, String)</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#getCommonPrefix(java.lang.String[])">String getCommonPrefix(String[])</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#indexOfDifference(java.lang.String[])">int indexOfDifference(String[])</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#length(java.lang.String)">int length(String)</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#removeEndIgnoreCase(java.lang.String,%20java.lang.String)">String removeEndIgnoreCase(String, String)</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#removeStartIgnoreCase(java.lang.String,%20java.lang.String)">String removeStartIgnoreCase(String, String)</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#replaceEach(java.lang.String,%20java.lang.String[],%20java.lang.String[])">String replaceEach(String, String[], String[])</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#replaceEachRepeatedly(java.lang.String,%20java.lang.String[],%20java.lang.String[])">String replaceEachRepeatedly(String, String[], String[])</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#splitByCharacterType(java.lang.String)">String[] splitByCharacterType(String)</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#splitByCharacterTypeCamelCase(java.lang.String)">String[] splitByCharacterTypeCamelCase(String)</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#splitByWholeSeparatorPreserveAllTokens(java.lang.String,%20java.lang.String)">String[] splitByWholeSeparatorPreserveAllTokens(String, String)</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#splitByWholeSeparatorPreserveAllTokens(java.lang.String,%20java.lang.String,%20int)">String[] splitByWholeSeparatorPreserveAllTokens(String, String, int)</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#startsWith(java.lang.String,%20java.lang.String)">boolean startsWith(String, String)</a></li>
+ <li><a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/apache/commons/lang/StringUtils.html#startsWithIgnoreCase(java.lang.String,%20java.lang.String)">boolean startsWithIgnoreCase(String, String)</a></li>
+</ul>
+
+<p>Hopefully they are in many cases self-describing. Rather than spend a lot of time describing them, we'll let you read the Javadoc of the ones that interest you.</p>
+
+</section>
+
+<section name="What's fixed in Lang 2.4?">
+<p>In addition to new things, there are the bugfixes. As you can tell from the release notes, there are a good few - 24 in fact according to JIRA. Here are some of the interesting ones: </p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/LANG-393">LANG-393</a> - We fixed EqualsBuilder so that it understands that BigDecimals are equal even when they think they're not. It seems very likely that usually you will want "29.0" and "29.00" to be equal, even if BigDecimal disagrees. </li>
+<li><a href="https://issues.apache.org/jira/browse/LANG-380">LANG-380</a> - Chances are you'll know if you met this one. Fraction.reduce has an infinite loop if the numerator is 0. </li>
+<li><a href="https://issues.apache.org/jira/browse/LANG-369">LANG-369</a>, <a href="https://issues.apache.org/jira/browse/LANG-367">LANG-367</a>, <a href="https://issues.apache.org/jira/browse/LANG-334">LANG-334</a> - Threading bugs - we improved how things work in concurrency situations for ExceptionUtils, FastDateFormat and Enum. </li>
+<li><a href="https://issues.apache.org/jira/browse/LANG-346">LANG-346</a> - DateUtils.round was getting things wrong for minutes and seconds. </li>
+<li><a href="https://issues.apache.org/jira/browse/LANG-328">LANG-328</a> - LocaleUtils.toLocale was broken if there was no country code defined. </li>
+</ul>
+</section>
+
+<section name="So long, farewell...">
+<p>Hopefully that was all of interest. Don't forget to download <a href="https://commons.apache.org/lang/download_lang.cgi">Lang 2.4</a>, or, for the Maven repository users, upgrade your &lt;version&gt; tag to 2.4. Please feel free to raise any questions you might have on the <a href="mail-lists.html">mailing lists</a>, and report bugs or enhancements in the <a href="issue-tracking.html">issue tracker</a>.</p>
+</section>
+
+</section>
+
+</body>
+</document>
diff --git a/src/site/xdoc/article2_5.xml b/src/site/xdoc/article2_5.xml
new file mode 100644
index 000000000..be45444f7
--- /dev/null
+++ b/src/site/xdoc/article2_5.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>What's new in Commons Lang 2.5?</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="What's new in Commons Lang 2.5?">
+<p>Commons Lang 2.5 is out, and the obvious question is: <em>"So what? What's changed?"</em>.</p>
+<p>This article aims to briefly cover the changes and save you from having to dig through each JIRA
+issue to see what went on in the two years of development between Lang 2.4 and 2.5.</p>
+<p>Two years?!? Yes, it's true. The reason is that 2.5 represents the backwards compatible changes in the
+nearly complete Java-5 focused Lang 3.0. </p>
+<section name="Deprecations">
+<p>There were no new deprecations in 2.5. </p>
+</section>
+<section name="The build">
+<p>2.5 was built using Sun's 1.6.0_17 JVM, but targets Java 1.3. </p>
+</section>
+<section name="New classes">
+<p>A new org.apache.commons.lang.reflect package was added, accumulating common high-level uses of the java.lang.reflect APIs. The
+classes, hopefully self-evident in nature, were pulled together from the existing BeanUtils and the unreleased Reflect components.
+The classes are: </p>
+<ul>
+<li>ConstructorUtils - primarily creating new instances of classes</li>
+<li>FieldUtils - primarily reading and writing to Object/Class fields</li>
+<li>MethodUtils - primarily methods to make invoking methods simpler</li>
+</ul>
+<p>You can read more about the classes in their
+<a href="LANG_2_5/src/main/java/org/apache/commons/lang/reflect//MemberUtils.java">javadoc</a>. </p>
+</section>
+<section name="New fields">
+<p>With both Java 7 and Windows 7 becoming a reality,
+<a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.5/org/apache/commons/lang/SystemUtils.html">SystemUtils</a> was updated to
+provide boolean fields for both versions. </p>
+</section>
+<section name="New methods">
+<p>There were 66 new methods added to existing Commons Lang classes. </p>
+<p>The <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.5/org/apache/commons/lang/ArrayUtils.html">ArrayUtils</a> class
+received two new types of methods. Firstly, a boolean isNotEmpty(array) set of methods, identifying whether the particular
+array is null or an empty sized array. This makes it the inverse of the existing isEmpty(array) methods. Secondly, an array
+nullToEmpty(array) set of methods that converts null or empty arrays to a singleton empty array already available from the
+ArrayUtils class. Non-null/empty arrays are left untouched. </p>
+
+<p>The constructor for the
+<a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.5/org/apache/commons/lang/CharRange.html">CharRange</a> class is somewhat
+confusing. It takes a boolean parameter that when set to true means the CharRange is negated. To make code easier to read, the
+following static helper methods were added: </p>
+<ul>
+<li>public org.apache.commons.lang.CharRange is(char)</li>
+<li>public org.apache.commons.lang.CharRange isIn(char, char)</li>
+<li>public org.apache.commons.lang.CharRange isNot(char)</li>
+<li>public org.apache.commons.lang.CharRange isNotIn(char, char)</li>
+</ul>
+<p>An iterator() method was also added to provide another way of walking the range. </p>
+
+<p>The <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.5/org/apache/commons/lang/builder/EqualsBuilder.html">EqualsBuilder</a>
+obtained a new reset() method to allow for reuse, while the
+<a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.5/org/apache/commons/lang/builder/HashCodeBuilder.html">HashCodeBuilder</a>
+received a hashCode() method that returns the built hash code instead of the natural hash code of the builder object itself. It
+doesn't really matter what the builder chooses to use as a hash code and this stops accidental use of the hashCode() instead of
+toHashCode() method from causing lots of pain. </p>
+
+<p>Helper isFalse(), isTrue() and toBoolean() methods were added to
+<a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.5/org/apache/commons/lang/mutable/MutableBoolean.html">MutableBoolean</a>,
+while the other mutable classes received String argument constructors. </p>
+
+<p>Lastly, the <a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.5/org/apache/commons/lang/time/DateUtils.html">DateUtils</a>
+class received a new ceiling set of methods to truncate upwards, and a parseDateStrictly method to parse a Date with the
+supplied DateFormat classes leniency set to false. </p>
+
+</section>
+
+<section name="StringUtils methods">
+<p>As with 2.4, the
+<a href="https://commons.apache.org/proper/commons-lang/javadocs/api-2.5/org/apache/commons/lang/StringUtils.html">StringUtils</a> class has
+grown and we cover its new methods in its own section. </p>
+<ul>
+<li>abbreviateMiddle(String, String, int);String - This method turns aRatherLongNameSuchAsAFileName into 'aRatherLo...AFileName'.
+This is often desirable when you want to restrict the length of a name, but you can afford to have quite long names. </li>
+<li>indexOfIgnoreCase(String, String);int - An indexOf method that ignores the case of what it's matching. Matching lastIndexOfIgnoreCase and 'start at index' variants were also added. </li>
+<li>lastOrdinalIndexOf(String, String, int);int - A matching variant for the already existing ordinalIndexOf method - they
+support finding the Nth indexOf instead of the first time the search term is found. </li>
+<li>isAllLowerCase(String);boolean - Is the String all lower case. </li>
+<li>isAllUpperCase(String);boolean - Is the String all upper case. </li>
+<li>lowerCase(String, Locale);String - Null protected toLowerCase methods for the platform independent inclined. </li>
+<li>upperCase(String, Locale);String - Null protected toUpperCase methods for the platform independent inclined. </li>
+<li>repeat(String, String, int);String - Repeat option that includes an optional separator. </li>
+<li>startsWithAny(String, String[]);boolean - Does the specified String start with any of the supplied values. </li>
+</ul>
+</section>
+
+<section name="What's fixed in Lang 2.5?">
+<p>Per the <a href="upgradeto2_5.html">release notes</a> there are 32 bugs fixed in Lang 2.5. Some highlights are: </p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/LANG-477">LANG-477</a> - fixing an OutOfMemoryError in ExtendedMessageFormat. </li>
+<li><a href="https://issues.apache.org/jira/browse/LANG-76">LANG-76</a> - EnumUtils.getEnum() doesn't work well in 1.5. </li>
+<li><a href="https://issues.apache.org/jira/browse/LANG-204">LANG-204</a> and
+<a href="https://issues.apache.org/jira/browse/LANG-506">LANG-506</a> - Multithreading improvements to the package private Entities
+class, used behind the scenes by StringEscapeUtils. </li>
+<li><a href="https://issues.apache.org/jira/browse/LANG-511">LANG-511</a> - Improve performance by deferring LocaleUtils initialization. </li>
+<li><a href="https://issues.apache.org/jira/browse/LANG-523">LANG-523</a> - Two orders of magnitude performance improvement in StrBuilder. </li>
+<li><a href="https://issues.apache.org/jira/browse/LANG-467">LANG-467</a> - Reverted the change to EqualsBuilder in Lang 2.4 to
+specially handle BigDecimal. While useful, it put things out of sync with HashCodeBuilder. </li>
+<li><a href="https://issues.apache.org/jira/browse/LANG-586">LANG-586</a> - Use of a ThreadLocal in HashCodeBuilder and
+ToStringStyle meant that containers could end up with memory leaks. This was rewritten to avoid this. </li>
+<li><a href="https://issues.apache.org/jira/browse/LANG-472">LANG-472</a> - RandomUtils.nextLong() was returning only even numbers. Fans of Java-based roulette wheels can breathe a sigh of relief. </li>
+</ul>
+</section>
+
+<section name="So long, farewell...">
+<p>Hopefully that was all of interest. Don't forget to download <a href="https://commons.apache.org/lang/download_lang.cgi">Lang 2.5</a>, or, for the Maven repository users, upgrade your &lt;version&gt; tag to 2.5. Please feel free to raise any questions you might have on the <a href="mail-lists.html">mailing lists</a>, and report bugs or enhancements in the <a href="issue-tracking.html">issue tracker</a>.</p>
+</section>
+
+</section>
+
+</body>
+</document>
diff --git a/src/site/xdoc/article3_0.xml b/src/site/xdoc/article3_0.xml
new file mode 100644
index 000000000..ff5976d08
--- /dev/null
+++ b/src/site/xdoc/article3_0.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>What's new in Commons Lang 3.0?</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="What's new in Commons Lang 3.0?">
+<p>Commons Lang 3.0 is out, and the obvious question is: <em>"So what? What's changed?"</em>.</p>
+<section name="The big story">
+<p>Lang is now Java 5 based. We've generified the API, moved certain APIs to support <code>varargs</code> and thrown out any features
+that are now supported by Java itself. We've removed the deprecated parts of the API and have also removed some features that
+were deemed weak or unnecessary. All of this means that Lang 3.0 is not backwards compatible. </p>
+<p>To that end we have changed the package name, allowing Lang 3.0 to sit side-by-side with your previous version of Lang without any bad side effects. The new package name is the exciting and original <code>org.apache.commons.lang3</code>. This also forces you to recompile your code, making sure the compiler can let you know if a backwards incompatibility affects you. </p>
+<p>As you'd expect, there are also new features, enhancements and bugs fixed. </p>
+</section>
+<!--
+<section name="The build">
+<p>We built 3.0 using Maven 2.2.1 and Java 1.5. <strong>Needs confirmation before release of actual build details</strong></p>
+</section>
+-->
+<section name="Migrating from 2.x">
+<h3>Java code</h3>
+<p>Despite the label of backwards incompatibility, in the vast majority of cases the simple addition of a <code>'3'</code> to an import statement will suffice for your migration. </p><br/>
+<p>Change: <code>import org.apache.commons.lang</code> -&gt; <code>import org.apache.commons.lang3</code></p>
+<h3>Maven</h3>
+<p><code>groupId</code>: <code>commons-lang</code> -&gt; <code>org.apache.commons</code></p>
+<p><code>artifactId</code>: <code>commons-lang</code> -&gt; <code>commons-lang3</code></p>
+</section>
+
+<section name="What's gone?">
+<h3>Enum package</h3>
+<p>Java 5 provided enums out of the box, therefore we dispensed with both the deprecated enum package,
+and the enums package. Instead you should migrate over to the standard Java enum. An EnumUtils class has been born
+from the ashes of the old code, focused on providing additional functionality to the standard Java enum API. </p>
+<h3>NestedExceptions</h3>
+<p>In Java 1.4, the notion that all Throwables could be linked to a cause was introduced. In Lang we
+had provided a NestedException framework to support the same feature, and now that we're jumping from Java 1.3 to
+Java 5 we are remove this feature. The deprecation section below covers one part of ExceptionUtils that remains until
+we are on Java 6, where the last remaining parts of the JDK appear to have embraced the new cause API. </p>
+<h3>JVMRandom</h3>
+<p>This class was introduced in Lang 2.0 to support a Random object built around the system seed. This
+proved to be both an uncommon use case and one with bugs and so was dropped. </p>
+<h3>StringEscapeUtils.escapeSql</h3>
+<p>This was a misleading method, only handling the simplest of possible SQL cases. As SQL is not Lang's focus, it didn't make sense to maintain this method. </p>
+<h3>*Exceptions removed</h3>
+<p>Various Exception classes were removed - the lesson in defining more semantically relevant exception classes is that you can keep on coming up with more and more new classes. Simpler to focus on using the main JDK classes. </p>
+<h3>math.*Range</h3>
+<p>The various Range classes in the <code>math</code> package were removed in favour of a new generic Range class. </p>
+<h3>Previous Deprecations</h3>
+<p>All deprecated fields/methods/classes - with a new major version, all of the previously deprecated parts of the API could finally go away. </p>
+<p>If you feel that something was unfairly taken away, please feel free to contact the list. In many cases the possibility exists to reintroduce code. </p>
+</section>
+<section name="Deprecations">
+<p>The lone deprecation in 3.0 is that of the notion of 'cause method names' in ExceptionUtils. In Java 5.0 it is still just about
+needed to handle some JDK classes that have not been migrated to the getCause API. In Java 6.0 things appear to be resolved and
+we will remove the related methods in Lang 4.0. </p>
+</section>
+<section name="New packages">
+<p>Two new packages have shown up. org.apache.commons.lang3.concurrent, which unsurprisingly provides support classes for
+multithreaded programming, and org.apache.commons.lang3.text.translate, which provides a pluggable API for text transformation. </p>
+
+<h3>concurrent.*</h3>
+<p>Java 1.5 adds a great bunch of functionality related to multithreaded programming
+below the <code>java.util.concurrent</code> package. Commons Lang 3.0 provides
+some additional classes in this area which are intended to further simplify the
+development of concurrent applications.</p>
+<p>The classes located in the <code>concurrent</code> package can be roughly
+divided into the following categories:
+<ul>
+<li>Utility classes</li>
+<li>Initializer classes</li>
+</ul>
+</p>
+<p>Classes of the former category provide some basic functionality a developer
+typically has to implement manually again and again. Examples are a configurable
+<code>ThreadFactory</code> implementation or utility methods for the handling of
+<code>ExecutionException</code>s thrown by Java's executor service framework.</p>
+<p>Initializer classes deal with the creation of objects in a multithreaded
+environment. There are several variants of initializer implementations serving
+different purposes. For instance, there are a couple of concrete initializers
+supporting lazy initialization of objects in a safe way. Another example is
+<code>BackgroundInitializer</code> which allows pushing the creation of an
+expensive object to a background thread while the application can continue with
+the execution of other tasks. Here is an example of the usage of <code>BackgroundInitializer</code>
+which creates an <code>EntityManagerFactory</code> object:</p>
+<pre>
+ public class DBInitializer extends BackgroundInitialize&lt;EntityManagerFactory&gt; {
+ protected EntityManagerFactory initialize() {
+ return Persistence.createEntityManagerFactory(&quot;mypersistenceunit&quot;);
+ }
+ }
+</pre>
+<p>An application creates an instance of the <code>DBInitializer</code> class
+and calls its <code>start()</code> method. When it later needs access to the
+<code>EntityManagerFactory</code> created by the initializer it calls the
+<code>get()</code> method; <code>get()</code> returns the object produced by the
+initializer if it is already available or blocks if necessary until initialization
+is complete. Alternatively a convenience method of the <code>ConcurrentUtils</code>
+class can be used to obtain the object from the initializer which hides the
+checked exception declared by <code>get()</code>:</p>
+<pre>
+ DBInitializer init = new DBInitializer();
+ init.start();
+
+ // now do some other stuff
+
+ EntityManagerFactory factory = ConcurrentUtils.initializeUnchecked(init);
+</pre>
+<p>Comprehensive documentation about the <code>concurrent</code> package is
+available in the <a href="userguide.html#lang.concurrent.">user guide</a>.</p>
+<h3>text.translate.*</h3>
+<p>A common complaint with StringEscapeUtils was that its escapeXml and escapeHtml methods should not be escaping non-ASCII characters. We agreed and made the change while creating a modular approach to let users define their own escaping constructs. </p>
+<p>The simplest way to show this is to look at the code that implements escapeXml:</p>
+<pre>
+ return ESCAPE_XML.translate(input);
+</pre>
+<p>Very simple. Maybe a bit too very simple, let's look a bit deeper. </p>
+<pre>
+ public static final CharSequenceTranslator ESCAPE_XML =
+ new AggregateTranslator(
+ new LookupTranslator(EntityArrays.BASIC_ESCAPE()),
+ new LookupTranslator(EntityArrays.APOS_ESCAPE())
+ );
+</pre>
+<p>Here we see that <code>ESCAPE_XML</code> is a '<code>CharSequenceTranslator</code>', which in turn is made up of two lookup translators based on the basic XML escapes and another to escape apostrophes. This shows one way to combine translators. Another can be shown by looking at the example to achieve the old XML escaping functionality (escaping non-ASCII): </p>
+<pre>
+ StringEscapeUtils.ESCAPE_XML.with( NumericEntityEscaper.between(0x7f, Integer.MAX_VALUE) );
+</pre>
+<p>That takes the standard Commons Lang provided escape functionality, and adds on another translation layer. Another JIRA requested option was to also escape non-printable ASCII, this is now achievable with a modification of the above: </p>
+<pre>
+ StringEscapeUtils.ESCAPE_XML.with(
+ new AggregateTranslator(
+ NumericEntityEscaper.between(0, 31),
+ NumericEntityEscaper.between(0x80, Integer.MAX_VALUE)
+ )
+ )
+</pre>
+<p>You can also implement your own translators (be they for escaping, unescaping or some aspect of your own). See the <code>CharSequenceTranslator</code> and its <code>CodePointTranslator</code> helper subclass for details - primarily a case of implementing the translate(CharSequence, int, Writer);int method. </p>
+</section>
+<section name="New classes + methods">
+<p>There are many new classes and methods in Lang 3.0 - the most complete way to see the changes is via this <a href="lang2-lang3-clirr-report.html">Lang2 to Lang3 Clirr report</a>. </p>
+<p>Here is a summary of the new classes: </p>
+<ul>
+<li><code>AnnotationUtils</code></li>
+<li><code>CharSequenceUtils</code></li>
+<li><code>EnumUtils</code></li>
+<li><code>JavaVersion</code> - used in SystemUtils</li>
+<li><code>Pair, ImmutablePair and MutablePair</code></li>
+<li><code>Range</code> - replaces the old math.*Range classes</li>
+<li><code>builder.Builder</code></li>
+<li><code>exception.ContextedException</code></li>
+<li><code>exception.CloneFailedException</code></li>
+<li><code>reflect.ConstructorUtils</code></li>
+<li><code>reflect.FieldUtils</code></li>
+<li><code>reflect.MethodUtils</code></li>
+<li><code>reflect.TypeUtils</code></li>
+<li><code>text.WordUtils</code></li>
+</ul>
+</section>
+
+<section name="Bugfixes?">
+<p>See the <a href="changes-report.html#3.0">3.0 changes report</a> for the list of fixed bugs and other enhancements. </p>
+</section>
+
+<section name="Other Notable Changes">
+<ul>
+<li>StringUtils.isAlpha, isNumeric and isAlphanumeric now all return false when passed an empty String. Previously they returned true. </li>
+<li>SystemUtils.isJavaVersionAtLeast now relies on the <code>java.specification.version</code> and not the <code>java.version</code> System property. </li>
+<li>StringEscapeUtils.escapeXml and escapeHtml no longer escape high value Unicode characters by default. The text.translate package is available to recreate the old behavior. </li>
+<li>Validate utility methods have been changed and genericized to return the
+validated argument where possible, to allow for inline use. </li>
+<li>Validate utility methods handle validity violations arising from
+<code>null</code> values by throwing <code>NullPointerException</code>s.
+This better aligns with standard JDK behavior (lang <em>is</em> intended to
+complement <code>java.lang</code>, after all). Users upgrading from v2.x may
+need to adjust to this change. See <code>Validate#isTrue()</code> for a
+general-purpose mechanism to raise an <code>IllegalArgumentException</code>.</li>
+</ul>
+</section>
+
+<!--
+<section name="What next???"> TODO: Add Beta info.
+<p>Hopefully that was all of interest. Don't forget to download <a href="https://commons.apache.org/lang/download_lang.cgi">Lang 3.0</a>, or, for the Maven repository users, upgrade your &lt;version&gt; tag to 3.0 and your groupId to org.apache.commons. Please feel free to raise any questions you might have on the <a href="mail-lists.html">mailing lists</a>, and report bugs or enhancements in the <a href="issue-tracking.html">issue tracker</a>.</p>
+</section>
+-->
+
+</section>
+
+</body>
+</document>
diff --git a/src/site/xdoc/building.xml b/src/site/xdoc/building.xml
new file mode 100644
index 000000000..ee1c52a30
--- /dev/null
+++ b/src/site/xdoc/building.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>Building</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+<!-- ================================================== -->
+<section name="Overview">
+<p>
+ Commons Lang uses <a href="https://maven.apache.org">Maven</a>.
+</p>
+<p>
+ You may also be interested in the upgrade notes:
+</p>
+<ul>
+ <li>Upgrade from 2.6 to 3.0 - <a href="upgradeto3_0.html">Lang 3.0 Release Notes</a></li>
+ <li>Upgrade from 2.5 to 2.6 - <a href="upgradeto2_6.html">Lang 2.6 Release Notes</a></li>
+ <li>Upgrade from 2.4 to 2.5 - <a href="upgradeto2_5.html">Lang 2.5 Release Notes</a></li>
+ <li>Upgrade from 2.3 to 2.4 - <a href="upgradeto2_4.html">Lang 2.4 Release Notes</a></li>
+ <li>Upgrade from 2.2 to 2.3 - <a href="upgradeto2_3.html">Lang 2.3 Release Notes</a></li>
+ <li>Upgrade from 2.1 to 2.2 - <a href="upgradeto2_2.html">Lang 2.2 Release Notes</a></li>
+ <li>Upgrade from 2.0 to 2.1 - <a href="upgradeto2_1.html">Lang 2.1 Release Notes</a></li>
+ <li>Upgrade from 1.0 to 2.0 - <a href="upgradeto2_0.html">Lang 2.0 Release Notes</a></li>
+</ul>
+</section>
+<!-- ================================================== -->
+<section name="Maven Goals">
+ <p>
+ To build a jar file, change into the root directory of Lang and run "mvn package".
+ The result will be in the "target" subdirectory.
+ </p>
+ <p>
+ To build the full website, run "mvn site".
+ The result will be in "target/site".
+ You must be online to successfully complete this target.
+ </p>
+ <p>
+ Further details can be found in the
+ <a href="https://commons.apache.org/building.html">commons build instructions</a>.
+ </p>
+</section>
+<!-- ================================================== -->
+<section name="Ant Goals">
+ <p>
+ To build a jar file, change into the root directory of Lang and run "ant jar".
+ The result will be in the "target" subdirectory.
+ </p>
+ <p>
+ To build the Javadocs, run "ant javadoc".
+ The result will be in "target/docs/api".
+ </p>
+</section>
+<!-- ================================================== -->
+</body>
+</document>
diff --git a/src/site/xdoc/developerguide.xml b/src/site/xdoc/developerguide.xml
new file mode 100644
index 000000000..3cfa9b938
--- /dev/null
+++ b/src/site/xdoc/developerguide.xml
@@ -0,0 +1,150 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+<properties>
+<title>Developer guide for Commons "Lang"</title>
+</properties>
+<body>
+
+
+<section name='Developer guide for Commons "Lang"'>
+
+<h1>The Commons <em>Lang</em> Package</h1>
+<h2>Developers Guide</h2>
+<br />
+<a href="#Introduction">[Introduction]</a>
+<a href="#PackageStructure">[Package Structure]</a>
+<a href="#UtilityClasses">[Utility Classes]</a>
+<a href="#Javadoc">[Javadoc]</a>
+<a href="#Building">[Building]</a>
+<br /><br />
+
+<a name="Introduction"></a>
+<h3>1. INTRODUCTION</h3>
+
+<p>The <em>Lang</em> package contains a set of Java classes that extend
+the basic JDK classes. This developer guide seeks to set
+out rules for the naming of classes and methods within the package. The purpose
+of this, as with all naming standards, is to improve the coherency and
+consistency of the whole API.</p>
+
+<p>The philosophy of the naming standards is to follow those of the JDK
+if possible.</p>
+
+
+
+<a name="PackageStructure"></a>
+<h3>2. PACKAGE STRUCTURE</h3>
+
+<p>The main package for Lang is <code>org.apache.commons.lang3</code>. Subpackages should
+be created for each group of related items. </p>
+
+<p>Each package should have a <code>package.html</code> file for javadoc. This should
+describe the use of the package and its scope.</p>
+
+
+
+<a name="UtilityClasses"></a>
+<h3>3. UTILITY CLASSES</h3>
+
+<p>Utility classes provide additional functionality around a class or interface.
+Examples include StringUtils and SerializationUtils.</p>
+
+<p>Each class shall follow the naming pattern XxxUtils where Xxx relates to the
+class or interface that the utility services. Variations on a theme (<code>Integer</code>
+as opposed to <code>Number</code>) should be dealt with in one Utils class where possible.
+Each Utils class shall:</p>
+
+<ul>
+<li>be a single, static method based, class</li>
+<li>have a name consisting of the interface name plus 'Utils'</li>
+<li>deal with one class or interface and its variations (subclasses)</li>
+<li>provide methods that perform useful utility functions</li>
+<li>the class will not be final</li>
+<li>for null parameters, rather than throwing an Exception, consider performing a Null patterned concept, such as returning 0 or ""</li>
+</ul>
+
+<p>A utility class can act as a factory for specific implementations of a class or
+interface. In such cases the implementations should be non-public, static, inner classes
+of the utility class. However, if warranted due to maintenance or other reasons, these
+decorator classes may be moved to top-level classes in a subpackage. The
+naming of such a subpackage should be discussed and agreed upon on the
+developers mailing list.</p>
+
+<p>If different overloaded variants of a method are desired, with the same method signature, it should not be indicated via a boolean argument, but via a more focused method name. Rather than replace(boolean repeat), replace and replaceAll, or replaceOnce and replace. </p>
+
+
+<a name="Javadoc"></a>
+<h3>4. JAVADOC</h3>
+
+<p>The Sun javadoc guidelines are the starting point for Lang. These points are
+an extension to make it easier for users reading the generated
+docs and developers with javadoc-popup capabilities from within their IDE.</p>
+
+<h4>General</h4>
+<p>References to other objects, interfaces or methods use the @link-tag the
+first time it is referenced in a class or interface. On the following
+references always enclose it inside &lt;code&gt;&lt;/code&gt;.</p>
+
+<p>References to <code>null</code>, <code>this</code>, <code>long</code>,
+<code>int</code>, <code>short</code>, <code>char</code>, <code>byte</code>,
+<code>double</code>, <code>float</code> and <code>boolean</code> should be enclosed
+in &lt;code&gt;&lt;/code&gt;.</p>
+
+<h4>Classes/Interfaces/Methods</h4>
+<p>Use a short description of what the class/interface/method is used for,
+enclose with &lt;p&gt;&lt;/p&gt;.</p>
+
+<p>A longer description about what the class/interface/method is used for
+and if it is needed how it is done. If it is necessary include
+description of the parameters, what they are used for and how. Enclose
+with &lt;p&gt;&lt;/p&gt; where it is needed, try to divide into smaller parts (not
+to small!) to enhance readability of the generated Javadoc.</p>
+
+<p>If an example is needed enclose it with &lt;pre&gt;&lt;/pre&gt;.
+It should be supported with an explanation within a normal paragraph.</p>
+
+<h4>Exception throwing</h4>
+<p>When throwing an exception to indicate a bad argument, always try to throw
+IllegalArgumentException, even if the argument was null. Do not throw
+NullPointerException. (Obviously, you should document what the code actually does!)</p>
+
+<h4>Deprecations</h4>
+<p>When deprecating a method or class include a clear reference to when the method will be deleted.
+This should be of the form 'Method will be removed in Commons Lang 3.0.'. </p>
+
+<h4>Language used in code/comments</h4>
+<p>It has been decided to casually standardize on US-English.
+To avoid misplaced jeers of 'americanisation', the people making this decision largely write in non-US-English.
+However, it's not something to get worked up about. Lots of spelling differences will creep in all over.</p>
+
+<a name="Building"></a>
+<h3>5.BUILDING</h3>
+<h4>Building a Release</h4>
+<p>
+The currently targeted version of Java is 1.6.
+</p>
+<p>
+To build Lang:
+<table>
+<tr><th></th><th>Tested JAR</th><th>Distribution</th><th>Site</th></tr>
+<tr><td>Maven 2.x</td><td><code>mvn package</code></td><td>mvn assembly:assembly</td><td>mvn site</td></tr>
+</table>
+</p>
+</section>
+</body>
+</document>
diff --git a/src/site/xdoc/download_lang.xml b/src/site/xdoc/download_lang.xml
new file mode 100644
index 000000000..003c0684a
--- /dev/null
+++ b/src/site/xdoc/download_lang.xml
@@ -0,0 +1,186 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<!--
+ +======================================================================+
+ |**** ****|
+ |**** THIS FILE IS GENERATED BY THE COMMONS BUILD PLUGIN ****|
+ |**** DO NOT EDIT DIRECTLY ****|
+ |**** ****|
+ +======================================================================+
+ | TEMPLATE FILE: download-page-template.xml |
+ | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |
+ +======================================================================+
+ | |
+ | 1) Re-generate using: mvn commons-build:download-page |
+ | |
+ | 2) Set the following properties in the component's pom: |
+ | - commons.componentid (required, alphabetic, lower case) |
+ | - commons.release.version (required) |
+ | - commons.release.name (required) |
+ | - commons.binary.suffix (optional) |
+ | (defaults to "-bin", set to "" for pre-maven2 releases) |
+ | - commons.release.desc (optional) |
+ | - commons.release.subdir (optional) |
+ | - commons.release.hash (optional, lowercase, default sha512) |
+ | |
+ | - commons.release.[234].version (conditional) |
+ | - commons.release.[234].name (conditional) |
+ | - commons.release.[234].binary.suffix (optional) |
+ | - commons.release.[234].desc (optional) |
+ | - commons.release.[234].subdir (optional) |
+ | - commons.release.[234].hash (optional, lowercase, [sha512])|
+ | |
+ | 3) Example Properties |
+ | (commons.release.name inherited by parent: |
+ | ${project.artifactId}-${commons.release.version} |
+ | |
+ | <properties> |
+ | <commons.componentid>math</commons.componentid> |
+ | <commons.release.version>1.2</commons.release.version> |
+ | </properties> |
+ | |
+ +======================================================================+
+-->
+<document>
+ <properties>
+ <title>Download Apache Commons Lang</title>
+ <author email="dev@commons.apache.org">Apache Commons Documentation Team</author>
+ </properties>
+ <body>
+ <section name="Download Apache Commons Lang">
+ <subsection name="Using a Mirror">
+ <p>
+ We recommend you use a mirror to download our release
+ builds, but you <strong>must</strong> <a href="https://www.apache.org/info/verification.html">verify the integrity</a> of
+ the downloaded files using signatures downloaded from our main
+ distribution directories. Recent releases (48 hours) may not yet
+ be available from all the mirrors.
+ </p>
+
+ <p>
+ You are currently using <b>[preferred]</b>. If you
+ encounter a problem with this mirror, please select another
+ mirror. If all mirrors are failing, there are <i>backup</i>
+ mirrors (at the end of the mirrors list) that should be
+ available.
+ <br></br>
+ [if-any logo]<a href="[link]"><img align="right" src="[logo]" border="0"></img></a>[end]
+ </p>
+
+ <form action="[location]" method="get" id="SelectMirror">
+ <p>
+ Other mirrors:
+ <select name="Preferred">
+ [if-any http]
+ [for http]<option value="[http]">[http]</option>[end]
+ [end]
+ [if-any ftp]
+ [for ftp]<option value="[ftp]">[ftp]</option>[end]
+ [end]
+ [if-any backup]
+ [for backup]<option value="[backup]">[backup] (backup)</option>[end]
+ [end]
+ </select>
+ <input type="submit" value="Change"></input>
+ </p>
+ </form>
+
+ <p>
+ It is essential that you
+ <a href="https://www.apache.org/info/verification.html">verify the integrity</a>
+ of downloaded files, preferably using the <code>PGP</code> signature (<code>*.asc</code> files);
+ failing that using the <code>SHA512</code> hash (<code>*.sha512</code> checksum files).
+ </p>
+ <p>
+ The <a href="https://www.apache.org/dist/commons/KEYS">KEYS</a>
+ file contains the public PGP keys used by Apache Commons developers
+ to sign releases.
+ </p>
+ </subsection>
+ </section>
+ <section name="Apache Commons Lang 3.12.0 (Java 8+)">
+ <subsection name="Binaries">
+ <table>
+ <tr>
+ <td><a href="[preferred]/commons/lang/binaries/commons-lang3-3.12.0-bin.tar.gz">commons-lang3-3.12.0-bin.tar.gz</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/binaries/commons-lang3-3.12.0-bin.tar.gz.sha512">sha512</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/binaries/commons-lang3-3.12.0-bin.tar.gz.asc">pgp</a></td>
+ </tr>
+ <tr>
+ <td><a href="[preferred]/commons/lang/binaries/commons-lang3-3.12.0-bin.zip">commons-lang3-3.12.0-bin.zip</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/binaries/commons-lang3-3.12.0-bin.zip.sha512">sha512</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/binaries/commons-lang3-3.12.0-bin.zip.asc">pgp</a></td>
+ </tr>
+ </table>
+ </subsection>
+ <subsection name="Source">
+ <table>
+ <tr>
+ <td><a href="[preferred]/commons/lang/source/commons-lang3-3.12.0-src.tar.gz">commons-lang3-3.12.0-src.tar.gz</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/source/commons-lang3-3.12.0-src.tar.gz.sha512">sha512</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/source/commons-lang3-3.12.0-src.tar.gz.asc">pgp</a></td>
+ </tr>
+ <tr>
+ <td><a href="[preferred]/commons/lang/source/commons-lang3-3.12.0-src.zip">commons-lang3-3.12.0-src.zip</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/source/commons-lang3-3.12.0-src.zip.sha512">sha512</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/source/commons-lang3-3.12.0-src.zip.asc">pgp</a></td>
+ </tr>
+ </table>
+ </subsection>
+ </section>
+ <section name="Apache Commons Lang 2.6 (Requires Java 1.2 or later)">
+ <subsection name="Binaries">
+ <table>
+ <tr>
+ <td><a href="[preferred]/commons/lang/binaries/commons-lang-2.6-bin.tar.gz">commons-lang-2.6-bin.tar.gz</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/binaries/commons-lang-2.6-bin.tar.gz.sha512">sha512</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/binaries/commons-lang-2.6-bin.tar.gz.asc">pgp</a></td>
+ </tr>
+ <tr>
+ <td><a href="[preferred]/commons/lang/binaries/commons-lang-2.6-bin.zip">commons-lang-2.6-bin.zip</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/binaries/commons-lang-2.6-bin.zip.sha512">sha512</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/binaries/commons-lang-2.6-bin.zip.asc">pgp</a></td>
+ </tr>
+ </table>
+ </subsection>
+ <subsection name="Source">
+ <table>
+ <tr>
+ <td><a href="[preferred]/commons/lang/source/commons-lang-2.6-src.tar.gz">commons-lang-2.6-src.tar.gz</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/source/commons-lang-2.6-src.tar.gz.sha512">sha512</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/source/commons-lang-2.6-src.tar.gz.asc">pgp</a></td>
+ </tr>
+ <tr>
+ <td><a href="[preferred]/commons/lang/source/commons-lang-2.6-src.zip">commons-lang-2.6-src.zip</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/source/commons-lang-2.6-src.zip.sha512">sha512</a></td>
+ <td><a href="https://www.apache.org/dist/commons/lang/source/commons-lang-2.6-src.zip.asc">pgp</a></td>
+ </tr>
+ </table>
+ </subsection>
+ </section>
+ <section name="Archives">
+ <p>
+ Older releases can be obtained from the archives.
+ </p>
+ <ul>
+ <li class="download"><a href="[preferred]/commons/lang/">browse download area</a></li>
+ <li><a href="https://archive.apache.org/dist/commons/lang/">archives...</a></li>
+ </ul>
+ </section>
+ </body>
+</document>
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
new file mode 100644
index 000000000..d80deb05a
--- /dev/null
+++ b/src/site/xdoc/index.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>Home</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+<!-- ================================================== -->
+<section name="Commons Lang">
+
+<p>
+The standard Java libraries fail to provide enough methods for
+manipulation of its core classes. Apache Commons Lang provides
+these extra methods.
+</p>
+
+<p>
+Apache Commons Lang provides a host of helper utilities for the java.lang API, notably
+String manipulation methods, basic numerical methods, object reflection, concurrency, creation and serialization
+and System properties. Additionally it contains basic enhancements to java.util.Date and a series of utilities dedicated to help with
+building methods, such as hashCode, toString and equals.
+</p>
+<p>
+Note that Commons Lang 3.0 (and subsequent versions) use a different package (<em>org.apache.commons.lang3</em>) than the previous versions (<em>org.apache.commons.lang</em>),
+allowing Commons Lang 3 to be used at the same time as Commons Lang 2.
+</p>
+</section>
+<!-- ================================================== -->
+<section name="Documentation">
+<p>
+The package descriptions in the <a href="javadocs/api-release/index.html">Javadoc</a> give an overview of the available features
+and various <a href="project-reports.html">project reports</a> are provided.
+</p>
+<p>
+The Javadoc API documents are available online:
+</p>
+<ul>
+<li>The <a href="javadocs/api-release/index.html">current release</a> [Java 8 and up]</li>
+<li>The <a href="javadocs/api-2.6/index.html">legacy release 2.6</a> [Java 1.2 and up]</li>
+<li>Older releases - see the <a href="changes-report.html">Release History</a> page</li>
+</ul>
+<p>
+The <a href="scm.html">git repository</a> can be
+<a href="https://gitbox.apache.org/repos/asf?p=commons-lang.git">browsed</a>, or you can browse/contribute via <a href="https://github.com/apache/commons-lang">GitHub</a>.
+</p>
+</section>
+<!-- ================================================== -->
+<section name="Release Information">
+<p>Read about the latest release:</p>
+<ul>
+<li>Pull it using a build tool like Maven using a <a href="dependency-info.html">dependency management reference</a>.</li>
+<li>Download the latest release from a <a href="https://commons.apache.org/lang/download_lang.cgi">mirror</a>.</li>
+<li>Read the <a href="changes-report.html">change report</a>.</li>
+<li>Examine the <a href="article3_0.html">2.x to 3.0 upgrade notes</a>.</li>
+<li>Compare major versions via the <a href="lang2-lang3-clirr-report.html">Lang2 to Lang3 Clirr report</a>.</li>
+</ul>
+
+<p>
+For information on previous releases see the <a href="changes-report.html">Release History</a>, and to download previous releases see the <a href="https://archive.apache.org/dist/commons/lang/">Commons Lang Archive</a>.
+</p>
+</section>
+<!-- ================================================== -->
+<section name="Getting Involved">
+<p>
+The <a href="mail-lists.html">commons developer mailing list</a> is the main channel of communication for contributors. Please remember that the lists are shared between all commons components, so prefix your email by [lang]. </p>
+<p>You can also visit the #apache-commons IRC channel on irc.freenode.net or peruse <a href="issue-tracking.html">JIRA</a>. Specific links of interest for JIRA are:</p>
+<ul>
+<li>Ideas looking for code: <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20LANG%20AND%20resolution%20%3D%20Unresolved%20AND%20fixVersion%20%3D%20%22Patch%20Needed%22%20ORDER%20BY%20priority%20DESC">Patch Needed</a></li>
+<li>Issues with patches, looking for reviews: <a href="https://issues.apache.org/jira/issues/?jql=fixVersion%20%3D%20%22Review%20Patch%22%20AND%20project%20%3D%20LANG%20AND%20resolution%20%3D%20Unresolved%20ORDER%20BY%20priority%20DESC">Review Patch</a></li>
+</ul>
+<p>Alternatively you can go through the <em>Needs Work</em> tags in the <a href="taglist.html">TagList report</a>.</p>
+<p>If you'd like to offer up pull requests via GitHub rather than applying patches to JIRA, we have a <a href="https://github.com/apache/commons-lang/">GitHub mirror</a>. </p>
+</section>
+<!-- ================================================== -->
+<section name="Support">
+<p>
+The <a href="mail-lists.html">commons mailing lists</a> act as the main support forum.
+The user list is suitable for most library usage queries.
+The dev list is intended for the development discussion.
+Please remember that the lists are shared between all commons components,
+so prefix your email by [lang].
+</p>
+<p>
+Bug reports and enhancements are also welcomed via the <a href="issue-tracking.html">JIRA</a> issue tracker.
+Please read the instructions carefully.
+</p>
+</section>
+<!-- ================================================== -->
+</body>
+</document>
diff --git a/src/site/xdoc/issue-tracking.xml b/src/site/xdoc/issue-tracking.xml
new file mode 100644
index 000000000..748603569
--- /dev/null
+++ b/src/site/xdoc/issue-tracking.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<!--
+ +======================================================================+
+ |**** ****|
+ |**** THIS FILE IS GENERATED BY THE COMMONS BUILD PLUGIN ****|
+ |**** DO NOT EDIT DIRECTLY ****|
+ |**** ****|
+ +======================================================================+
+ | TEMPLATE FILE: issue-tracking-template.xml |
+ | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |
+ +======================================================================+
+ | |
+ | 1) Re-generate using: mvn commons-build:jira-page |
+ | |
+ | 2) Set the following properties in the component's pom: |
+ | - commons.jira.id (required, alphabetic, upper case) |
+ | - commons.jira.pid (required, numeric) |
+ | |
+ | 3) Example Properties |
+ | |
+ | <properties> |
+ | <commons.jira.id>MATH</commons.jira.id> |
+ | <commons.jira.pid>12310485</commons.jira.pid> |
+ | </properties> |
+ | |
+ +======================================================================+
+-->
+<document>
+ <properties>
+ <title>Apache Commons Lang Issue tracking</title>
+ <author email="dev@commons.apache.org">Apache Commons Documentation Team</author>
+ </properties>
+ <body>
+
+ <section name="Apache Commons Lang Issue tracking">
+ <p>
+ Apache Commons Lang uses <a href="https://issues.apache.org/jira/">ASF JIRA</a> for tracking issues.
+ See the <a href="https://issues.apache.org/jira/browse/LANG">Apache Commons Lang JIRA project page</a>.
+ </p>
+
+ <p>
+ To use JIRA you may need to <a href="https://issues.apache.org/jira/secure/Signup!default.jspa">create an account</a>
+ (if you have previously created/updated Commons issues using Bugzilla an account will have been automatically
+ created and you can use the <a href="https://issues.apache.org/jira/secure/ForgotLoginDetails.jspa">Forgot Password</a>
+ page to get a new password).
+ </p>
+
+ <p>
+ If you would like to report a bug, or raise an enhancement request with
+ Apache Commons Lang please do the following:
+ <ol>
+ <li><a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&amp;pid=12310481&amp;sorter/field=issuekey&amp;sorter/order=DESC&amp;status=1&amp;status=3&amp;status=4">Search existing open bugs</a>.
+ If you find your issue listed then please add a comment with your details.</li>
+ <li><a href="mail-lists.html">Search the mailing list archive(s)</a>.
+ You may find your issue or idea has already been discussed.</li>
+ <li>Decide if your issue is a bug or an enhancement.</li>
+ <li>Submit either a <a href="https://issues.apache.org/jira/secure/CreateIssueDetails!init.jspa?pid=12310481&amp;issuetype=1&amp;priority=4&amp;assignee=-1">bug report</a>
+ or <a href="https://issues.apache.org/jira/secure/CreateIssueDetails!init.jspa?pid=12310481&amp;issuetype=4&amp;priority=4&amp;assignee=-1">enhancement request</a>.</li>
+ </ol>
+ </p>
+
+ <p>
+ Please also remember these points:
+ <ul>
+ <li>the more information you provide, the better we can help you</li>
+ <li>test cases are vital, particularly for any proposed enhancements</li>
+ <li>the developers of Apache Commons Lang are all unpaid volunteers</li>
+ </ul>
+ </p>
+
+ <p>
+ For more information on subversion and creating patches see the
+ <a href="https://www.apache.org/dev/contributors.html">Apache Contributors Guide</a>.
+ </p>
+
+ <p>
+ You may also find these links useful:
+ <ul>
+ <li><a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&amp;pid=12310481&amp;sorter/field=issuekey&amp;sorter/order=DESC&amp;status=1&amp;status=3&amp;status=4">All Open Apache Commons Lang bugs</a></li>
+ <li><a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&amp;pid=12310481&amp;sorter/field=issuekey&amp;sorter/order=DESC&amp;status=5&amp;status=6">All Resolved Apache Commons Lang bugs</a></li>
+ <li><a href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&amp;pid=12310481&amp;sorter/field=issuekey&amp;sorter/order=DESC">All Apache Commons Lang bugs</a></li>
+ </ul>
+ </p>
+ </section>
+ </body>
+</document>
diff --git a/src/site/xdoc/mail-lists.xml b/src/site/xdoc/mail-lists.xml
new file mode 100644
index 000000000..380401253
--- /dev/null
+++ b/src/site/xdoc/mail-lists.xml
@@ -0,0 +1,205 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<!--
+ +======================================================================+
+ |**** ****|
+ |**** THIS FILE IS GENERATED BY THE COMMONS BUILD PLUGIN ****|
+ |**** DO NOT EDIT DIRECTLY ****|
+ |**** ****|
+ +======================================================================+
+ | TEMPLATE FILE: mail-lists-template.xml |
+ | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |
+ +======================================================================+
+ | |
+ | 1) Re-generate using: mvn commons-build:mail-page |
+ | |
+ | 2) Set the following properties in the component's pom: |
+ | - commons.componentid (required, alphabetic, lower case) |
+ | |
+ | 3) Example Properties |
+ | |
+ | <properties> |
+ | <commons.componentid>math</commons.componentid> |
+ | </properties> |
+ | |
+ +======================================================================+
+-->
+<document>
+ <properties>
+ <title>Apache Commons Lang Mailing Lists</title>
+ <author email="dev@commons.apache.org">Apache Commons Documentation Team</author>
+ </properties>
+ <body>
+
+ <section name="Overview">
+ <p>
+ <a href="index.html">Apache Commons Lang</a> shares mailing lists with all the other
+ <a href="https://commons.apache.org/components.html">Commons Components</a>.
+ To make it easier for people to only read messages related to components they are interested in,
+ the convention in Commons is to prefix the subject line of messages with the component's name,
+ for example:
+ <ul>
+ <li>[lang] Problem with the ...</li>
+ </ul>
+ </p>
+ <p>
+ Questions related to the usage of Apache Commons Lang should be posted to the
+ <a href="https://mail-archives.apache.org/mod_mbox/commons-user/">User List</a>.
+ <br />
+ The <a href="https://mail-archives.apache.org/mod_mbox/commons-dev/">Developer List</a>
+ is for questions and discussion related to the development of Apache Commons Lang.
+ <br />
+ Please do not cross-post; developers are also subscribed to the user list.
+ <br />
+ You must be subscribed to post to the mailing lists. Follow the Subscribe links below
+ to subscribe.
+ </p>
+ <p>
+ <strong>Note:</strong> please don't send patches or attachments to any of the mailing lists.
+ Patches are best handled via the <a href="issue-tracking.html">Issue Tracking</a> system.
+ Otherwise, please upload the file to a public server and include the URL in the mail.
+ </p>
+ </section>
+
+ <section name="Apache Commons Lang Mailing Lists">
+ <p>
+ <strong>Please prefix the subject line of any messages for <a href="index.html">Apache Commons Lang</a>
+ with <i>[lang]</i></strong> - <i>thanks!</i>
+ <br />
+ <br />
+ </p>
+
+ <table>
+ <tr>
+ <th>Name</th>
+ <th>Subscribe</th>
+ <th>Unsubscribe</th>
+ <th>Post</th>
+ <th>Archive</th>
+ <th>Other Archives</th>
+ </tr>
+
+
+ <tr>
+ <td>
+ <strong>Commons User List</strong>
+ <br /><br />
+ Questions on using Apache Commons Lang.
+ <br /><br />
+ </td>
+ <td><a href="mailto:user-subscribe@commons.apache.org">Subscribe</a></td>
+ <td><a href="mailto:user-unsubscribe@commons.apache.org">Unsubscribe</a></td>
+ <td><a href="mailto:user@commons.apache.org?subject=[lang]">Post</a></td>
+ <td><a href="https://mail-archives.apache.org/mod_mbox/commons-user/">mail-archives.apache.org</a></td>
+ <td><a href="https://markmail.org/list/org.apache.commons.users/">markmail.org</a><br />
+ <a href="https://www.mail-archive.com/user@commons.apache.org/">www.mail-archive.com</a><br />
+ <a href="https://news.gmane.org/gmane.comp.jakarta.commons.devel">news.gmane.org</a>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td>
+ <strong>Commons Developer List</strong>
+ <br /><br />
+ Discussion of development of Apache Commons Lang.
+ <br /><br />
+ </td>
+ <td><a href="mailto:dev-subscribe@commons.apache.org">Subscribe</a></td>
+ <td><a href="mailto:dev-unsubscribe@commons.apache.org">Unsubscribe</a></td>
+ <td><a href="mailto:dev@commons.apache.org?subject=[lang]">Post</a></td>
+ <td><a href="https://mail-archives.apache.org/mod_mbox/commons-dev/">mail-archives.apache.org</a></td>
+ <td><a href="https://markmail.org/list/org.apache.commons.dev/">markmail.org</a><br />
+ <a href="https://www.mail-archive.com/dev@commons.apache.org/">www.mail-archive.com</a><br />
+ <a href="https://news.gmane.org/gmane.comp.jakarta.commons.devel">news.gmane.org</a>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td>
+ <strong>Commons Issues List</strong>
+ <br /><br />
+ Only for e-mails automatically generated by the <a href="issue-tracking.html">issue tracking</a> system.
+ <br /><br />
+ </td>
+ <td><a href="mailto:issues-subscribe@commons.apache.org">Subscribe</a></td>
+ <td><a href="mailto:issues-unsubscribe@commons.apache.org">Unsubscribe</a></td>
+ <td><i>read only</i></td>
+ <td><a href="https://mail-archives.apache.org/mod_mbox/commons-issues/">mail-archives.apache.org</a></td>
+ <td><a href="https://markmail.org/list/org.apache.commons.issues/">markmail.org</a><br />
+ <a href="https://www.mail-archive.com/issues@commons.apache.org/">www.mail-archive.com</a>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td>
+ <strong>Commons Commits List</strong>
+ <br /><br />
+ Only for e-mails automatically generated by the <a href="scm.html">source control</a> system.
+ <br /><br />
+ </td>
+ <td><a href="mailto:commits-subscribe@commons.apache.org">Subscribe</a></td>
+ <td><a href="mailto:commits-unsubscribe@commons.apache.org">Unsubscribe</a></td>
+ <td><i>read only</i></td>
+ <td><a href="https://mail-archives.apache.org/mod_mbox/commons-commits/">mail-archives.apache.org</a></td>
+ <td><a href="https://markmail.org/list/org.apache.commons.commits/">markmail.org</a><br />
+ <a href="https://www.mail-archive.com/commits@commons.apache.org/">www.mail-archive.com</a>
+ </td>
+ </tr>
+
+ </table>
+
+ </section>
+ <section name="Apache Mailing Lists">
+ <p>
+ Other mailing lists which you may find useful include:
+ </p>
+
+ <table>
+ <tr>
+ <th>Name</th>
+ <th>Subscribe</th>
+ <th>Unsubscribe</th>
+ <th>Post</th>
+ <th>Archive</th>
+ <th>Other Archives</th>
+ </tr>
+ <tr>
+ <td>
+ <strong>Apache Announce List</strong>
+ <br /><br />
+ General announcements of Apache project releases.
+ <br /><br />
+ </td>
+ <td><a class="externalLink" href="mailto:announce-subscribe@apache.org">Subscribe</a></td>
+ <td><a class="externalLink" href="mailto:announce-unsubscribe@apache.org">Unsubscribe</a></td>
+ <td><i>read only</i></td>
+ <td><a class="externalLink" href="https://mail-archives.apache.org/mod_mbox/www-announce/">mail-archives.apache.org</a></td>
+ <td><a class="externalLink" href="https://markmail.org/list/org.apache.announce/">markmail.org</a><br />
+ <a class="externalLink" href="https://old.nabble.com/Apache-News-and-Announce-f109.html">old.nabble.com</a><br />
+ <a class="externalLink" href="https://www.mail-archive.com/announce@apache.org/">www.mail-archive.com</a><br />
+ <a class="externalLink" href="https://news.gmane.org/gmane.comp.apache.announce">news.gmane.org</a>
+ </td>
+ </tr>
+ </table>
+
+ </section>
+ </body>
+</document>
diff --git a/src/site/xdoc/proposal.xml b/src/site/xdoc/proposal.xml
new file mode 100644
index 000000000..fc9477f25
--- /dev/null
+++ b/src/site/xdoc/proposal.xml
@@ -0,0 +1,97 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+<properties>
+<title>Proposal for Lang Package</title>
+</properties>
+<body>
+
+
+<section name="Proposal for Lang Package">
+
+
+
+<subsection name="(0) Rationale">
+
+<p>The standard Java libraries fail to provide enough methods for
+manipulation of its main components. The <em>Lang</em> Package provides
+these extra methods. There are other classes which might justifiably
+be included in java.lang someday, this package also provides for them.</p>
+
+
+</subsection>
+<subsection name="(1) Scope of the Package">
+
+<p>This proposal is to create a package of Java utility classes for the
+classes that are in java.lang's hierarchy, or are considered to be so
+standard as to justify existence in java.lang. The <em>Lang</em> Package
+also applies to primitives and arrays.</p>
+
+
+</subsection>
+<subsection name="(1.5) Interaction With Other Packages">
+
+<p><em>Lang</em> relies only on standard JDK 1.2 (or later) APIs for
+production deployment. It utilizes the JUnit unit testing framework for
+developing and executing unit tests, but this is of interest only to
+developers of the component. Lang will be a dependency for
+several existing components in the open source world.</p>
+
+<p>No external configuration files are utilized.</p>
+
+
+</subsection>
+<subsection name="(2) Initial Source of the Package">
+
+<p>The initial classes came from the Commons.Util subproject.</p>
+
+<p>The proposed package name for the new component is
+<code>org.apache.commons.lang</code>.</p>
+
+
+</subsection>
+<subsection name="(3) Required Jakarta-Commons Resources">
+
+<ul>
+<li>CVS Repository - New directory <code>lang</code> in the
+ <code>jakarta-commons</code> CVS repository.</li>
+<li>Mailing List - Discussions will take place on the general
+ <em>dev@commons.apache.org</em> mailing list. To help
+ list subscribers identify messages of interest, it is suggested that
+ the message subject of messages about this component be prefixed with
+ [lang].</li>
+<li>Bugzilla - New component "Lang" under the "Commons" product
+ category, with appropriate version identifiers as needed.</li>
+<li>Jyve FAQ - New category "commons-lang" (when available).</li>
+</ul>
+
+
+</subsection>
+<subsection name="(4) Initial Committers">
+
+<p>The initial committers on the Lang component shall be as follows:
+<ul>
+<li>Henri Yandell (bayard)</li>
+<li>Daniel Rall (dlr)</li>
+<li>Stephen Colebourne (scolebourne)</li>
+</ul>
+</p>
+
+</subsection>
+</section>
+</body>
+</document>
diff --git a/src/site/xdoc/upgradeto2_0.xml b/src/site/xdoc/upgradeto2_0.xml
new file mode 100644
index 000000000..e7434f8a9
--- /dev/null
+++ b/src/site/xdoc/upgradeto2_0.xml
@@ -0,0 +1,688 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>2.0 Release Notes</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="Lang 2.0 Release Notes">
+<p>
+These are the release notes and advice for upgrading Commons-Lang from
+version 1.0 to version 2.0.
+<source>
+INTRODUCTION:
+
+This document contains the release notes for this version of the Commons
+Lang package. Commons Lang is a set of utility functions and reusable
+components that should be a help in any Java environment.
+
+This release has involved a major clean and tidy exercise.
+Javadoc and Tests are now much more thorough.
+All methods should now be much clearer in what they do in unusual cases.
+
+
+INCOMPATIBLE CHANGES:
+Some StringUtils methods have changed functionality from 1.0:
+ isEmpty()
+ chomp(String)
+ chomp(String,String)
+ swapCase(String)
+Numerous other methods have changed null handling to accept nulls gracefully.
+As with all major version releases, check your code for incompatibilities.
+
+
+NEW FEATURES:
+
+Since the release of the 1.0 package the following classes have been added:
+
+lang package:
+ ArrayUtils
+ BitField
+ BooleanUtils
+ CharRange (previously package scoped)
+ ClassUtils
+ StringEscapeUtils
+ WordUtils
+ IllegalClassException
+ IncompleteArgumentException
+ NotImplementedException
+ NullArgumentException
+ SerializationException
+ UnhandledException
+ Validate
+
+
+math sub-package:
+ IntRange
+ LongRange
+ Range
+ DoubleRange
+ JVMRandom
+ NumberRange
+ FloatRange
+ NumberUtils
+ Fraction
+ RandomUtils
+
+time sub-package:
+ DateFormatUtils
+ FastDateFormat
+ DateUtils
+ StopWatch
+
+Since the release of the 1.0 package the following classes have been changed:
+
+lang:
+ CharSet:
+ Added factory method, equals and hashCode().
+ Better defined and tested the set syntax.
+ CharSetUtils:
+ added keep method: keep any characters specified in the CharSet string
+ RandomStringUtils:
+ random method: overloaded to allow passing in of a Random class
+ SerializationUtils:
+ added empty constructor
+ StringUtils:
+ isEmpty() changed to not trim
+ chomp() changed to be more like Perl.
+ swapCase() no longer word based, but no difference if you pass in ASCII
+ Various methods changed in the handling of null (less exceptions).
+ Many new methods.
+ Various methods deprecated.
+ SystemUtils:
+ isJavaVersionAtLeast(int) added. getJavaVersion() deprecated.
+ host of new constants.
+
+enum:
+ Enum:
+ getEnumClass(Class) added
+ EnumUtils:
+ Removed irrelevant Comparable/Serializable interfaces.
+
+exception:
+ NestableDelegate:
+ Gained many new methods for dissecting an Exception.
+ ExceptionUtils:
+ Gained many new methods to improve handling of nested stack traces.
+
+builder:
+ ReflectionToStringBuilder:
+ Handy class added for creating default toStrings.
+ All other builder classes received a set of new methods.
+
+
+BUG FIXES:
+
+ID Sev Pri Plt Owner State Result Summary
+13367 [PATCH] StringUtil enhancement
+13391 Javadoc nit
+13771 Additional Lang Method Suggestions
+14306 NullPointerException in CompareToBuilder
+14357 static option for reversing the stacktrace
+14447 ToStringBuilder doesn't work well in subclasses
+14883 StringUtils.countMatches loops forever if substring empty
+14884 NumberRange inaccurate for Long, etc.
+14985 More flexibility for getRootCause in ExceptionUtils
+15154 SystemUtils.IS_JAVA_1_5 Javadoc is wrong
+15257 Hierarchy support in ToStringBuilder.reflectionToString()
+15438 ArrayUtils.contains()
+15439 Enum does not support inner sub-classes
+15986 Infinite loop in ToStringBuilder.reflectionToString for inne
+16076 Example in Javadoc for ToStringBuilder wrong for append.
+16193 Hierarchy support in EqualsBuilder.reflectionEquals()
+16202 typo in the javadoc example code
+16204 Infinite loop in StringUtils.replace(text, repl, with) + FIX
+16227 Added class hierarchy support to CompareToBuilder.reflectionC
+16228 Added class hierarchy support to HashCodeBuilder.reflectionHa
+16284 MethodUtils: Removed unused code/unused local vars.
+16341 No Javadoc for NestableDelegate
+16622 Removed compile warning in FastDateFormat
+16669 Javadoc Errata
+16676 StackOverflow due to ToStringBuilder
+16689 ExceptionUtils new methods.
+16690 Specify initial size for Enum's HashMap.
+16787 Removed compile warning in ObjectUtils
+17250 [Lang] Should ToStringBuilder.reflectionToString handle arra
+17654 EnumUtils nit: The import java.io.Serializable is never used
+17882 Add join(..., char c) to StringUtils (and some performance f
+18077 StringUtils.chomp does not match Perl
+18723 RandomStringUtils infinite loop with length &lt; 1
+18836 test.lang fails if compiled with non iso-8859-1 locales
+18948 Resurrect the WordWrapUtils from commons-sandbox/utils
+19296 [Lang] What to do with FastDateFormat unused private constru
+19364 [Lang] time unit tests fail on Sundays
+19756 [lang] java.lang.ExceptionInInitializerError thrown by JVMRa
+19880 [lang] patch and test case fixing problem with RandomStringU
+20165 [LANG] SystemUtils does not play nice in an Applet
+20538 [lang] NumberUtils.isNumber allows illegal trailing characte
+20592 [lang] RandomStringUtils.randomAlpha methods omit 'z'
+20603 [lang] Make NestableDelegate methods public instead of packa
+20632 Refactored reflection feature of ToStringBuilder into new Re
+20652 StringUtils.chopNewLine - StringIndexOutOfBoundsException
+21021 [PATCH] reduce object creation in ToStringBuilder
+21068 [lang] [PATCH] NumberUtils min/max, BooleanUtils.xor, and Ar
+21099 [lang][PATCH] Unused field 'startFinal' in DateIterator
+21715 The javadoc says "Mac" instead of "OS/2"
+21734 [PATCH] all NumberUtils.createXXX(String) methods handle null
+21750 [lang] StringUtils javadoc and test enhancements
+21758 [lang] lang.builder classes javadoc edits (mostly typo fixes)
+21797 [lang] Add javadoc examples and tests for StringUtils
+21809 [lang] maven-beta10 checkstyle problem
+21904 NumberUtils.createBigDecimal("") NPE in Sun 1.3.1_08
+21952 [lang] Improved tests, javadoc for CharSetUtils, StringEscapeUtils
+22091 Adding tolerance to double[] search methods in ArrayUtils
+22094 A small, but important javadoc fix for Fraction proper whole/numerator
+22095 [lang] Javadoc, tests improvements for CharSet, CharSetUtils
+22098 [lang] Improve util.Validate tests
+22245 [lang] test.time fails in Japanese (non-us) locale.
+22286 [lang] Missing @since tags
+22367 Typo in documentation
+22386 [lang] Improve javadoc and overflow behavior of Fraction
+
+
+DEPRECATIONS:
+
+lang:
+ NumberRange:
+ now deprecated, see math subpackage
+ NumberUtils:
+ now deprecated, see math subpackage
+
+
+CHANGES: [In 'diff' format]
+
+Jar changes
+===========
+&gt; org.apache.commons.lang.math.Range
+&gt; org.apache.commons.lang.math.FloatRange
+&gt; org.apache.commons.lang.math.NumberUtils
+&gt; org.apache.commons.lang.math.JVMRandom
+&gt; org.apache.commons.lang.math.IntRange
+&gt; org.apache.commons.lang.math.LongRange
+&gt; org.apache.commons.lang.math.DoubleRange
+&gt; org.apache.commons.lang.math.NumberRange
+&gt; org.apache.commons.lang.math.Fraction
+&gt; org.apache.commons.lang.math.RandomUtils
+&gt; org.apache.commons.lang.time.FastDateFormat
+&gt; org.apache.commons.lang.time.DateUtils$DateIterator
+&gt; org.apache.commons.lang.time.DateUtils
+&gt; org.apache.commons.lang.time.FastDateFormat$UnpaddedMonthField
+&gt; org.apache.commons.lang.time.FastDateFormat$StringLiteral
+&gt; org.apache.commons.lang.time.FastDateFormat$TwelveHourField
+&gt; org.apache.commons.lang.time.FastDateFormat$NumberRule
+&gt; org.apache.commons.lang.time.FastDateFormat$CharacterLiteral
+&gt; org.apache.commons.lang.time.FastDateFormat$TimeZoneNumberRule
+&gt; org.apache.commons.lang.time.FastDateFormat$TimeZoneNameRule
+&gt; org.apache.commons.lang.time.DateFormatUtils
+&gt; org.apache.commons.lang.time.FastDateFormat$TwoDigitMonthField
+&gt; org.apache.commons.lang.time.DurationFormatUtils
+&gt; org.apache.commons.lang.time.FastDateFormat$TimeZoneDisplayKey
+&gt; org.apache.commons.lang.time.FastDateFormat$UnpaddedNumberField
+&gt; org.apache.commons.lang.time.FastDateFormat$PaddedNumberField
+&gt; org.apache.commons.lang.time.StopWatch
+&gt; org.apache.commons.lang.time.FastDateFormat$TwentyFourHourField
+&gt; org.apache.commons.lang.time.FastDateFormat$Rule
+&gt; org.apache.commons.lang.time.FastDateFormat$TwoDigitNumberField
+&gt; org.apache.commons.lang.time.FastDateFormat$TextField
+&gt; org.apache.commons.lang.time.FastDateFormat$Pair
+&gt; org.apache.commons.lang.time.FastDateFormat$TwoDigitYearField
+&gt; org.apache.commons.lang.util.IdentifierUtils$StringNumericIdentifierFactory
+&gt; org.apache.commons.lang.util.IdentifierUtils$StringSessionIdentifierFactory
+&gt; org.apache.commons.lang.util.IdentifierUtils$LongNumericIdentifierFactory
+&gt; org.apache.commons.lang.util.IdentifierUtils$StringAlphanumericIdentifierFactory
+&gt; org.apache.commons.lang.util.Validate
+&gt; org.apache.commons.lang.util.LongIdentifierFactory
+&gt; org.apache.commons.lang.util.IdentifierUtils$1
+&gt; org.apache.commons.lang.util.StringIdentifierFactory
+&gt; org.apache.commons.lang.util.IdentifierUtils
+&gt; org.apache.commons.lang.util.IdentifierFactory
+&gt; org.apache.commons.lang.util.BitField
+&gt; org.apache.commons.lang.Entities
+&gt; org.apache.commons.lang.Entities$LookupEntityMap
+&gt; org.apache.commons.lang.NotImplementedException
+&gt; org.apache.commons.lang.NullArgumentException
+&lt; org.apache.commons.lang.ObjectUtils$1
+---
+&gt; org.apache.commons.lang.StringPrintWriter
+&gt; org.apache.commons.lang.UnhandledException
+&gt; org.apache.commons.lang.Entities$HashEntityMap
+&gt; org.apache.commons.lang.Entities$ArrayEntityMap
+&gt; org.apache.commons.lang.Entities$EntityMap
+&gt; org.apache.commons.lang.IntHashMap
+&gt; org.apache.commons.lang.BooleanUtils
+&gt; org.apache.commons.lang.IncompleteArgumentException
+&gt; org.apache.commons.lang.Entities$PrimitiveEntityMap
+&gt; org.apache.commons.lang.Entities$TreeEntityMap
+&gt; org.apache.commons.lang.WordUtils
+&gt; org.apache.commons.lang.StringEscapeUtils
+&gt; org.apache.commons.lang.ArrayUtils
+&gt; org.apache.commons.lang.Entities$BinaryEntityMap
+&gt; org.apache.commons.lang.ClassUtils
+&gt; org.apache.commons.lang.IntHashMap$Entry
+&gt; org.apache.commons.lang.IllegalClassException
+&gt; org.apache.commons.lang.builder.ReflectionToStringBuilder$1
+&gt; org.apache.commons.lang.builder.ReflectionToStringBuilder
+&gt; org.apache.commons.lang.Entities$MapIntMap
+
+
+Class changes
+=============
+org.apache.commons.lang.enum.EnumUtils
+--------------------
+&lt; public abstract class org.apache.commons.lang.enum.EnumUtils extends java.lang.Object implements java.lang.Comparable, java.io.Serializable {
+---
+&gt; public class org.apache.commons.lang.enum.EnumUtils extends java.lang.Object {
+&gt; public org.apache.commons.lang.enum.EnumUtils();
+
+org.apache.commons.lang.enum.Enum$Entry
+--------------------
+&gt; final java.util.Map unmodifiableMap;
+&gt; final java.util.List unmodifiableList;
+
+org.apache.commons.lang.enum.Enum
+--------------------
+&gt; protected transient java.lang.String iToString;
+&gt; static java.lang.Class class$org$apache$commons$lang$enum$ValuedEnum;
+&gt; public java.lang.Class getEnumClass();
+
+org.apache.commons.lang.enum.ValuedEnum
+--------------------
+&gt; static {};
+
+org.apache.commons.lang.StringUtils
+--------------------
+&gt; public static final java.lang.String EMPTY;
+&gt; public static boolean isEmpty(java.lang.String);
+&gt; public static boolean isNotEmpty(java.lang.String);
+&gt; public static boolean isBlank(java.lang.String);
+&gt; public static boolean isNotBlank(java.lang.String);
+&lt; public static java.lang.String deleteSpaces(java.lang.String);
+&lt; public static java.lang.String deleteWhitespace(java.lang.String);
+&lt; public static boolean isNotEmpty(java.lang.String);
+&lt; public static boolean isEmpty(java.lang.String);
+---
+&gt; public static java.lang.String trimToNull(java.lang.String);
+&gt; public static java.lang.String trimToEmpty(java.lang.String);
+&gt; public static java.lang.String strip(java.lang.String);
+&gt; public static java.lang.String stripToNull(java.lang.String);
+&gt; public static java.lang.String stripToEmpty(java.lang.String);
+&gt; public static java.lang.String strip(java.lang.String, java.lang.String);
+&gt; public static java.lang.String stripStart(java.lang.String, java.lang.String);
+&gt; public static java.lang.String stripEnd(java.lang.String, java.lang.String);
+&gt; public static java.lang.String stripAll(java.lang.String[])[];
+&gt; public static java.lang.String stripAll(java.lang.String[], java.lang.String)[];
+&gt; public static int indexOf(java.lang.String, char);
+&gt; public static int indexOf(java.lang.String, char, int);
+&gt; public static int indexOf(java.lang.String, java.lang.String);
+&gt; public static int indexOf(java.lang.String, java.lang.String, int);
+&gt; public static int lastIndexOf(java.lang.String, char);
+&gt; public static int lastIndexOf(java.lang.String, char, int);
+&gt; public static int lastIndexOf(java.lang.String, java.lang.String);
+&gt; public static int lastIndexOf(java.lang.String, java.lang.String, int);
+&gt; public static boolean contains(java.lang.String, char);
+&gt; public static boolean contains(java.lang.String, java.lang.String);
+&gt; public static int indexOfAny(java.lang.String, char[]);
+&gt; public static int indexOfAny(java.lang.String, java.lang.String);
+&gt; public static int indexOfAnyBut(java.lang.String, char[]);
+&gt; public static int indexOfAnyBut(java.lang.String, java.lang.String);
+&gt; public static boolean containsOnly(java.lang.String, char[]);
+&gt; public static boolean containsOnly(java.lang.String, java.lang.String);
+&gt; public static boolean containsNone(java.lang.String, char[]);
+&gt; public static boolean containsNone(java.lang.String, java.lang.String);
+&gt; public static java.lang.String substringBefore(java.lang.String, java.lang.String);
+&gt; public static java.lang.String substringAfter(java.lang.String, java.lang.String);
+&gt; public static java.lang.String substringBeforeLast(java.lang.String, java.lang.String);
+&gt; public static java.lang.String substringAfterLast(java.lang.String, java.lang.String);
+&gt; public static java.lang.String substringBetween(java.lang.String, java.lang.String);
+&gt; public static java.lang.String substringBetween(java.lang.String, java.lang.String, java.lang.String);
+&gt; public static java.lang.String getNestedString(java.lang.String, java.lang.String);
+&gt; public static java.lang.String getNestedString(java.lang.String, java.lang.String, java.lang.String);
+&gt; public static java.lang.String split(java.lang.String, char)[];
+&gt; public static java.lang.String join(java.lang.Object[]);
+&gt; public static java.lang.String join(java.lang.Object[], char);
+&gt; public static java.lang.String join(java.util.Iterator, char);
+&gt; public static java.lang.String deleteSpaces(java.lang.String);
+&gt; public static java.lang.String deleteWhitespace(java.lang.String);
+&gt; public static java.lang.String replaceChars(java.lang.String, char, char);
+&gt; public static java.lang.String replaceChars(java.lang.String, java.lang.String, java.lang.String);
+&lt; public static java.lang.String center(java.lang.String, int);
+&lt; public static java.lang.String center(java.lang.String, int, java.lang.String);
+---
+&gt; public static java.lang.String overlay(java.lang.String, java.lang.String, int, int);
+&gt; public static java.lang.String rightPad(java.lang.String, int, char);
+&gt; public static java.lang.String leftPad(java.lang.String, int, char);
+&lt; public static java.lang.String strip(java.lang.String);
+&lt; public static java.lang.String strip(java.lang.String, java.lang.String);
+&lt; public static java.lang.String stripAll(java.lang.String[])[];
+&lt; public static java.lang.String stripAll(java.lang.String[], java.lang.String)[];
+&lt; public static java.lang.String stripEnd(java.lang.String, java.lang.String);
+&lt; public static java.lang.String stripStart(java.lang.String, java.lang.String);
+---
+&gt; public static java.lang.String center(java.lang.String, int);
+&gt; public static java.lang.String center(java.lang.String, int, char);
+&gt; public static java.lang.String center(java.lang.String, int, java.lang.String);
+&lt; public static java.lang.String uncapitalise(java.lang.String);
+---
+&gt; public static java.lang.String capitalize(java.lang.String);
+&gt; public static java.lang.String uncapitalize(java.lang.String);
+&gt; public static java.lang.String uncapitalise(java.lang.String);
+&lt; public static java.lang.String getNestedString(java.lang.String, java.lang.String);
+&lt; public static java.lang.String getNestedString(java.lang.String, java.lang.String, java.lang.String);
+&gt; public static boolean isWhitespace(java.lang.String);
+&gt; public static java.lang.String reverseDelimited(java.lang.String, char);
+&gt; public static java.lang.String abbreviate(java.lang.String, int);
+&gt; public static java.lang.String abbreviate(java.lang.String, int, int);
+&gt; public static java.lang.String difference(java.lang.String, java.lang.String);
+&gt; public static int differenceAt(java.lang.String, java.lang.String);
+&lt; public static boolean containsOnly(java.lang.String, char[]);
+---
+&gt; static {};
+
+org.apache.commons.lang.ObjectUtils
+--------------------
+&gt; public static java.lang.StringBuffer appendIdentityToString(java.lang.StringBuffer, java.lang.Object);
+&gt; public static java.lang.String toString(java.lang.Object);
+&gt; public static java.lang.String toString(java.lang.Object, java.lang.String);
+&lt; org.apache.commons.lang.ObjectUtils.Null(org.apache.commons.lang.ObjectUtils$1);
+---
+&gt; org.apache.commons.lang.ObjectUtils.Null();
+&gt; static {};
+
+org.apache.commons.lang.exception.NestableDelegate
+--------------------
+&gt; public static boolean topDown;
+&gt; public static boolean trimStackFrames;
+&lt; org.apache.commons.lang.exception.NestableDelegate(org.apache.commons.lang.exception.Nestable);
+&lt; java.lang.String getMessage(int);
+&lt; java.lang.String getMessage(java.lang.String);
+&lt; java.lang.String getMessages()[];
+&lt; java.lang.Throwable getThrowable(int);
+&lt; int getThrowableCount();
+&lt; java.lang.Throwable getThrowables()[];
+&lt; int indexOfThrowable(java.lang.Class, int);
+---
+&gt; public org.apache.commons.lang.exception.NestableDelegate(org.apache.commons.lang.exception.Nestable);
+&gt; public java.lang.String getMessage(int);
+&gt; public java.lang.String getMessage(java.lang.String);
+&gt; public java.lang.String getMessages()[];
+&gt; public java.lang.Throwable getThrowable(int);
+&gt; public int getThrowableCount();
+&gt; public java.lang.Throwable getThrowables()[];
+&gt; public int indexOfThrowable(java.lang.Class, int);
+&gt; protected java.lang.String getStackFrames(java.lang.Throwable)[];
+&gt; protected void trimStackFrames(java.util.List);
+
+org.apache.commons.lang.exception.ExceptionUtils
+--------------------
+&lt; protected static final java.lang.String CAUSE_METHOD_NAMES[];
+&lt; protected static final java.lang.Object CAUSE_METHOD_PARAMS[];
+---
+&gt; static final java.lang.String WRAPPED_MARKER;
+&lt; protected org.apache.commons.lang.exception.ExceptionUtils();
+---
+&gt; public org.apache.commons.lang.exception.ExceptionUtils();
+&gt; public static void addCauseMethodName(java.lang.String);
+&gt; public static boolean isThrowableNested();
+&gt; public static boolean isNestedThrowable(java.lang.Throwable);
+&gt; public static void printRootCauseStackTrace(java.lang.Throwable);
+&gt; public static void printRootCauseStackTrace(java.lang.Throwable, java.io.PrintStream);
+&gt; public static void printRootCauseStackTrace(java.lang.Throwable, java.io.PrintWriter);
+&gt; public static java.lang.String getRootCauseStackTrace(java.lang.Throwable)[];
+&gt; public static void removeCommonFrames(java.util.List, java.util.List);
+&gt; public static java.lang.String getFullStackTrace(java.lang.Throwable);
+&gt; static java.util.List getStackFrameList(java.lang.Throwable);
+
+org.apache.commons.lang.CharRange
+--------------------
+&lt; class org.apache.commons.lang.CharRange extends java.lang.Object {
+---
+&gt; public final class org.apache.commons.lang.CharRange extends java.lang.Object implements java.io.Serializable {
+&gt; public org.apache.commons.lang.CharRange(char,boolean);
+&lt; public org.apache.commons.lang.CharRange(java.lang.String,java.lang.String);
+---
+&gt; public org.apache.commons.lang.CharRange(char,char,boolean);
+&lt; public void setStart(char);
+&lt; public void setEnd(char);
+&lt; public boolean isRange();
+&lt; public boolean inRange(char);
+&lt; public void setNegated(boolean);
+---
+&gt; public boolean contains(char);
+&gt; public boolean contains(org.apache.commons.lang.CharRange);
+&gt; public boolean equals(java.lang.Object);
+&gt; public int hashCode();
+&gt; static {};
+
+org.apache.commons.lang.ObjectUtils$1
+--------------------
+&lt; Compiled from ObjectUtils.java
+&lt; class org.apache.commons.lang.ObjectUtils$1 extends java.lang.Object {
+&lt; }
+---
+&gt; Class 'org.apache.commons.lang.ObjectUtils$1' has been removed
+
+org.apache.commons.lang.ObjectUtils$Null
+--------------------
+&lt; org.apache.commons.lang.ObjectUtils.Null(org.apache.commons.lang.ObjectUtils$1);
+---
+&gt; org.apache.commons.lang.ObjectUtils.Null();
+&gt; static {};
+
+org.apache.commons.lang.SystemUtils
+--------------------
+&gt; public static final java.lang.String FILE_ENCODING;
+&gt; public static final java.lang.String JAVA_RUNTIME_NAME;
+&gt; public static final java.lang.String JAVA_RUNTIME_VERSION;
+&gt; public static final java.lang.String JAVA_VM_INFO;
+&gt; public static final java.lang.String USER_COUNTRY;
+&gt; public static final java.lang.String USER_LANGUAGE;
+&gt; public static final float JAVA_VERSION_FLOAT;
+&gt; public static final int JAVA_VERSION_INT;
+&gt; public static final boolean IS_OS_AIX;
+&gt; public static final boolean IS_OS_HP_UX;
+&gt; public static final boolean IS_OS_IRIX;
+&gt; public static final boolean IS_OS_LINUX;
+&gt; public static final boolean IS_OS_MAC;
+&gt; public static final boolean IS_OS_MAC_OSX;
+&gt; public static final boolean IS_OS_OS2;
+&gt; public static final boolean IS_OS_SOLARIS;
+&gt; public static final boolean IS_OS_SUN_OS;
+&gt; public static final boolean IS_OS_WINDOWS;
+&gt; public static final boolean IS_OS_WINDOWS_2000;
+&gt; public static final boolean IS_OS_WINDOWS_95;
+&gt; public static final boolean IS_OS_WINDOWS_98;
+&gt; public static final boolean IS_OS_WINDOWS_ME;
+&gt; public static final boolean IS_OS_WINDOWS_NT;
+&gt; public static final boolean IS_OS_WINDOWS_XP;
+&gt; public static boolean isJavaVersionAtLeast(int);
+
+org.apache.commons.lang.SerializationUtils
+--------------------
+&gt; public org.apache.commons.lang.SerializationUtils();
+
+org.apache.commons.lang.RandomStringUtils
+--------------------
+&gt; public static java.lang.String random(int, int, int, boolean, boolean, char[], java.util.Random);
+
+org.apache.commons.lang.CharSet
+--------------------
+&lt; public class org.apache.commons.lang.CharSet extends java.lang.Object {
+---
+&gt; public class org.apache.commons.lang.CharSet extends java.lang.Object implements java.io.Serializable {
+&gt; public static final org.apache.commons.lang.CharSet EMPTY;
+&gt; public static final org.apache.commons.lang.CharSet ASCII_ALPHA;
+&gt; public static final org.apache.commons.lang.CharSet ASCII_ALPHA_LOWER;
+&gt; public static final org.apache.commons.lang.CharSet ASCII_ALPHA_UPPER;
+&gt; public static final org.apache.commons.lang.CharSet ASCII_NUMERIC;
+&gt; protected static final java.util.Map COMMON;
+&gt; public static org.apache.commons.lang.CharSet getInstance(java.lang.String);
+&gt; protected org.apache.commons.lang.CharSet(java.lang.String);
+&lt; public boolean contains(char);
+&gt; public org.apache.commons.lang.CharRange getCharRanges()[];
+&gt; public boolean contains(char);
+&gt; public boolean equals(java.lang.Object);
+&gt; public int hashCode();
+&gt; static {};
+
+org.apache.commons.lang.CharSetUtils
+--------------------
+&gt; public static java.lang.String keep(java.lang.String, java.lang.String);
+&gt; public static java.lang.String keep(java.lang.String, java.lang.String[]);
+
+org.apache.commons.lang.builder.ToStringBuilder
+--------------------
+&lt; public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle,java.lang.StringBuffer);
+&lt; public static void setDefaultStyle(org.apache.commons.lang.builder.ToStringStyle);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object, boolean);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(long);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(int);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(short);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(char);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char);
+---
+&gt; public static java.lang.String reflectionToString(java.lang.Object, org.apache.commons.lang.builder.ToStringStyle, boolean, java.lang.Class);
+&gt; public static void setDefaultStyle(org.apache.commons.lang.builder.ToStringStyle);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder(java.lang.Object,org.apache.commons.lang.builder.ToStringStyle,java.lang.StringBuffer);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(boolean);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(boolean[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, byte);
+---
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(byte[]);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(char);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(char[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, double);
+---
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(double[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, float);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(boolean);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[], boolean);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(long[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[], boolean);
+---
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(float[]);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(int);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[], boolean);
+---
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(long);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(long[]);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.Object[]);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(short);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[], boolean);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(char[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[], boolean);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(byte[]);
+---
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[]);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[], boolean);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, byte);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(double[]);
+---
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[]);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, char[], boolean);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, double);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(float[]);
+---
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, float);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(boolean[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[]);
+&lt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, boolean[], boolean);
+---
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[]);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, int[], boolean);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[]);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, long[], boolean);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object, boolean);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[]);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, java.lang.Object[], boolean);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[]);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder append(java.lang.String, short[], boolean);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder appendAsObjectToString(java.lang.Object);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder appendSuper(java.lang.String);
+&gt; public org.apache.commons.lang.builder.ToStringBuilder appendToString(java.lang.String);
+&gt; public org.apache.commons.lang.builder.ToStringStyle getStyle();
+&gt; public java.lang.Object getObject();
+
+org.apache.commons.lang.builder.StandardToStringStyle
+--------------------
+&gt; public boolean isUseShortClassName();
+&gt; public void setUseShortClassName(boolean);
+&gt; public boolean isFieldSeparatorAtStart();
+&gt; public void setFieldSeparatorAtStart(boolean);
+&gt; public boolean isFieldSeparatorAtEnd();
+&gt; public void setFieldSeparatorAtEnd(boolean);
+
+org.apache.commons.lang.builder.ToStringStyle
+--------------------
+&gt; public void appendSuper(java.lang.StringBuffer, java.lang.String);
+&gt; public void appendToString(java.lang.StringBuffer, java.lang.String);
+&gt; protected void removeLastFieldSeparator(java.lang.StringBuffer);
+&gt; protected void reflectionAppendArrayDetail(java.lang.StringBuffer, java.lang.String, java.lang.Object);
+&gt; protected boolean isUseShortClassName();
+&gt; protected void setUseShortClassName(boolean);
+&gt; protected boolean isFieldSeparatorAtStart();
+&gt; protected void setFieldSeparatorAtStart(boolean);
+&gt; protected boolean isFieldSeparatorAtEnd();
+&gt; protected void setFieldSeparatorAtEnd(boolean);
+
+org.apache.commons.lang.builder.HashCodeBuilder
+--------------------
+&gt; public static int reflectionHashCode(int, int, java.lang.Object, boolean, java.lang.Class);
+&gt; public org.apache.commons.lang.builder.HashCodeBuilder appendSuper(int);
+
+org.apache.commons.lang.builder.CompareToBuilder
+--------------------
+&gt; public static int reflectionCompare(java.lang.Object, java.lang.Object, boolean, java.lang.Class);
+&gt; public org.apache.commons.lang.builder.CompareToBuilder appendSuper(int);
+&gt; public org.apache.commons.lang.builder.CompareToBuilder append(java.lang.Object, java.lang.Object, java.util.Comparator);
+&gt; public org.apache.commons.lang.builder.CompareToBuilder append(java.lang.Object[], java.lang.Object[], java.util.Comparator);
+
+org.apache.commons.lang.builder.EqualsBuilder
+--------------------
+&gt; public static boolean reflectionEquals(java.lang.Object, java.lang.Object, boolean, java.lang.Class);
+&gt; public org.apache.commons.lang.builder.EqualsBuilder appendSuper(boolean);
+</source>
+</p>
+</section>
+
+</body>
+</document>
diff --git a/src/site/xdoc/upgradeto2_1.xml b/src/site/xdoc/upgradeto2_1.xml
new file mode 100644
index 000000000..bc279cf28
--- /dev/null
+++ b/src/site/xdoc/upgradeto2_1.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>2.1 Release Notes</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="Lang 2.1 Release Notes">
+<p>
+These are the release notes and advice for upgrading Commons-Lang from
+version 2.0 to version 2.1.
+<source>
+INTRODUCTION:
+
+This document contains the release notes for the 2.1 version of Apache Jakarta Commons Lang.
+Commons Lang is a set of utility functions and reusable components that
+should be of use in any Java environment.
+
+
+INCOMPATIBLE CHANGES:
+
+- The Nestable interface defines the method indexOfThrowable(Class).
+Previously the implementations checked only for a specific Class.
+Now they check for subclasses of that Class as well.
+For most situations this will be the expected behavior (i.e. it's a bug fix).
+If it causes problems, please use the ExceptionUtils.indexOfThrowable(Class) method instead.
+Note that the ExceptionUtils method is available in v1.0 and v2.0 of commons-lang and has not been changed.
+(An alternative to this is to change the public static matchSubclasses flag on NestableDelegate.
+However, we don't recommend that as a long-term solution.)
+
+- The StopWatch class has had much extra validation added.
+If your code previously relied on unusual aspects, it may no longer work.
+
+- Starting with version 2.1, Ant version 1.6.x is required to build. Copy
+junit.jar to ANT_HOME/lib. You can get JUnit from https://www.junit.org. See the developer's guide
+for more details.
+
+
+DEPRECATIONS:
+
+- The enum package has been renamed to enums for JDK 1.5 compliance.
+All functionality is identical, just the package has changed.
+This package will be removed in v3.0.
+
+- NumberUtils.stringToInt - renamed to toInt
+
+- DateUtils - four constants, MILLIS_IN_* have been deprecated as they were defined
+as int not long. The replacements are MILLIS_PER_*.
+
+
+NEW FEATURES:
+
+New:
+- Mutable package - contains basic classes that hold an Object or primitive
+and provide both get and set methods.
+- DurationFormatUtils - provides various methods for formatting durations
+- CharEncoding - definitions of constants for character encoding work
+- CharUtils - utilities for working with characters
+
+Updated:
+- ArrayUtils - many more methods, especially List-like methods
+- BooleanUtils - isTrue and isFalse methods that handle null
+- ClassUtils - primitive to wrapper class conversion methods
+- ClassUtils - class name comparator
+- IllegalClassException - extra constructor for common instanceof case
+- NotImplementedException - supports nested exceptions
+- ObjectUtils - hashcode method handling null
+- StringUtils - isAsciiPrintable to check the contents of a string
+ -- ordinalIndexOf to find the nth index of a string
+ -- various remove methods to remove parts of a string
+ -- various split methods to provide more control over splitting a string
+ -- defaultIfEmpty to default a string if null or empty
+- SystemUtils - methods to get system properties as File objects
+ -- extra constants representing system properties
+- Validate - new methods to check whether all elements in a collection are of a specific type
+- WordUtils - new methods to capitalize based on a set of specified delimiters
+
+- EqualsBuilder - now provides setter to internal state
+- ToStringStyle - new style, short prefix style
+- ReflectionToStringBuilder - more flags to control the output with regards to statics
+
+- ExceptionUtils - added indexOfType methods that check subclasses, thus leaving the existing
+indexOfThrowable method untouched (see incompatible changes section)
+
+- NumberUtils - various string to number parsing methods added
+
+- DateUtils - methods added to compare dates in various ways
+ -- method to parse a date string using multiple patterns
+- FastDateFormat - extra formatting methods that take in a millisecond long value
+ -- additional static factory methods
+- StopWatch - new methods for split behavior
+
+
+BUG FIXES:
+
+19331 General case: infinite loop: ToStringBuilder.reflectionToString
+23174 EqualsBuilder.append(Object[], Object[]) throws NPE
+23356 Make DurationFormatUtils public!
+23557 WordUtils.capitalizeFully(String str) should take a delimiters
+23683 New method for converting a primitive Class to its corresponding wrapper
+23430 Minor javadoc fixes for StringUtils.contains(String, String)
+23590 make optional parameters in FastDateFormat really optional
+24056 Documentation error in StringUtils.replace
+25227 StringEscapeUtils.unescapeHtml() doesn't handle hex entities
+25454 new StringUtils.replaceChars behaves differently from old Ch
+25560 DateUtils.truncate() is off by one hour when using a date in DST switch 'zone'
+25627 DateUtils constants should be long
+25683 Add method that validates Collection elements are a correct
+25849 Add SystemUtils methods for directory properties.
+26616 ClassCastException in Enum.equals(Object)
+26699 Tokenizer Enhancements: reset input string, static CSV
+26734 NullPointerException in EqualsBuilder.append(Object[], Object[])
+26877 Add SystemUtils.AWT_TOOLKIT and others.
+26922 public static boolean DateUtils.equals(Date dt1, Date dt2)
+27592 WordUtils capitalize improvement
+27876 ReflectionToStringBuilder.toString(null) throws exception by design
+27877 Make ClassUtils methods null-safe and not throw an IAE.
+28468 StringUtils.defaultString: Documentation error
+28554 Add hashCode-support to class ObjectUtils
+29082 Enhancement of ExceptionUtils.CAUSE_METHOD_NAMES
+29149 StringEscapeUtils.unescapeHtml() doesn't handle an empty entity
+29294 lang.math.Fraction class deficiencies
+29673 ExceptionUtils: new getCause() methodname (for tomcat)
+29794 Add convenience format(long) methods to FastDateForma
+30328 HashCodeBuilder does not use the same values as Boolean (fixed as documentation)
+30334 New class proposal: CharacterEncoding
+30674 parseDate class from HttpClient's DateParser class
+30815 ArrayUtils.isEquals() throws ClassCastException when array1
+30929 Nestable.indexOfThrowable(Class) uses Class.equals() to match
+31395 DateUtils.truncate oddity at the far end of the Date spectrum
+31478 Compile error with JDK 5 "enum" is a keyword
+31572 o.a.c.lang.enum.ValuedEnum: 'enum' is a keyword in JDK 1.5.0
+31933 ToStringStyle setArrayEnd handled null incorrectly
+32133 SystemUtils fails init on HP-UX
+32198 Error in Javadoc for StringUtils.chomp(String, String)
+32625 Can't subclass EqualsBuilder because isEquals is private
+33067 EqualsBuilder.append(Object[], Object[]) crashes with a NullPointerException if an element of the first array is null
+33069 EqualsBuilder.append(Object[], Object[]) incorrectly checks that rhs[i] is instance of lhs[i]'s class
+33574 unbalanced ReflectionToStringBuilder
+33737 ExceptionUtils.addCauseMethodName(String) does not check for duplicates.
+</source>
+</p>
+</section>
+
+</body>
+</document>
diff --git a/src/site/xdoc/upgradeto2_2.xml b/src/site/xdoc/upgradeto2_2.xml
new file mode 100644
index 000000000..7d7e83b65
--- /dev/null
+++ b/src/site/xdoc/upgradeto2_2.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>2.2 Release Notes</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="Lang 2.2 Release Notes">
+<p>
+These are the release notes and advice for upgrading Commons-Lang from
+version 2.1 to version 2.2.
+<source>
+INTRODUCTION:
+
+This document contains the release notes for the 2.2 version of Apache Jakarta Commons Lang.
+Commons Lang is a set of utility functions and reusable components that
+should be of use in any Java environment.
+
+INCOMPATIBLE CHANGES WITH VERSION 2.1:
+
+- None
+
+DEPRECATIONS FROM 2.1 to 2.2:
+
+- None
+
+BUG FIXES IN 2.2:
+
+<a href="https://issues.apache.org/jira/browse/LANG-2">LANG-2</a> javadoc example for StringUtils.splitByWholeSeparator incorrect
+<a href="https://issues.apache.org/jira/browse/LANG-3">LANG-3</a> PADDING array in StringUtils overflows on '\uffff'
+<a href="https://issues.apache.org/jira/browse/LANG-10">LANG-10</a> [patch] ClassUtils.primitiveToWrapper and Void
+<a href="https://issues.apache.org/jira/browse/LANG-21">LANG-21</a> escapeXML() -&gt; Not escaping low characters
+<a href="https://issues.apache.org/jira/browse/LANG-25">LANG-25</a> DurationFormatUtils.formatDurationISO() javadoc is missing T in duration string between date and time part
+<a href="https://issues.apache.org/jira/browse/LANG-37">LANG-37</a> unit test for org.apache.commons.lang.text.StrBuilder
+<a href="https://issues.apache.org/jira/browse/LANG-42">LANG-42</a> EqualsBuilder.append(Object[], Object[]) crashes with a NullPointerException if an element of the first array is null
+<a href="https://issues.apache.org/jira/browse/LANG-45">LANG-45</a> StrBuilderTest#testReplaceStringString fails.
+<a href="https://issues.apache.org/jira/browse/LANG-50">LANG-50</a> Replace Clover with Cobertura
+<a href="https://issues.apache.org/jira/browse/LANG-59">LANG-59</a> DateUtils.truncate method is buggy when dealing with DST switching hours
+<a href="https://issues.apache.org/jira/browse/LANG-100">LANG-100</a> RandomStringUtils.random() family of methods create invalid Unicode sequences
+<a href="https://issues.apache.org/jira/browse/LANG-105">LANG-105</a> ExceptionUtils goes into infinite loop in getThrowables is throwable.getCause() == throwable
+<a href="https://issues.apache.org/jira/browse/LANG-106">LANG-106</a> StringUtils#getLevenshteinDistance() performance is sub-optimal
+<a href="https://issues.apache.org/jira/browse/LANG-112">LANG-112</a> Wrong length check in StrTokenizer.StringMatcher
+<a href="https://issues.apache.org/jira/browse/LANG-117">LANG-117</a> FastDateFormat: wrong format for date "01.01.1000"
+<a href="https://issues.apache.org/jira/browse/LANG-122">LANG-122</a> EscapeUtil.escapeHtml() should clarify that it does not escape ' chars to &apos;
+<a href="https://issues.apache.org/jira/browse/LANG-123">LANG-123</a> Unclear javadoc for DateUtils.iterator()
+<a href="https://issues.apache.org/jira/browse/LANG-127">LANG-127</a> Minor tweak to fix of bug # 26616
+<a href="https://issues.apache.org/jira/browse/LANG-130">LANG-130</a> Memory "leak" in StringUtils
+<a href="https://issues.apache.org/jira/browse/LANG-140">LANG-140</a> DurationFormatUtils.formatPeriod() returns the wrong result
+<a href="https://issues.apache.org/jira/browse/LANG-141">LANG-141</a> Fraction.toProperString() returns -1/1 for -1
+<a href="https://issues.apache.org/jira/browse/LANG-148">LANG-148</a> Performance modifications on StringUtils.replace
+<a href="https://issues.apache.org/jira/browse/LANG-150">LANG-150</a> StringEscapeUtils.unescapeHtml skips first entity after standalone ampersand
+<a href="https://issues.apache.org/jira/browse/LANG-152">LANG-152</a> DurationFormatUtils.formatDurationWords "11 &lt;units&gt;" gets converted to "11 &lt;unit&gt;"
+<a href="https://issues.apache.org/jira/browse/LANG-259">LANG-259</a> ValuedEnum.compareTo(Object other) not typesafe - it easily could be...
+<a href="https://issues.apache.org/jira/browse/LANG-261">LANG-261</a> Error in an example in the javadoc of the StringUtils.splitPreserveAllTokens() method
+<a href="https://issues.apache.org/jira/browse/LANG-264">LANG-264</a> ToStringBuilder/HashCodeBuilder javadoc code examples
+<a href="https://issues.apache.org/jira/browse/LANG-271">LANG-271</a> LocaleUtils test fails under Mustang
+<a href="https://issues.apache.org/jira/browse/LANG-272">LANG-272</a> Minor build and checkstyle changes
+<a href="https://issues.apache.org/jira/browse/LANG-277">LANG-277</a> Javadoc errors on StringUtils.splitPreserveAllTokens(String, char)
+<a href="https://issues.apache.org/jira/browse/LANG-278">LANG-278</a> javadoc for StringUtils.removeEnd is incorrect
+
+IMPROVEMENTS IN 2.2:
+
+<a href="https://issues.apache.org/jira/browse/LANG-159">LANG-159</a> Add WordUtils.getInitials(String)
+<a href="https://issues.apache.org/jira/browse/LANG-161">LANG-161</a> Add methods and tests to StrBuilder
+<a href="https://issues.apache.org/jira/browse/LANG-162">LANG-162</a> replace() length calculation improvement
+<a href="https://issues.apache.org/jira/browse/LANG-165">LANG-165</a> parseDate with TimeZone
+<a href="https://issues.apache.org/jira/browse/LANG-166">LANG-166</a> New interpolation features
+<a href="https://issues.apache.org/jira/browse/LANG-169">LANG-169</a> Implementation of escape/unescapeHtml methods with Writer
+<a href="https://issues.apache.org/jira/browse/LANG-176">LANG-176</a> CompareToBuilder excludeFields for reflection method
+<a href="https://issues.apache.org/jira/browse/LANG-186">LANG-186</a> Request for MutableBoolean implementation
+<a href="https://issues.apache.org/jira/browse/LANG-194">LANG-194</a> add generic add method to DateUtils
+<a href="https://issues.apache.org/jira/browse/LANG-198">LANG-198</a> New method for EqualsBuilder
+<a href="https://issues.apache.org/jira/browse/LANG-212">LANG-212</a> New ExceptionUtils method setCause()
+<a href="https://issues.apache.org/jira/browse/LANG-216">LANG-216</a> Provides a Class.getPublicMethod which returns public invocable Method
+<a href="https://issues.apache.org/jira/browse/LANG-217">LANG-217</a> Add Mutable&lt;Type&gt; to&lt;Type&gt;() methods.
+<a href="https://issues.apache.org/jira/browse/LANG-220">LANG-220</a> Tokenizer Enhancements: reset input string, static CSV/TSV factories
+<a href="https://issues.apache.org/jira/browse/LANG-226">LANG-226</a> Using ReflectionToStringBuilder and excluding secure fields
+<a href="https://issues.apache.org/jira/browse/LANG-242">LANG-242</a> Trivial cleanup of javadoc in various files
+<a href="https://issues.apache.org/jira/browse/LANG-246">LANG-246</a> CompositeFormat
+<a href="https://issues.apache.org/jira/browse/LANG-250">LANG-250</a> Performance boost for RandomStringUtils
+<a href="https://issues.apache.org/jira/browse/LANG-254">LANG-254</a> Enhanced Class.forName version
+<a href="https://issues.apache.org/jira/browse/LANG-260">LANG-260</a> StringEscapeUtils should expose escape*() methods taking Writer argument
+<a href="https://issues.apache.org/jira/browse/LANG-263">LANG-263</a> Add StringUtils.containsIgnoreCase(...)
+<a href="https://issues.apache.org/jira/browse/LANG-267">LANG-267</a> Support char array converters on ArrayUtils
+<a href="https://issues.apache.org/jira/browse/LANG-270">LANG-270</a> minor javadoc improvements for StringUtils.stripXxx() methods
+ New ExceptionUtils methods getMessage/getRootCauseMessage
+
+</source>
+</p>
+</section>
+
+</body>
+</document>
diff --git a/src/site/xdoc/upgradeto2_3.xml b/src/site/xdoc/upgradeto2_3.xml
new file mode 100644
index 000000000..0a6ac3977
--- /dev/null
+++ b/src/site/xdoc/upgradeto2_3.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>2.3 Release Notes</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="Lang 2.3 Release Notes">
+<p>
+These are the release notes and advice for upgrading Commons-Lang from
+version 2.2 to version 2.3.
+<source>
+INTRODUCTION:
+
+This document contains the release notes for the 2.3 version of Apache
+Jakarta Commons Lang.
+Commons Lang is a set of utility functions and reusable components that
+should be of use in any Java environment.
+
+INCOMPATIBLE CHANGES WITH VERSION 2.2:
+
+- Calling stop on a suspended StopWatch will no longer change the underlying time.
+ It's very unlikely anyone was relying on that bug as a feature.
+
+ADDITIONAL INCOMPATIBLE CHANGES WITH VERSION 2.0:
+
+- The Nestable interface defines the method indexOfThrowable(Class).
+Previously the implementations checked only for a specific Class.
+Now they check for subclasses of that Class as well.
+For most situations this will be the expected behavior (i.e. it's a bug fix).
+If it causes problems, please use the ExceptionUtils.indexOfThrowable(Class) method instead.
+Note that the ExceptionUtils method is available in v1.0 and v2.0 of commons-lang and has not been changed.
+(An alternative to this is to change the public static matchSubclasses flag on NestableDelegate.
+However, we don't recommend that as a long-term solution.)
+
+- The StopWatch class has had much extra validation added.
+If your code previously relied on unusual aspects, it may no longer work.
+
+- Starting with version 2.1, Ant version 1.6.x is required to build. Copy
+junit.jar to ANT_HOME/lib. You can get JUnit from https://www.junit.org. See the developer's guide
+for more details.
+
+DEPRECATIONS FROM 2.2 to 2.3:
+
+- None
+
+DEPRECATIONS FROM 2.1 to 2.2:
+
+- None
+
+DEPRECATIONS FROM 2.0 to 2.1:
+
+- The enum package has been renamed to enums for JDK 1.5 compliance.
+All functionality is identical, just the package has changed.
+This package will be removed in v3.0.
+
+- NumberUtils.stringToInt - renamed to toInt
+
+- DateUtils - four constants, MILLIS_IN_* have been deprecated as they were defined
+as int not long. The replacements are MILLIS_PER_*.
+
+
+BUG FIXES IN 2.3:
+
+ * [LANG-69 ] - ToStringBuilder throws StackOverflowError when an Object cycle exists
+ * [LANG-102] - Refactor Entities methods
+ * [LANG-153] - Can't XMLDecode an Enum
+ * [LANG-262] - Use of enum prevents a classloader from being garbage collected resulting in out of memory exceptions.
+ * [LANG-279] - HashCodeBuilder throws java.lang.StackOverflowError when an object contains a cycle.
+ * [LANG-281] - DurationFormatUtils returns wrong result
+ * [LANG-286] - Serialization - not backwards compatible
+ * [LANG-292] - unescapeXml("&amp;12345678;") should be "&amp;12345678;"
+ * [LANG-294] - StrBuilder.replaceAll and StrBuilder.deleteAll can throw ArrayIndexOutOfBoundsException.
+ * [LANG-295] - StrBuilder contains usages of thisBuf.length when they should use size
+ * [LANG-299] - Bug in method appendFixedWidthPadRight of class StrBuilder causes an ArrayIndexOutOfBoundsException
+ * [LANG-300] - NumberUtils.createNumber throws NumberFormatException for one digit long
+ * [LANG-303] - FastDateFormat.mRules is not transient or serializable
+ * [LANG-304] - NullPointerException in isAvailableLocale(Locale)
+ * [LANG-313] - Wrong behavior of Entities.unescape
+ * [LANG-315] - StopWatch: suspend() acts as split(), if followed by stop()
+
+IMPROVEMENTS IN 2.3:
+
+ * [LANG-258] - Enum Javadoc
+ * [LANG-266] - Wish for StringUtils.join(Collection, *)
+ * [LANG-268] - StringUtils.join should allow you to pass a range for it (so it only joins a part of the array)
+ * [LANG-275] - StringUtils substringsBetween
+ * [LANG-282] - Create more tests to test out the +=31 replacement code in DurationFormatUtils.
+ * [LANG-287] - Optimize StringEscapeUtils.unescapeXml(String)
+ * [LANG-289] - NumberUtils.max(byte[]) and NumberUtils.min(byte[]) are missing
+ * [LANG-291] - Null-safe comparison methods for finding most recent / least recent dates.
+ * [LANG-306] - StrBuilder appendln/appendAll/appendSeparator
+ * [LANG-310] - BooleanUtils isNotTrue/isNotFalse
+ * [LANG-314] - Tests fail to pass when building with Maven 2
+
+</source>
+</p>
+</section>
+
+</body>
+</document>
diff --git a/src/site/xdoc/upgradeto2_4.xml b/src/site/xdoc/upgradeto2_4.xml
new file mode 100644
index 000000000..d6fcdf39a
--- /dev/null
+++ b/src/site/xdoc/upgradeto2_4.xml
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>2.4 Release Notes</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="Lang 2.4 Release Notes">
+<p>
+These are the release notes and advice for upgrading Commons-Lang from
+version 2.3 to version 2.4. <br/><br/>See '<a href="article2_4.html">What's new in 2.4?</a>' for more information.
+<source>
+INTRODUCTION:
+
+This document contains the release notes for the 2.4 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any Java environment.
+
+Lang 2.4 no longer attempts to target the Java 1.1 environment and now targets Java 1.2. While previous versions
+were built for 1.1, some parts were using methods that were only available in 1.2, and the Enum class had
+become dependent on Java 1.3.
+
+INCOMPATIBLE CHANGES WITH VERSION 2.3:
+
+- None
+
+INCOMPATIBLE CHANGES WITH VERSION 2.2:
+
+- Calling stop on a suspended StopWatch will no longer change the underlying time.
+ It's very unlikely anyone was relying on that bug as a feature.
+
+ADDITIONAL INCOMPATIBLE CHANGES WITH VERSION 2.0:
+
+- The Nestable interface defines the method indexOfThrowable(Class).
+Previously the implementations checked only for a specific Class.
+Now they check for subclasses of that Class as well.
+For most situations this will be the expected behavior (i.e. it's a bug fix).
+If it causes problems, please use the ExceptionUtils.indexOfThrowable(Class) method instead.
+Note that the ExceptionUtils method is available in v1.0 and v2.0 of commons-lang and has not been changed.
+(An alternative to this is to change the public static matchSubclasses flag on NestableDelegate.
+However, we don't recommend that as a long-term solution.)
+
+- The StopWatch class has had much extra validation added.
+If your code previously relied on unusual aspects, it may no longer work.
+
+- Starting with version 2.1, Ant version 1.6.x is required to build. Copy
+junit.jar to ANT_HOME/lib. You can get JUnit from https://www.junit.org. See the developer's guide
+for more details.
+
+DEPRECATIONS FROM 2.3 to 2.4:
+
+- ObjectUtils.appendIdentityToString(StringBuffer, Object) - has very odd semantics, use
+ ObjectUtils.identityToString(StringBuffer, Object) instead.
+
+- public static java.util.Date add(java.util.Date, int, int) - it is not intended for this
+ method to be public. Please let us know if you use this.
+
+DEPRECATIONS FROM 2.2 to 2.3:
+
+- None
+
+DEPRECATIONS FROM 2.1 to 2.2:
+
+- None
+
+DEPRECATIONS FROM 2.0 to 2.1:
+
+- The enum package has been renamed to enums for JDK 1.5 compliance.
+All functionality is identical, just the package has changed.
+This package will be removed in v3.0.
+
+- NumberUtils.stringToInt - renamed to toInt
+
+- DateUtils - four constants, MILLIS_IN_* have been deprecated as they were defined
+as int not long. The replacements are MILLIS_PER_*.
+
+
+BUG FIXES IN 2.4:
+
+ * [LANG-76 ] - EnumUtils.getEnum() doesn't work well in 1.5
+ * [LANG-328] - LocaleUtils.toLocale() rejects strings with only language+variant
+ * [LANG-334] - Enum is not thread-safe
+ * [LANG-346] - Dates.round() behaves incorrectly for minutes and seconds
+ * [LANG-349] - Deadlock using ReflectionToStringBuilder
+ * [LANG-353] - Javadoc Example for EqualsBuilder is questionable
+ * [LANG-360] - Why does appendIdentityToString return null?
+ * [LANG-361] - BooleanUtils toBooleanObject javadoc does not match implementation
+ * [LANG-363] - StringEscapeUtils..escapeJavaScript() method did not escape '/' into '\/', it will make IE render page incorrectly
+ * [LANG-364] - Documentation bug for ignoreEmptyTokens accessors in StrTokenizer
+ * [LANG-365] - BooleanUtils.toBoolean() - invalid drop-thru in case statement causes StringIndexOutOfBoundsException
+ * [LANG-367] - FastDateFormat thread safety
+ * [LANG-368] - FastDateFormat getDateInstance() and getDateTimeInstance() assume Locale.getDefault() won't change
+ * [LANG-369] - ExceptionUtils not thread-safe
+ * [LANG-372] - ToStringBuilder: MULTI_LINE_STYLE does not print anything from appendToString methods.
+ * [LANG-380] - infinite loop in Fraction.reduce when numerator == 0
+ * [LANG-381] - NumberUtils.min(floatArray) returns wrong value if floatArray[0] happens to be Float.NaN
+ * [LANG-385] - https://commons.apache.org/proper/commons-lang/developerguide.html "Building" section is incorrect and incomplete
+ * [LANG-393] - EqualsBuilder don't compare BigDecimals correctly
+ * [LANG-399] - Javadoc bugs - cannot find object
+ * [LANG-410] - Ambiguous / confusing names in StringUtils replace* methods
+ * [LANG-412] - StrBuilder appendFixedWidth does not handle nulls
+ * [LANG-414] - DateUtils.round() often fails
+
+IMPROVEMENTS IN 2.4:
+
+ * [LANG-180] - adding a StringUtils.replace method that takes an array or List of replacement strings
+ * [LANG-192] - Split camel case strings
+ * [LANG-257] - Add new splitByWholeSeparatorPreserveAllTokens() methods to StringUtils
+ * [LANG-269] - Shouldn't Commons Lang's StringUtils have a "common" string method?
+ * [LANG-298] - ClassUtils.getShortClassName and ClassUtils.getPackageName and class of array
+ * [LANG-321] - Add toArray() method to IntRange and LongRange classes
+ * [LANG-322] - ClassUtils.getShortClassName(String) inefficient
+ * [LANG-326] - StringUtils: startsWith / endsWith / startsWithIgnoreCase / endsWithIgnoreCase / removeStartIgnoreCase / removeEndIgnoreCase methods
+ * [LANG-329] - Pointless synchronized in ThreadLocal.initialValue should be removed
+ * [LANG-333] - ArrayUtils.toClass
+ * [LANG-337] - Utility class constructor javadocs should acknowledge that they may sometimes be used, e.g. with Velocity.
+ * [LANG-338] - truncateNicely method which avoids truncating in the middle of a word
+ * [LANG-345] - Optimize HashCodeBuilder.append(Object)
+ * [LANG-351] - Extension to ClassUtils: Obtain the primitive class from a wrapper
+ * [LANG-356] - Add getStartTime to StopWatch
+ * [LANG-362] - Add ExtendedMessageFormat to org.apache.commons.lang.text
+ * [LANG-371] - ToStringStyle javadoc should show examples of styles
+ * [LANG-374] - Add escaping for CSV columns to StringEscapeUtils
+ * [LANG-375] - add SystemUtils.IS_OS_WINDOWS_VISTA field
+ * [LANG-379] - Calculating A date fragment in any time-unit
+ * [LANG-383] - Adding functionality to DateUtils to allow direct setting of various fields.
+ * [LANG-402] - OSGi-ify Lang
+ * [LANG-404] - Add Calendar flavour format methods to DateFormatUtils
+ * [LANG-407] - StringUtils.length(String) returns null-safe length
+ * [LANG-413] - Memory usage improvement for StringUtils#getLevenshteinDistance()
+
+</source>
+</p>
+</section>
+
+</body>
+</document>
diff --git a/src/site/xdoc/upgradeto2_5.xml b/src/site/xdoc/upgradeto2_5.xml
new file mode 100644
index 000000000..38ed30fff
--- /dev/null
+++ b/src/site/xdoc/upgradeto2_5.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>2.5 Release Notes</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="Lang 2.5 Release Notes">
+<p>
+These are the release notes and advice for upgrading Commons-Lang from
+version 2.4 to version 2.5. <br/><br/>See '<a href="article2_5.html">What's new in 2.5?</a>' for more information.
+<source>
+INTRODUCTION:
+
+This document contains the release notes for the 2.5 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any Java environment.
+
+Lang 2.5 no longer attempts to target the Java 1.2 environment and now targets Java 1.3.
+
+IMPROVEMENTS IN 2.5
+===================
+
+ * [LANG-583] - ArrayUtils - add isNotEmpty() methods
+ * [LANG-534] - ArrayUtils - add nullToEmpty() methods
+ * [LANG-454] - CharRange - provide an iterator that lets you walk the chars in the range
+ * [LANG-514] - CharRange - add more readable static builder methods
+ * [ ] - ClassUtils - new isAssignable() methods with autoboxing
+ * [LANG-535] - ClassUtils - add support to getShortClassName and getPackageName for arrays
+ * [LANG-434] - DateUtils - add ceiling() method
+ * [LANG-486] - DateUtils - add parseDateStrictly() method
+ * [LANG-466] - EqualsBuilder - add reset() method
+ * [LANG-461] - NumberUtils - add toByte() and toShort() methods
+ * [LANG-522] - Mutable numbers - add string constructors
+ * [ ] - MutableBoolean - add toBoolean(), isTrue() and isFalse() methods
+ * [LANG-422] - StrBuilder - add appendSeparator() methods with an alternative default separator if the StrBuilder is currently empty
+ * [LANG-555] - SystemUtils - add IS_OS_WINDOWS_7 constant
+ * [LANG-554] - SystemUtils - add IS_JAVA_1_7 constant for JDK 1.7
+ * [LANG-405] - StringUtils - add abbreviateMiddle() method
+ * [LANG-569] - StringUtils - add indexOfIgnoreCase() and lastIndexOfIgnoreCase() methods
+ * [LANG-471] - StringUtils - add isAllUpperCase() and isAllLowerCase() methods
+ * [LANG-469] - StringUtils - add lastOrdinalIndexOf() method to complement the existing ordinalIndexOf() method
+ * [LANG-348] - StringUtils - add repeat() method
+ * [LANG-445] - StringUtils - add startsWithAny() method
+ * [LANG-430] - StringUtils - add upperCase(String, Locale) and lowerCase(String, Locale) methods
+ * [LANG-416] - New Reflection package containing ConstructorUtils, FieldUtils, MemberUtils and MethodUtils
+
+BUG FIXES IN 2.5
+================
+
+ * [LANG-494] - CharSet - Synchronizing the COMMON Map so that getInstance doesn't miss a put from a subclass in another thread
+ * [LANG-500] - ClassUtils - improving performance of getAllInterfaces
+ * [LANG-587] - ClassUtils - toClass() throws NullPointerException on null array element
+ * [LANG-530] - DateUtils - Fix parseDate() cannot parse ISO8601 dates produced by FastDateFormat
+ * [LANG-440] - DateUtils - round() doesn't work correct for Calendar.AM_PM
+ * [LANG-443] - DateUtils - improve tests
+ * [LANG-204] - Entities - multithreaded initialization
+ * [LANG-506] - Entities - missing final modifiers; thread-safety issues
+ * [LANG-76] - EnumUtils - getEnum() doesn't work well in 1.5+
+ * [LANG-584] - ExceptionUtils - use immutable lock target
+ * [LANG-477] - ExtendedMessageFormat - OutOfMemory with a pattern containing single quotes
+ * [LANG-538] - FastDateFormat - call getTime() on a calendar to ensure timezone is in the right state
+ * [LANG-547] - FastDateFormat - Remove unused field
+ * [LANG-511] - LocaleUtils - initialization of available locales can be deferred
+ * [LANG-457] - NumberUtils - createNumber() throws a StringIndexOutOfBoundsException for "l"
+ * [LANG-521] - NumberUtils - isNumber(String) and createNumber(String) both modified to support '2.'
+ * [LANG-432] - StringUtils - improve handling of case-insensitive Strings
+ * [LANG-552] - StringUtils - replaceEach() no longer NPEs when null appears in the last String[]
+ * [LANG-460] - StringUtils - correct Javadocs for startsWith() and startsWithIgnoreCase()
+ * [LANG-421] - StringEscapeUtils - escapeJava() escapes '/' characters
+ * [LANG-450] - StringEscapeUtils - change escapeJavaStyleString() to throw UnhandledException instead swallowing IOException
+ * [LANG-419] - WordUtils - fix StringIndexOutOfBoundsException when lower is greater than the String length
+ * [LANG-523] - StrBuilder - Performance improvement by doubling the size of the String in ensureCapacity
+ * [LANG-575] - Compare, Equals and HashCode builders - use ArrayUtils to avoid creating a temporary List
+ * [LANG-467] - EqualsBuilder - removing the special handling of BigDecimal (LANG-393) to use compareTo
+ * [LANG-574] - HashCodeBuilder - Performance improvement: check for isArray to short-circuit the 9 instanceof checks
+ * [LANG-520] - HashCodeBuilder - Changing the hashCode() method to return toHashCode()
+ * [LANG-459] - HashCodeBuilder - reflectionHashCode() can generate incorrect hashcodes
+ * [LANG-586] - HashCodeBuilder and ToStringStyle - use of ThreadLocal causes memory leaks in container environments
+ * [LANG-487] - ToStringBuilder - make default style thread-safe
+ * [LANG-472] - RandomUtils - nextLong() always produces even numbers
+ * [LANG-592] - RandomUtils - RandomUtils tests are failing frequently
+
+</source>
+</p>
+</section>
+
+</body>
+</document>
diff --git a/src/site/xdoc/upgradeto2_6.xml b/src/site/xdoc/upgradeto2_6.xml
new file mode 100644
index 000000000..1f8c278e9
--- /dev/null
+++ b/src/site/xdoc/upgradeto2_6.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>2.6 Release Notes</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="Lang 2.6 Release Notes">
+<p>
+These are the release notes and advice for upgrading Commons-Lang from
+version 2.5 to version 2.6. <br/><br/>.
+<source>
+INTRODUCTION:
+
+This document contains the release notes for the 2.6 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any Java environment.
+
+
+COMPATIBILITY WITH 2.5
+======================
+Lang 2.6 is binary compatible release with Lang 2.5, containing bug fixes and small enhancements.
+
+Lang 2.6 requires a minimum of JDK 1.3.
+
+
+IMPROVEMENTS IN 2.6
+===================
+
+ * [LANG-633] - BooleanUtils: use same optimization in toBooleanObject(String) as in toBoolean(String)
+ * [LANG-599] - ClassUtils: allow Dots as Inner Class Separators in getClass()
+ * [LANG-594] - DateUtils: equal and compare functions up to most significant field
+ * [LANG-632] - DateUtils: provide a Date to Calendar convenience method
+ * [LANG-576] - ObjectUtils: add clone methods to ObjectUtils
+ * [LANG-667] - ObjectUtils: add a Null-safe compare() method
+ * [LANG-670] - ObjectUtils: add notEqual() method
+ * [LANG-302] - StrBuilder: implement clone() method
+ * [LANG-640] - StringUtils: add a normalizeSpace() method
+ * [LANG-614] - StringUtils: add endsWithAny() method
+ * [LANG-655] - StringUtils: add defaultIfBlank() method
+ * [LANG-596] - StrSubstitutor: add a replace(String, Properties) variant
+ * [LANG-482] - StrSubstitutor: support substitution in variable names
+ * [LANG-669] - Use StrBuilder instead of StringBuffer to improve performance where sync. is not an issue
+
+BUG FIXES IN 2.6
+================
+
+ * [LANG-629] - CharSet: make the underlying set synchronized
+ * [LANG-635] - CompareToBuilder: fix passing along compareTransients to the reflectionCompare method
+ * [LANG-636] - ExtendedMessageFormat doesn't override equals(Object)
+ * [LANG-645] - FastDateFormat: fix to properly include the locale when formatting a Date
+ * [LANG-638] - NumberUtils: createNumber() throws a StringIndexOutOfBoundsException when argument containing "e" and "E" is passed in
+ * [LANG-607] - StringUtils methods do not handle Unicode 2.0+ supplementary characters correctly
+ * [LANG-624] - SystemUtils: getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+ * [BEANUTILS-381] - MemberUtils: getMatchingAccessibleMethod does not correctly handle inheritance and method overloading
+
+OTHER CHANGES IN 2.6
+====================
+
+ * [LANG-600] - Javadoc is incorrect for lastIndexOf() method
+ * [LANG-628] - Javadoc for HashCodeBuilder.append(boolean) does not match implementation
+ * [LANG-643] - Javadoc StringUtils.left() claims to throw an exception on negative length, but doesn't
+ * [LANG-370] - Javadoc - document thread safety
+ * [LANG-623] - Test for StringUtils replaceChars() icelandic characters
+
+</source>
+</p>
+</section>
+
+</body>
+</document>
diff --git a/src/site/xdoc/upgradeto3_0.xml b/src/site/xdoc/upgradeto3_0.xml
new file mode 100644
index 000000000..c30117246
--- /dev/null
+++ b/src/site/xdoc/upgradeto3_0.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<document>
+ <properties>
+ <title>Upgrade from 2.5 to 3.0</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+<body>
+
+<section name="Upgrade to 3.0">
+<p>
+For advice on upgrading Commons-Lang from version 2.5 to version 3.0 see
+'<a href="article3_0.html">What's new in 3.0?</a>'.
+<source>
+INTRODUCTION:
+
+This document contains the release notes for the 3.0 version of Apache Commons Lang.
+Commons Lang is a set of utility functions and reusable components that should be of use in any
+Java environment.
+
+Lang 3.0 now targets Java 5.0, making use of features that arrived with Java 5.0 such as generics,
+variable arguments, autoboxing, concurrency and formatted output.
+
+ADDITIONS IN 3.0
+================
+
+ [LANG-276] MutableBigDecimal and MutableBigInteger.
+ [LANG-285] Wish : method unaccent.
+ [LANG-358] ObjectUtils.coalesce.
+ [LANG-386] LeftOf/RightOfNumber in Range convenience methods necessary.
+ [LANG-435] Add ClassUtils.isAssignable() variants with autoboxing.
+ [LANG-444] StringUtils.emptyToNull.
+ [LANG-482] Enhance StrSubstitutor to support nested ${var-${subvr}} expansion
+ [LANG-482] StrSubstitutor now supports substitution in variable names.
+ [LANG-496] A generic implementation of the Lazy initialization pattern.
+ [LANG-497] Addition of ContextedException and ContextedRuntimeException.
+ [LANG-498] Add StringEscapeUtils.escapeText() methods.
+ [LANG-499] Add support for the handling of ExecutionExceptions.
+ [LANG-501] Add support for background initialization.
+ [LANG-529] Add a concurrent package.
+ [LANG-533] Validate: support for validating blank strings.
+ [LANG-537] Add ArrayUtils.toArray to create generic arrays.
+ [LANG-545] Add ability to create a Future for a constant.
+ [LANG-546] Add methods to Validate to check whether the index is valid for the array/list/string.
+ [LANG-553] Add TypeUtils class to provide utility code for working with generic types.
+ [LANG-559] Added isAssignableFrom and isInstanceOf validation methods.
+ [LANG-559] Added validState validation method.
+ [LANG-560] New TimedSemaphore class.
+ [LANG-582] Provide an implementation of the ThreadFactory interface.
+ [LANG-588] Create a basic Pair&lt;L, R&gt; class.
+ [LANG-594] DateUtils equal &amp; compare functions up to most significant field.
+ [LANG-601] Add Builder Interface / Update Builders to Implement It.
+ [LANG-609] Support lazy initialization using atomic variables
+ [LANG-610] Extend exception handling in ConcurrentUtils to runtime exceptions.
+ [LANG-614] StringUtils.endsWithAny method
+ [LANG-640] Add normalizeSpace to StringUtils
+ [LANG-644] Provide documentation about the new concurrent package
+ [LANG-649] BooleanUtils.toBooleanObject to support single character input
+ [LANG-651] Add AnnotationUtils
+ [LANG-653] Provide a very basic ConcurrentInitializer implementation
+ [LANG-655] Add StringUtils.defaultIfBlank()
+ [LANG-667] Add a Null-safe compare() method to ObjectUtils
+ [LANG-676] Documented potential NPE if auto-boxing occurs for some BooleanUtils methods
+ [LANG-678] Add support for ConcurrentMap.putIfAbsent()
+ [LANG-692] Add hashCodeMulti varargs method
+
+REMOVALS IN 3.0
+===============
+
+ [LANG-438] Remove @deprecateds.
+ [LANG-492] Remove code handled now by the JDK.
+ [LANG-493] Remove code that does not hold enough value to remain.
+ [LANG-590] Remove JDK 1.2/1.3 bug handling in StringUtils.indexOf(String, String, int).
+ [LANG-673] WordUtils.abbreviate() removed
+ [LANG-691] Removed DateUtils.UTC_TIME_ZONE
+
+IMPROVEMENTS IN 3.0
+===================
+
+ [LANG-290] EnumUtils for JDK 5.0.
+ [LANG-336] Finally start using generics.
+ [LANG-355] StrBuilder should implement CharSequence and Appendable.
+ [LANG-396] Investigate for vararg usages.
+ [LANG-424] Improve Javadoc for StringUtils class.
+ [LANG-458] Refactor Validate.java to eliminate code redundancy.
+ [LANG-479] Document where in SVN trunk is.
+ [LANG-504] bring ArrayUtils.isEmpty to the generics world.
+ [LANG-505] Rewrite StringEscapeUtils.
+ [LANG-507] StringEscapeUtils.unescapeJava should support \u+ notation.
+ [LANG-510] Convert StringUtils API to take CharSequence.
+ [LANG-513] Better EnumUtils.
+ [LANG-528] Mutable classes should implement an appropriately typed Mutable interface.
+ [LANG-539] Compile commons.lang for CDC 1.1/Foundation 1.1.
+ [LANG-540] Make NumericEntityEscaper immutable.
+ [LANG-541] Replace StringBuffer with StringBuilder.
+ [LANG-548] Use Iterable on API instead of Collection.
+ [LANG-551] Replace Range classes with generic version.
+ [LANG-562] Change Maven groupId.
+ [LANG-563] Change Java package name.
+ [LANG-570] Do the test cases really still require main() and suite() methods?.
+ [LANG-579] Add new Validate methods.
+ [LANG-599] ClassUtils.getClass(): Allow Dots as Inner Class Separators.
+ [LANG-605] DefaultExceptionContext overwrites values in recursive situations.
+ [LANG-668] Change ObjectUtils min() &amp; max() functions to use varargs rather than just two parameters
+ [LANG-681] Push down WordUtils to "text" sub-package.
+
+BUG FIXES IN 3.0
+================
+
+ [LANG-11] Depend on JDK 1.5+.
+ [LANG-302] StrBuilder does not implement clone().
+ [LANG-339] StringEscapeUtils.escapeHtml() escapes multibyte characters like Chinese, Japanese, etc.
+ [LANG-369] ExceptionUtils not thread-safe.
+ [LANG-418] Javadoc incorrect for StringUtils.endsWithIgnoreCase.
+ [LANG-428] StringUtils.isAlpha, isAlphanumeric and isNumeric now return false for ""
+ [LANG-439] StringEscapeUtils.escapeHTML() does not escape chars (0x00-0x20).
+ [LANG-448] Lower Ascii Characters don't get encoded by Entities.java.
+ [LANG-468] JDK 1.5 build/runtime failure on LANG-393 (EqualsBuilder).
+ [LANG-474] Fixes for thread safety.
+ [LANG-478] StopWatch does not resist to system time changes.
+ [LANG-480] StringEscapeUtils.escapeHtml incorrectly converts Unicode characters above U+00FFFF into 2 characters.
+ [LANG-481] Possible race-conditions in hashCode of the range classes.
+ [LANG-564] Improve StrLookup API documentation.
+ [LANG-568] @SuppressWarnings("unchecked") is used too generally.
+ [LANG-571] ArrayUtils.add(T[] array, T element) can create unexpected ClassCastException.
+ [LANG-585] exception.DefaultExceptionContext.getFormattedExceptionMessage catches Throwable.
+ [LANG-596] StrSubstitutor should also handle the default properties of a java.util.Properties class
+ [LANG-600] Javadoc is incorrect for public static int lastIndexOf(String str, String searchStr).
+ [LANG-602] ContextedRuntimeException no longer an 'unchecked' exception.
+ [LANG-606] EqualsBuilder causes StackOverflowException.
+ [LANG-608] Some StringUtils methods should take an int character instead of char to use String API features.
+ [LANG-617] StringEscapeUtils.escapeXML() can't process UTF-16 supplementary characters
+ [LANG-624] SystemUtils.getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM
+ [LANG-629] Charset may not be threadsafe, because the HashSet is not synch.
+ [LANG-638] NumberUtils createNumber throws a StringIndexOutOfBoundsException when argument containing "e" and "E" is passed in
+ [LANG-643] Javadoc StringUtils.left() claims to throw on negative len, but doesn't
+ [LANG-645] FastDateFormat.format() outputs incorrect week of year because locale isn't respected
+ [LANG-646] StringEscapeUtils.unescapeJava doesn't handle octal escapes and Unicode with extra u
+ [LANG-656] Example StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 incorrect
+ [LANG-658] Some entities like &amp;Ouml; are not matched properly against its ISO8859-1 representation
+ [LANG-659] EntityArrays typo: {"\u2122", "&amp;minus;"}, // minus sign, U+2212 ISOtech
+ [LANG-66] StringEscaper.escapeXml() escapes characters &gt; 0x7f.
+ [LANG-662] org.apache.commons.lang3.math.Fraction does not reduce (Integer.MIN_VALUE, 2^k)
+ [LANG-663] org.apache.commons.lang3.math.Fraction does not always succeed in multiplyBy and divideBy
+ [LANG-664] NumberUtils.isNumber(String) is not right when the String is "1.1L"
+ [LANG-672] Doc bug in DateUtils#ceiling
+ [LANG-677] DateUtils.isSameLocalTime compares using 12-hour clock and not 24-hour
+ [LANG-685] EqualsBuilder synchronizes on HashCodeBuilder.
+ [LANG-703] StringUtils.join throws NPE when toString returns null for one of objects in collection
+ [LANG-710] StringIndexOutOfBoundsException when calling unescapeHtml4("&amp;#03")
+
+</source>
+</p>
+</section>
+
+</body>
+</document>
diff --git a/src/site/xdoc/userguide.xml b/src/site/xdoc/userguide.xml
new file mode 100644
index 000000000..1e39ec861
--- /dev/null
+++ b/src/site/xdoc/userguide.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<document>
+
+ <properties>
+ <title>Commons Lang - User guide</title>
+ <author email="dev@commons.apache.org">Commons Documentation Team</author>
+ </properties>
+
+ <body>
+
+ <section name='User guide for Commons "Lang"'>
+ Looking for the User Guide? It has been moved to the package <a href="javadocs/api-release/index.html">Javadoc</a>.
+ </section>
+
+</body>
+</document>