< prev index next >
src/java.base/share/classes/sun/util/cldr/CLDRLocaleProviderAdapter.java
Print this page
*** 43,52 ****
--- 43,53 ----
import java.util.ServiceConfigurationError;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.concurrent.ConcurrentHashMap;
import java.util.spi.CalendarDataProvider;
+ import java.util.spi.CalendarNameProvider;
import java.util.spi.TimeZoneNameProvider;
import sun.util.locale.provider.JRELocaleProviderAdapter;
import sun.util.locale.provider.LocaleDataMetaInfo;
import sun.util.locale.provider.LocaleProviderAdapter;
*** 131,140 ****
--- 132,159 ----
}
return calendarDataProvider;
}
@Override
+ public CalendarNameProvider getCalendarNameProvider() {
+ if (calendarNameProvider == null) {
+ CalendarNameProvider provider = AccessController.doPrivileged(
+ (PrivilegedAction<CalendarNameProvider>) ()
+ -> new CLDRCalendarNameProviderImpl(
+ getAdapterType(),
+ getLanguageTagSet("FormatData")));
+
+ synchronized (this) {
+ if (calendarNameProvider == null) {
+ calendarNameProvider = provider;
+ }
+ }
+ }
+ return calendarNameProvider;
+ }
+
+ @Override
public CollatorProvider getCollatorProvider() {
return null;
}
@Override
*** 164,174 ****
locs[index++] = Locale.forLanguageTag(tag);
}
return locs;
}
! private Locale applyAliases(Locale loc) {
if (langAliasesMap.isEmpty()) {
langAliasesMap = baseMetaInfo.getLanguageAliasMap();
}
Locale locale = langAliasesCache.get(loc);
if (locale == null) {
--- 183,193 ----
locs[index++] = Locale.forLanguageTag(tag);
}
return locs;
}
! private static Locale applyAliases(Locale loc) {
if (langAliasesMap.isEmpty()) {
langAliasesMap = baseMetaInfo.getLanguageAliasMap();
}
Locale locale = langAliasesCache.get(loc);
if (locale == null) {
*** 262,284 ****
return parent;
}
/**
! * This method returns equivalent CLDR supported locale for zh-HK,
! * no, no-NO locales so that COMPAT locales do not precede
! * those locales during ResourceBundle search path.
*/
private static Locale getEquivalentLoc(Locale locale) {
switch (locale.toString()) {
- case "zh_HK":
- return Locale.forLanguageTag("zh-Hant-HK");
case "no":
case "no_NO":
return Locale.forLanguageTag("nb");
}
! return locale;
}
@Override
public boolean isSupportedProviderLocale(Locale locale, Set<String> langtags) {
return Locale.ROOT.equals(locale)
--- 281,302 ----
return parent;
}
/**
! * This method returns equivalent CLDR supported locale
! * for no, no-NO locales so that COMPAT locales do not precede
! * those locales during ResourceBundle search path, also if an alias exists for a locale,
! * it returns equivalent locale, e.g for zh_HK it returns zh_Hant-HK.
*/
private static Locale getEquivalentLoc(Locale locale) {
switch (locale.toString()) {
case "no":
case "no_NO":
return Locale.forLanguageTag("nb");
}
! return applyAliases(locale);
}
@Override
public boolean isSupportedProviderLocale(Locale locale, Set<String> langtags) {
return Locale.ROOT.equals(locale)
< prev index next >