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

Print this page
rev 7221 : imported patch 8013903

*** 118,127 **** --- 118,133 ---- * in for the root locale. */ private static LocaleProviderAdapter fallbackLocaleProviderAdapter = null; /** + * Default fallback adapter type, which should return something meaningful in any case. + * This is either JRE or FALLBACK. + */ + static LocaleProviderAdapter.Type defaultLocaleProviderAdapter = null; + + /** * Adapter lookup cache. */ private static ConcurrentMap<Class<? extends LocaleServiceProvider>, ConcurrentMap<Locale, LocaleProviderAdapter>> adapterCache = new ConcurrentHashMap<>();
*** 138,154 **** --- 144,166 ---- Type aType = Type.valueOf(type.trim().toUpperCase(Locale.ROOT)); // load adapter if necessary switch (aType) { case CLDR: + if (cldrLocaleProviderAdapter == null) { cldrLocaleProviderAdapter = new CLDRLocaleProviderAdapter(); + } break; case HOST: + if (hostLocaleProviderAdapter == null) { hostLocaleProviderAdapter = new HostLocaleProviderAdapter(); + } break; } + if (!typeList.contains(aType)) { typeList.add(aType); + } } catch (IllegalArgumentException | UnsupportedOperationException e) { // could be caused by the user specifying wrong // provider name or format in the system property LocaleServiceProviderPool.config(LocaleProviderAdapter.class, e.toString()); }
*** 158,172 **** --- 170,188 ---- if (!typeList.isEmpty()) { if (!typeList.contains(Type.JRE)) { // Append FALLBACK as the last resort. fallbackLocaleProviderAdapter = new FallbackLocaleProviderAdapter(); typeList.add(Type.FALLBACK); + defaultLocaleProviderAdapter = Type.FALLBACK; + } else { + defaultLocaleProviderAdapter = Type.JRE; } } else { // Default preference list typeList.add(Type.JRE); typeList.add(Type.SPI); + defaultLocaleProviderAdapter = Type.JRE; } adapterPreference = Collections.unmodifiableList(typeList); }