jdk/test/java/util/PluggableLocale/providersrc/LocaleNameProviderImpl.java
changeset 14185 916ec0a4d039
parent 5506 202f599c92aa
child 14342 8435a30053c1
--- a/jdk/test/java/util/PluggableLocale/providersrc/LocaleNameProviderImpl.java	Mon Oct 15 22:34:35 2012 +0100
+++ b/jdk/test/java/util/PluggableLocale/providersrc/LocaleNameProviderImpl.java	Tue Oct 16 10:59:21 2012 -0700
@@ -37,57 +37,64 @@
                              Locale.JAPAN,
                              new Locale("ja", "JP", "osaka"),
                              new Locale("ja", "JP", "kyoto"),
-                             new Locale("xx")};
+                             new Locale("xx"),
+                             new Locale("yy", "YY", "YYYY")};
     static List<Locale> availList = Arrays.asList(avail);
     public Locale[] getAvailableLocales() {
         return avail;
     }
 
+    @Override
     public String getDisplayLanguage(String lang, Locale target) {
+        return getDisplayString(lang, target);
+    }
+
+    @Override
+    public String getDisplayCountry(String ctry, Locale target) {
+        return getDisplayString(ctry, target);
+    }
+
+    @Override
+    public String getDisplayVariant(String vrnt, Locale target) {
+        return getDisplayString(vrnt, target);
+    }
+
+    private String getDisplayString(String key, Locale target) {
         if (!Utils.supportsLocale(availList, target)) {
             throw new IllegalArgumentException("locale is not supported: "+target);
         }
 
         String ret = null;
 
+        if (target.getLanguage().equals("yy") &&
+            target.getCountry().equals("YY")) {
+            String vrnt = target.getVariant();
+            if (vrnt.startsWith("YYYY")) {
+                switch (key) {
+                    case "yy":
+                    case "YY":
+                        ret = "waiwai";
+                        break;
+
+                    case "YYYY":
+                        if (vrnt.equals("YYYY_suffix")) {
+                            // for LocaleNameProviderTest.variantFallbackTest()
+                            throw new RuntimeException(vrnt);
+                        } else {
+                            ret = "waiwai";
+                        }
+                        break;
+                }
+            }
+        } else {
+            // resource bundle based (allows fallback)
         try {
             ResourceBundle rb = ResourceBundle.getBundle("com.bar.LocaleNames", target);
-            ret = rb.getString(lang);
+                ret = rb.getString(key);
         } catch (MissingResourceException mre) {
         }
+        }
 
         return ret;
     }
-
-    public String getDisplayCountry(String ctry, Locale target) {
-        if (!Utils.supportsLocale(availList, target)) {
-            throw new IllegalArgumentException("locale is not supported: "+target);
         }
-
-        String ret = null;
-
-        try {
-            ResourceBundle rb = ResourceBundle.getBundle("LocaleNames", target);
-            ret = rb.getString(ctry);
-        } catch (MissingResourceException mre) {
-        }
-
-        return ret;
-    }
-
-    public String getDisplayVariant(String vrnt, Locale target) {
-        if (!Utils.supportsLocale(availList, target)) {
-            throw new IllegalArgumentException("locale is not supported: "+target);
-        }
-
-        String ret = null;
-
-        try {
-            ResourceBundle rb = ResourceBundle.getBundle("LocaleNames", target);
-            ret = rb.getString(vrnt);
-        } catch (MissingResourceException mre) {
-        }
-
-        return ret;
-    }
-}