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

jlmonteiro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/johnzon.git


The following commit(s) were added to refs/heads/master by this push:
     new 09d6bf8c feat: Fix Locale adapter using Java 7+ helper method from 
Locale
09d6bf8c is described below

commit 09d6bf8cf72a16774de8c876893e0ed2cbaa54cc
Author: Jean-Louis Monteiro <jlmonte...@tomitribe.com>
AuthorDate: Wed Oct 11 15:15:26 2023 +0200

    feat: Fix Locale adapter using Java 7+ helper method from Locale
    
    Signed-off-by: Jean-Louis Monteiro <jlmonte...@tomitribe.com>
---
 .../johnzon/mapper/converter/LocaleConverter.java  | 32 ++--------------------
 1 file changed, 2 insertions(+), 30 deletions(-)

diff --git 
a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/converter/LocaleConverter.java
 
b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/converter/LocaleConverter.java
index 6dd330fa..565a2a42 100644
--- 
a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/converter/LocaleConverter.java
+++ 
b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/converter/LocaleConverter.java
@@ -53,35 +53,7 @@ public class LocaleConverter implements 
TypeAwareAdapter<Locale, String> {
         if (locale == null) {
             return null;
         }
-        final int len = locale.length();
-        if (len != 2 && len != 5 && len < 7) {
-            throw new IllegalArgumentException("Invalid locale format: " + 
locale);
-        }
-        final char ch0 = locale.charAt(0);
-        final char ch1 = locale.charAt(1);
-        if (ch0 < 'a' || ch0 > 'z' || ch1 < 'a' || ch1 > 'z') {
-            throw new IllegalArgumentException("Invalid locale format: " + 
locale);
-        }
-        if (len == 2) {
-            return new Locale(locale, "");
-        }
-        if (locale.charAt(2) != '_') {
-            throw new IllegalArgumentException("Invalid locale format: " + 
locale);
-        }
-        final char ch3 = locale.charAt(3);
-        if (ch3 == '_') {
-            return new Locale(locale.substring(0, 2), "", locale.substring(4));
-        }
-        final char ch4 = locale.charAt(4);
-        if (ch3 < 'A' || ch3 > 'Z' || ch4 < 'A' || ch4 > 'Z') {
-            throw new IllegalArgumentException("Invalid locale format: " + 
locale);
-        }
-        if (len == 5) {
-            return new Locale(locale.substring(0, 2), locale.substring(3, 5));
-        }
-        if (locale.charAt(5) != '_') {
-            throw new IllegalArgumentException("Invalid locale format: " + 
locale);
-        }
-        return new Locale(locale.substring(0, 2), locale.substring(3, 5), 
locale.substring(6));
+
+        return Locale.forLanguageTag(locale);
     }
 }

Reply via email to