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

mawiesne pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opennlp.git

commit c04344c19263824365584e1fbcb7c1887305c681
Author: Richard Zowalla <[email protected]>
AuthorDate: Sun Mar 15 19:30:59 2026 +0100

     OPENNLP-1735:  NumberUtil: Replace Locale.of() with 
Locale.forLanguageTag() to avoid  IllformedLocaleException on malformed 
language codes, preserving the  documented return-false / 
IllegalArgumentException behavior
---
 .../java/opennlp/uima/normalizer/NumberUtil.java   | 23 +++++++++++-----------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git 
a/opennlp-extensions/opennlp-uima/src/main/java/opennlp/uima/normalizer/NumberUtil.java
 
b/opennlp-extensions/opennlp-uima/src/main/java/opennlp/uima/normalizer/NumberUtil.java
index f14df8ec..bc1dc6b9 100644
--- 
a/opennlp-extensions/opennlp-uima/src/main/java/opennlp/uima/normalizer/NumberUtil.java
+++ 
b/opennlp-extensions/opennlp-uima/src/main/java/opennlp/uima/normalizer/NumberUtil.java
@@ -36,21 +36,19 @@ public final class NumberUtil {
    * @return true if the language is supported
    */
   public static boolean isLanguageSupported(String languageCode) {
-    Locale locale = Locale.of(languageCode);
+    Locale locale = Locale.forLanguageTag(languageCode);
 
-    Locale[] possibleLocales = NumberFormat.getAvailableLocales();
-
-    boolean isLocaleSupported = false;
+    if (locale.getLanguage().isEmpty()) {
+      return false;
+    }
 
-    for (Locale possibleLocale : possibleLocales) {
-      // search if locale is contained
+    for (Locale possibleLocale : NumberFormat.getAvailableLocales()) {
       if (possibleLocale.equals(locale)) {
-        isLocaleSupported = true;
-        break;
+        return true;
       }
     }
 
-    return isLocaleSupported;
+    return false;
   }
 
   /**
@@ -58,7 +56,7 @@ public final class NumberUtil {
    *
    * @param number The suspected number to parse.
    * @param languageCode A ISO conform language code, e.g. "en", "pt"
-   *                     
+   *
    * @return The parsed {@link Number}.
    * @throws ParseException Thrown if errors occurred during parsing.
    * @throws IllegalArgumentException Thrown if the {@code languageCode} is 
not supported.
@@ -66,11 +64,12 @@ public final class NumberUtil {
   public static Number parse(String number, String languageCode)
       throws ParseException {
 
-    if (!isLanguageSupported(languageCode)) {
+    Locale locale = Locale.forLanguageTag(languageCode);
+
+    if (locale.getLanguage().isEmpty() || !isLanguageSupported(languageCode)) {
       throw new IllegalArgumentException("Language " + languageCode + " is not 
supported!");
     }
 
-    Locale locale = Locale.of(languageCode);
     NumberFormat numberFormat = NumberFormat.getInstance(locale);
     number = WHITESPACE_PATTERN.matcher(number).replaceAll("");
     return numberFormat.parse(number);

Reply via email to