You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by pa...@apache.org on 2017/02/21 20:13:52 UTC

[lang] LANG-1312: LocaleUtils#toLocale does not support language followed by UN M.49 numeric-3 area code (closes #239)

Repository: commons-lang
Updated Branches:
  refs/heads/master a6443e146 -> 4bd982d1a


LANG-1312: LocaleUtils#toLocale does not support language followed by UN M.49 numeric-3 area code (closes #239)


Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/4bd982d1
Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/4bd982d1
Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/4bd982d1

Branch: refs/heads/master
Commit: 4bd982d1a1df87724682c17c39bf27b5cbe389be
Parents: a6443e1
Author: pascalschumacher <pa...@gmx.net>
Authored: Sun Feb 19 20:39:05 2017 +0100
Committer: pascalschumacher <pa...@gmx.net>
Committed: Tue Feb 21 21:13:45 2017 +0100

----------------------------------------------------------------------
 src/changes/changes.xml                                     | 1 +
 src/main/java/org/apache/commons/lang3/LocaleUtils.java     | 4 +++-
 src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java | 7 +++++++
 3 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-lang/blob/4bd982d1/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index b023f95..13e83b4 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -76,6 +76,7 @@ The <action> type attribute can be add,update,fix,remove.
     <action issue="LANG-1297" type="update" dev="ggregory">Add SystemUtils.getHostName() API.</action>
     <action issue="LANG-1301" type="update" dev="pschumacher" due-to="Karl Heinz Marbaise">Moving apache-rat-plugin configuration into pluginManagement</action>
     <action issue="LANG-1311" type="fix" dev="pschumacher" due-to="Aaron Digulla">TypeUtils.toString() doesn't handle primitive and Object arrays correctly</action>
+    <action issue="LANG-1312" type="fix" dev="pschumacher">LocaleUtils#toLocale does not support language followed by UN M.49 numeric-3 area code</action>
   </release>
 
   <release version="3.5" date="2016-10-13" description="New features including Java 9 detection">

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/4bd982d1/src/main/java/org/apache/commons/lang3/LocaleUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/lang3/LocaleUtils.java b/src/main/java/org/apache/commons/lang3/LocaleUtils.java
index a3126eb..f13b52f 100644
--- a/src/main/java/org/apache/commons/lang3/LocaleUtils.java
+++ b/src/main/java/org/apache/commons/lang3/LocaleUtils.java
@@ -67,6 +67,7 @@ public class LocaleUtils {
      *   LocaleUtils.toLocale("")           = new Locale("", "")
      *   LocaleUtils.toLocale("en")         = new Locale("en", "")
      *   LocaleUtils.toLocale("en_GB")      = new Locale("en", "GB")
+     *   LocaleUtils.toLocale("en_001")     = new Locale("en", "001")
      *   LocaleUtils.toLocale("en_GB_xxx")  = new Locale("en", "GB", "xxx")   (#)
      * </pre>
      *
@@ -134,7 +135,8 @@ public class LocaleUtils {
             case 1:
                 if (StringUtils.isAllLowerCase(split[0]) &&
                     (split[0].length() == 2 || split[0].length() == 3) &&
-                     split[1].length() == 2 && StringUtils.isAllUpperCase(split[1])) {
+                     (split[1].length() == 2 && StringUtils.isAllUpperCase(split[1])) ||
+                      (split[1].length() == 3 && StringUtils.isNumeric(split[1]))) {
                     return new Locale(split[0], split[1]);
                 }
             throw new IllegalArgumentException("Invalid locale format: " + str);

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/4bd982d1/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java b/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
index 4a867ba..79198af 100644
--- a/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
@@ -505,6 +505,13 @@ public class LocaleUtilsTest  {
         assertValidToLocale("fr__POSIX", "fr", "", "POSIX");
     }
 
+    @Test
+    public void testLanguageAndUNM49Numeric3AreaCodeLang1312() {
+        assertValidToLocale("en_001", "en", "001");
+        assertValidToLocale("en_150", "en", "150");
+        assertValidToLocale("ar_001", "ar", "001");
+    }
+
     /**
      * Tests #LANG-865, strings starting with an underscore.
      */