src/share/classes/sun/util/locale/provider/LocaleServiceProviderPool.java
Print this page
rev 7121 : imported patch 8013903
*** 125,163 ****
* @param c class of the locale sensitive service
*/
private LocaleServiceProviderPool (final Class<? extends LocaleServiceProvider> c) {
providerClass = c;
! // Add the JRE Locale Data Adapter implementation.
! providers.putIfAbsent(LocaleProviderAdapter.Type.JRE,
! LocaleProviderAdapter.forJRE().getLocaleServiceProvider(c));
!
! // Add the SPI Locale Data Adapter implementation.
! LocaleProviderAdapter lda = LocaleProviderAdapter.forType(LocaleProviderAdapter.Type.SPI);
LocaleServiceProvider provider = lda.getLocaleServiceProvider(c);
if (provider != null) {
! providers.putIfAbsent(LocaleProviderAdapter.Type.SPI, provider);
}
-
- // Add the CLDR Locale Data Adapter implementation, if needed.
- lda = LocaleProviderAdapter.forType(LocaleProviderAdapter.Type.CLDR);
- if (lda != null) {
- provider = lda.getLocaleServiceProvider(c);
- if (provider != null) {
- providers.putIfAbsent(LocaleProviderAdapter.Type.CLDR, provider);
}
}
-
- // Add the Host Locale Data Adapter implementation, if needed.
- lda = LocaleProviderAdapter.forType(LocaleProviderAdapter.Type.HOST);
- if (lda != null) {
- provider = lda.getLocaleServiceProvider(c);
- if (provider != null) {
- providers.putIfAbsent(LocaleProviderAdapter.Type.HOST, provider);
}
- }
- }
static void config(Class<? extends Object> caller, String message) {
PlatformLogger logger = PlatformLogger.getLogger(caller.getCanonicalName());
logger.config(message);
}
--- 125,144 ----
* @param c class of the locale sensitive service
*/
private LocaleServiceProviderPool (final Class<? extends LocaleServiceProvider> c) {
providerClass = c;
! for (LocaleProviderAdapter.Type type : LocaleProviderAdapter.getAdapterPreference()) {
! LocaleProviderAdapter lda = LocaleProviderAdapter.forType(type);
! if (lda != null) {
LocaleServiceProvider provider = lda.getLocaleServiceProvider(c);
if (provider != null) {
! providers.putIfAbsent(type, provider);
}
}
}
}
static void config(Class<? extends Object> caller, String message) {
PlatformLogger logger = PlatformLogger.getLogger(caller.getCanonicalName());
logger.config(message);
}
*** 244,254 ****
*
* @return true if any provider (other than JRE) is available
*/
boolean hasProviders() {
return providers.size() != 1 ||
! providers.get(LocaleProviderAdapter.Type.JRE) == null;
}
/**
* Returns the provider's localized object for the specified
* locale.
--- 225,236 ----
*
* @return true if any provider (other than JRE) is available
*/
boolean hasProviders() {
return providers.size() != 1 ||
! (providers.get(LocaleProviderAdapter.Type.JRE) == null &&
! providers.get(LocaleProviderAdapter.Type.FALLBACK) == null);
}
/**
* Returns the provider's localized object for the specified
* locale.
*** 294,305 ****
}
// Check whether JRE is the sole locale data provider or not,
// and directly call it if it is.
if (!hasProviders()) {
! return getter.getObject(
! (P)providers.get(LocaleProviderAdapter.Type.JRE),
locale, key, params);
}
List<Locale> lookupLocales = getLookupLocales(locale);
--- 276,286 ----
}
// Check whether JRE is the sole locale data provider or not,
// and directly call it if it is.
if (!hasProviders()) {
! return getter.getObject((P)providers.get(LocaleProviderAdapter.defaultLocaleProviderAdapter),
locale, key, params);
}
List<Locale> lookupLocales = getLookupLocales(locale);