Author: sebb
Date: Tue Feb 11 02:34:36 2014
New Revision: 1566963
URL: http://svn.apache.org/r1566963
Log:
LANG-972 NumberUtils#isNumber does not allow for hex 0XABCD
Modified:
commons/proper/lang/trunk/src/changes/changes.xml
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
Modified: commons/proper/lang/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/changes/changes.xml?rev=1566963&r1=1566962&r2=1566963&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/changes/changes.xml [utf-8] (original)
+++ commons/proper/lang/trunk/src/changes/changes.xml [utf-8] Tue Feb 11
02:34:36 2014
@@ -22,6 +22,7 @@
<body>
<release version="3.3" date="TBA" description="Bugfix and Feature release">
+ <action issue="LANG-972" type="fix" dev="sebb">NumberUtils#isNumber does
not allow for hex 0XABCD</action>
<action issue="LANG-969" type="fix" dev="ggregory" due-to="Matt
Bishop">StringUtils.toEncodedString(byte[], Charset) needlessly throws
UnsupportedEncodingException</action>
<action issue="LANG-970" type="add" dev="ggregory">Add APIs MutableBoolean
setTrue() and setFalse()</action>
<action issue="LANG-946" type="fix" dev="britter">ConstantInitializerTest
fails when building with IBM JDK 7</action>
Modified:
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java?rev=1566963&r1=1566962&r2=1566963&view=diff
==============================================================================
---
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
(original)
+++
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
Tue Feb 11 02:34:36 2014
@@ -1345,7 +1345,13 @@ public class NumberUtils {
boolean foundDigit = false;
// deal with any possible sign up front
final int start = (chars[0] == '-') ? 1 : 0;
- if (sz > start + 1 && chars[start] == '0' && chars[start + 1] == 'x') {
+ if (sz > start + 1 && chars[start] == '0'
+ &&
+ (
+ (chars[start + 1] == 'x') ||
+ (chars[start + 1] == 'X')
+ )
+ ) {
int i = start + 2;
if (i == sz) {
return false; // str == "0x"
Modified:
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java?rev=1566963&r1=1566962&r2=1566963&view=diff
==============================================================================
---
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
(original)
+++
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
Tue Feb 11 02:34:36 2014
@@ -1225,6 +1225,12 @@ public class NumberUtilsTest {
compareIsNumberWithCreateNumber("1.1L", false); // LANG-664
}
+ @Test
+ public void testLANG972() {
+ compareIsNumberWithCreateNumber("0xABCD", true);
+ compareIsNumberWithCreateNumber("0XABCD", true);
+ }
+
private void compareIsNumberWithCreateNumber(final String val, final
boolean expected) {
final boolean isValid = NumberUtils.isNumber(val);
final boolean canCreate = checkCreateNumber(val);