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);


Reply via email to