src/java.base/share/classes/sun/util/locale/provider/LocaleProviderAdapter.java
Print this page
@@ -86,12 +86,11 @@
return TEXT_RESOURCES_PACKAGE;
}
}
/**
- * LocaleProviderAdapter preference list. The default list is intended
- * to behave the same manner in JDK7.
+ * LocaleProviderAdapter preference list.
*/
private static final List<Type> adapterPreference;
/**
* JRE Locale Data Adapter instance
@@ -175,11 +174,18 @@
defaultLocaleProviderAdapter = Type.FALLBACK;
} else {
defaultLocaleProviderAdapter = Type.JRE;
}
} else {
- // Default preference list
+ // Default preference list.
+ try {
+ cldrLocaleProviderAdapter = new CLDRLocaleProviderAdapter();
+ typeList.add(Type.CLDR);
+ defaultLocaleProviderAdapter = Type.CLDR;
+ } catch (UnsupportedOperationException e) {
+ LocaleServiceProviderPool.config(LocaleProviderAdapter.class, e.toString());
+ }
typeList.add(Type.JRE);
typeList.add(Type.SPI);
defaultLocaleProviderAdapter = Type.JRE;
}
@@ -211,11 +217,14 @@
}
public static LocaleProviderAdapter getResourceBundleBased() {
for (Type type : getAdapterPreference()) {
if (type == Type.JRE || type == Type.CLDR || type == Type.FALLBACK) {
- return forType(type);
+ LocaleProviderAdapter adapter = forType(type);
+ if (adapter != null) {
+ return adapter;
+ }
}
}
// Shouldn't happen.
throw new InternalError();
}
@@ -293,32 +302,13 @@
/**
* A utility method for implementing the default LocaleServiceProvider.isSupportedLocale
* for the JRE, CLDR, and FALLBACK adapters.
*/
- public static boolean isSupportedLocale(Locale locale, LocaleProviderAdapter.Type type, Set<String> langtags) {
+ public boolean isSupportedProviderLocale(Locale locale, Set<String> langtags) {
+ LocaleProviderAdapter.Type type = getAdapterType();
assert type == Type.JRE || type == Type.CLDR || type == Type.FALLBACK;
- if (Locale.ROOT.equals(locale)) {
- return true;
- }
-
- if (type == Type.FALLBACK) {
- // no other locales except ROOT are supported for FALLBACK
- return false;
- }
-
- locale = locale.stripExtensions();
- if (langtags.contains(locale.toLanguageTag())) {
- return true;
- }
- if (type == Type.JRE) {
- String oldname = locale.toString().replace('_', '-');
- return langtags.contains(oldname) ||
- "ja-JP-JP".equals(oldname) ||
- "th-TH-TH".equals(oldname) ||
- "no-NO-NY".equals(oldname);
- }
return false;
}
public static Locale[] toLocaleArray(Set<String> tags) {
Locale[] locs = new Locale[tags.size() + 1];