--- old/make/jdk/src/classes/build/tools/cldrconverter/ResourceBundleGenerator.java 2018-11-16 17:01:07.932934364 +0530 +++ new/make/jdk/src/classes/build/tools/cldrconverter/ResourceBundleGenerator.java 2018-11-16 17:01:07.572934364 +0530 @@ -33,6 +33,7 @@ import java.util.HashSet; import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.Locale; import java.util.Objects; @@ -106,7 +107,7 @@ } else { encoding = "iso-8859-1"; } - + boolean containsList = false; Formatter fmt = null; if (type == BundleType.TIMEZONE) { fmt = new Formatter(); @@ -166,6 +167,14 @@ fmt.format(" \"%s\",\n", CLDRConverter.saveConvert(s, useJava)); } fmt.format(" };\n"); + } else if (val instanceof List) { + containsList = true; + List values = (List) val; + fmt.format(" final List %s = List.of (\n", metaVal); + for (int index = 0; index < values.size() - 1; index++) { + fmt.format(" \"%s\",\n", CLDRConverter.saveConvert(values.get(index), useJava)); + } + fmt.format(" \"%s\");\n", CLDRConverter.saveConvert(values.get(values.size() - 1), useJava)); } else { fmt.format(" final String %s = \"%s\";\n", metaVal, CLDRConverter.saveConvert((String)val, useJava)); } @@ -195,6 +204,12 @@ if (useJava) { out.println("package sun." + packageName + ";\n"); + // only in the FormatData resource bundles which contains + // list in map + if (baseName.equals("FormatData") && (containsList + || map.values().stream().anyMatch(v -> v instanceof List))) { + out.printf("import java.util.List;\n\n"); + } out.printf("import %s;\n\n", type.getPathName()); out.printf("public class %s%s extends %s {\n", baseName, "root".equals(localeID) ? "" : "_" + localeID, type.getClassName()); @@ -226,6 +241,14 @@ out.println(" \"" + CLDRConverter.saveConvert(s, useJava) + "\","); } out.println(" }\n },"); + } else if (value instanceof List) { + List values = (List) value; + out.println(" { \"" + key + "\",\n List.of("); + for (int index = 0; index < values.size() - 1; index++) { + out.println(" \"" + CLDRConverter.saveConvert(values.get(index), useJava) + "\","); + } + out.println(" \"" + CLDRConverter.saveConvert(values.get(values.size() - 1), useJava) + "\""); + out.println(" )\n },"); } else { throw new RuntimeException("unknown value type: " + value.getClass().getName()); }