src/share/classes/sun/util/locale/provider/LocaleServiceProviderPool.java

Print this page
rev 7221 : 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);