make/jdk/src/classes/build/tools/cldrconverter/ResourceBundleGenerator.java
changeset 49918 8b9c78f0a712
parent 49904 cadca99d52e7
child 58825 c3696c94049d
--- a/make/jdk/src/classes/build/tools/cldrconverter/ResourceBundleGenerator.java	Fri Apr 27 15:55:29 2018 -0700
+++ b/make/jdk/src/classes/build/tools/cldrconverter/ResourceBundleGenerator.java	Mon Apr 30 11:59:42 2018 +0530
@@ -270,7 +270,8 @@
             out.printf("public class %s implements LocaleDataMetaInfo {\n", className);
             out.printf("    private static final Map<String, String> resourceNameToLocales = new HashMap<>();\n" +
                        (CLDRConverter.isBaseModule ?
-                       "    private static final Map<Locale, String[]> parentLocalesMap = new HashMap<>();\n\n" :
+                       "    private static final Map<Locale, String[]> parentLocalesMap = new HashMap<>();\n" +
+                       "    private static final Map<String, String> languageAliasMap = new HashMap<>();\n\n" :
                        "\n") +
                        "    static {\n");
 
@@ -301,10 +302,16 @@
                 } else {
                     if ("AvailableLocales".equals(key)) {
                         out.printf("        resourceNameToLocales.put(\"%s\",\n", key);
-                        out.printf("              \"%s\");\n", toLocaleList(metaInfo.get(key), false));
+                        out.printf("              \"%s\");\n", toLocaleList(applyLanguageAliases(metaInfo.get(key)), false));
                     }
                 }
             }
+            // for languageAliasMap
+            if (CLDRConverter.isBaseModule) {
+                CLDRConverter.handlerSupplMeta.getLanguageAliasData().forEach((key, value) -> {
+                    out.printf("                languageAliasMap.put(\"%s\", \"%s\");\n", key, value);
+                });
+            }
 
             out.printf("    }\n\n");
 
@@ -340,6 +347,10 @@
 
             if (CLDRConverter.isBaseModule) {
                 out.printf("    @Override\n" +
+                           "    public Map<String, String> getLanguageAliasMap() {\n" +
+                           "        return languageAliasMap;\n" +
+                           "    }\n\n");
+                out.printf("    @Override\n" +
                            "    public Map<String, String> tzCanonicalIDs() {\n" +
                            "        return TZCanonicalIDMapHolder.tzCanonicalIDMap;\n" +
                            "    }\n\n");
@@ -377,4 +388,13 @@
         }
         return sb.toString();
     }
+
+    private static SortedSet<String> applyLanguageAliases(SortedSet<String> tags) {
+        CLDRConverter.handlerSupplMeta.getLanguageAliasData().forEach((key, value) -> {
+            if (tags.remove(key)) {
+                tags.add(value);
+            }
+        });
+        return tags;
+    }
 }