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"));
}
/**