You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2024/07/19 15:35:42 UTC

(commons-lang) branch master updated (00e530042 -> 0f4dee845)

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git


    from 00e530042 [LANG-1745] RandomStringUtils.random() with a negative character index should throw IllegalArgumentException (#1247)
     new 3ebaac5c0 Format nits
     new effb8c7d3 Javadoc
     new e79f81f74 Format nits
     new 8f579b4f3 Merge branch 'master' of https://gitbox.apache.org/repos/asf/commons-lang.git
     new 0f4dee845 LocaleUtils.toLocale(String) cannot parse four segments

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/changes/changes.xml                            |  1 +
 .../java/org/apache/commons/lang3/LocaleUtils.java | 47 ++++++++++++++--------
 .../org/apache/commons/lang3/LocaleUtilsTest.java  |  9 ++---
 3 files changed, 36 insertions(+), 21 deletions(-)


(commons-lang) 02/05: Javadoc

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git

commit effb8c7d3c333ddfcbeb8c467d673bff866c9957
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Jul 19 11:07:26 2024 -0400

    Javadoc
---
 src/main/java/org/apache/commons/lang3/LocaleUtils.java | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/main/java/org/apache/commons/lang3/LocaleUtils.java b/src/main/java/org/apache/commons/lang3/LocaleUtils.java
index bd6b97447..df2f4885f 100644
--- a/src/main/java/org/apache/commons/lang3/LocaleUtils.java
+++ b/src/main/java/org/apache/commons/lang3/LocaleUtils.java
@@ -52,9 +52,20 @@ public class LocaleUtils {
             AVAILABLE_LOCALE_SET = Collections.unmodifiableSet(new HashSet<>(list));
         }
     }
+
+    /**
+     * The underscore character {@code '}{@value}{@code '}.
+     */
     private static final char UNDERSCORE = '_';
+
+    /**
+     * The undetermined language {@value}.
+     */
     private static final String UNDETERMINED = "und";
 
+    /**
+     * The dash character {@code '}{@value}{@code '}.
+     */
     private static final char DASH = '-';
 
     /** Concurrent map of language locales by country. */


(commons-lang) 01/05: Format nits

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git

commit 3ebaac5c02a209dfc28f4a50700153da20a61265
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Jul 19 11:03:42 2024 -0400

    Format nits
---
 src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java b/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
index c1f7500c3..6205283f5 100644
--- a/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
@@ -539,10 +539,8 @@ public class LocaleUtilsTest extends AbstractLangTest {
             assertValidToLocale("us_EN_SFsafdFDsdfF", "us", "EN", "SFSAFDFDSDFF");
         }
 
-        assertThrows(
-                IllegalArgumentException.class, () -> LocaleUtils.toLocale("us_EN-a"), "Should fail as no consistent delimiter");
-        assertThrows(
-                IllegalArgumentException.class, () -> LocaleUtils.toLocale("uu_UU_"), "Must be 3, 5 or 7+ in length");
+        assertThrows(IllegalArgumentException.class, () -> LocaleUtils.toLocale("us_EN-a"), "Should fail as no consistent delimiter");
+        assertThrows(IllegalArgumentException.class, () -> LocaleUtils.toLocale("uu_UU_"), "Must be 3, 5 or 7+ in length");
     }
 
     /**


(commons-lang) 04/05: Merge branch 'master' of https://gitbox.apache.org/repos/asf/commons-lang.git

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git

commit 8f579b4f3074b79c44771ce6c6dec1d253401f50
Merge: e79f81f74 00e530042
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Jul 19 11:25:36 2024 -0400

    Merge branch 'master' of https://gitbox.apache.org/repos/asf/commons-lang.git

 src/changes/changes.xml                            | 17 ++++++------
 .../apache/commons/lang3/RandomStringUtils.java    |  2 ++
 .../commons/lang3/RandomStringUtilsTest.java       | 30 ++++++++++++++++++----
 .../commons/lang3/time/FastDateFormatTest.java     | 23 ++++++++++++++---
 4 files changed, 56 insertions(+), 16 deletions(-)


(commons-lang) 03/05: Format nits

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git

commit e79f81f746db910d231733dbdee03728547aed0f
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Jul 19 11:08:08 2024 -0400

    Format nits
---
 src/main/java/org/apache/commons/lang3/LocaleUtils.java | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/apache/commons/lang3/LocaleUtils.java b/src/main/java/org/apache/commons/lang3/LocaleUtils.java
index df2f4885f..8548ba4ee 100644
--- a/src/main/java/org/apache/commons/lang3/LocaleUtils.java
+++ b/src/main/java/org/apache/commons/lang3/LocaleUtils.java
@@ -68,13 +68,15 @@ public class LocaleUtils {
      */
     private static final char DASH = '-';
 
-    /** Concurrent map of language locales by country. */
-    private static final ConcurrentMap<String, List<Locale>> cLanguagesByCountry =
-        new ConcurrentHashMap<>();
+    /**
+     * Concurrent map of language locales by country.
+     */
+    private static final ConcurrentMap<String, List<Locale>> cLanguagesByCountry = new ConcurrentHashMap<>();
 
-    /** Concurrent map of country locales by language. */
-    private static final ConcurrentMap<String, List<Locale>> cCountriesByLanguage =
-        new ConcurrentHashMap<>();
+    /**
+     * Concurrent map of country locales by language.
+     */
+    private static final ConcurrentMap<String, List<Locale>> cCountriesByLanguage = new ConcurrentHashMap<>();
 
     /**
      * Obtains an unmodifiable list of installed locales.


(commons-lang) 05/05: LocaleUtils.toLocale(String) cannot parse four segments

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git

commit 0f4dee8451df2ec68a1f201a859f3955a7abd504
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Jul 19 11:35:33 2024 -0400

    LocaleUtils.toLocale(String) cannot parse four segments
---
 src/changes/changes.xml                            |  1 +
 .../java/org/apache/commons/lang3/LocaleUtils.java | 22 ++++++++++++----------
 .../org/apache/commons/lang3/LocaleUtilsTest.java  |  3 ++-
 3 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 02208f3de..9438361e8 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -49,6 +49,7 @@ The <action> type attribute can be add,update,fix,remove.
     <!-- FIX -->
     <action                   type="fix" dev="ggregory" due-to="Gary Gregory">Reimplement StopWatch internals to use java.time.</action>
     <action issue="LANG-1745" type="fix" dev="ggregory" due-to="Wang Hailong, Gary Gregory">RandomStringUtils.random() with a negative character index should throw IllegalArgumentException.</action>
+    <action issue="LANG-1741" type="fix" dev="ggregory" due-to="Wang Hailong, Gary Gregory">LocaleUtils.toLocale(String) cannot parse four segments.</action>
     <!-- ADD -->
     <action                   type="add" dev="ggregory" due-to="Gary Gregory">Add StopWatch.getSplitDuration() and deprecate getSplitTime().</action>
     <action                   type="add" dev="ggregory" due-to="Gary Gregory">Add StopWatch.getStartInstant() and deprecate getStartTime().</action>
diff --git a/src/main/java/org/apache/commons/lang3/LocaleUtils.java b/src/main/java/org/apache/commons/lang3/LocaleUtils.java
index 8548ba4ee..39b81a490 100644
--- a/src/main/java/org/apache/commons/lang3/LocaleUtils.java
+++ b/src/main/java/org/apache/commons/lang3/LocaleUtils.java
@@ -249,28 +249,30 @@ public class LocaleUtils {
     }
 
     /**
-     * Tries to parse a locale from the given String.
+     * Tries to parse a Locale from the given String.
+     * <p>
+     * See {@Link Locale} for the format.
+     * </p>
      *
-     * @param str the String to parse a locale from.
-     * @return a Locale instance parsed from the given String.
+     * @param str the String to parse as a Locale.
+     * @return a Locale parsed from the given String.
      * @throws IllegalArgumentException if the given String can not be parsed.
+     * @see Locale
      */
     private static Locale parseLocale(final String str) {
         if (isISO639LanguageCode(str)) {
             return new Locale(str);
         }
-
-        final String[] segments = str.indexOf(UNDERSCORE) != -1
-            ? str.split(String.valueOf(UNDERSCORE), -1)
-            : str.split(String.valueOf(DASH), -1);
+        final int limit = 3;
+        final char separator = str.indexOf(UNDERSCORE) != -1 ? UNDERSCORE : DASH;
+        final String[] segments = str.split(String.valueOf(separator), 3);
         final String language = segments[0];
         if (segments.length == 2) {
             final String country = segments[1];
-            if (isISO639LanguageCode(language) && isISO3166CountryCode(country) ||
-                    isNumericAreaCode(country)) {
+            if (isISO639LanguageCode(language) && isISO3166CountryCode(country) || isNumericAreaCode(country)) {
                 return new Locale(language, country);
             }
-        } else if (segments.length == 3) {
+        } else if (segments.length == limit) {
             final String country = segments[1];
             final String variant = segments[2];
             if (isISO639LanguageCode(language) &&
diff --git a/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java b/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
index 6205283f5..dc9e3969d 100644
--- a/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/LocaleUtilsTest.java
@@ -538,9 +538,10 @@ public class LocaleUtilsTest extends AbstractLangTest {
             assertValidToLocale("us_EN_a", "us", "EN", "A");
             assertValidToLocale("us_EN_SFsafdFDsdfF", "us", "EN", "SFSAFDFDSDFF");
         }
-
         assertThrows(IllegalArgumentException.class, () -> LocaleUtils.toLocale("us_EN-a"), "Should fail as no consistent delimiter");
         assertThrows(IllegalArgumentException.class, () -> LocaleUtils.toLocale("uu_UU_"), "Must be 3, 5 or 7+ in length");
+        // LANG-1741
+        assertEquals(new Locale("en", "001", "US_POSIX"), LocaleUtils.toLocale("en_001_US_POSIX"));
     }
 
     /**