feat: Fix Locale adapter using Java 7+ helper method from Locale
Signed-off-by: Jean-Louis Monteiro <jlmonteiro@tomitribe.com>
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 6dd330f..565a2a4 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 @@
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);
}
}