diff options
Diffstat (limited to 'src/site/resources')
32 files changed, 12359 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 Binary files differnew file mode 100644 index 000000000..847238bc6 --- /dev/null +++ b/src/site/resources/images/logo.png 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> + | <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" /> Error</td><td>268</td></tr><tr class="a"><td><img alt="Warning" src="images/icon_warning_sml.gif" /> Warning</td><td>0</td></tr><tr class="b"><td><img alt="Info" src="images/icon_info_sml.gif" /> 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 © 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 ' +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 Ö are not matched properly against its ISO8859-1 representation + [LANG-659] EntityArrays typo: {"\u2122", "−"}, // 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("") + [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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 Ö are not matched properly against its + ISO8859-1 representation +o LANG-659: EntityArrays typo: {"\u2122", "−"}, // 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("") +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 + |