< prev index next >

src/java.base/share/classes/java/util/Locale.java

Print this page
rev 54380 : 8221701: Archive constant BaseLocales
Reviewed-by: naoto

*** 482,586 **** * @author Mark Davis * @since 1.1 */ public final class Locale implements Cloneable, Serializable { - private static final Cache LOCALECACHE = new Cache(); - /** Useful constant for language. */ ! public static final Locale ENGLISH = createConstant("en", ""); /** Useful constant for language. */ ! public static final Locale FRENCH = createConstant("fr", ""); /** Useful constant for language. */ ! public static final Locale GERMAN = createConstant("de", ""); /** Useful constant for language. */ ! public static final Locale ITALIAN = createConstant("it", ""); /** Useful constant for language. */ ! public static final Locale JAPANESE = createConstant("ja", ""); /** Useful constant for language. */ ! public static final Locale KOREAN = createConstant("ko", ""); /** Useful constant for language. */ ! public static final Locale CHINESE = createConstant("zh", ""); /** Useful constant for language. */ ! public static final Locale SIMPLIFIED_CHINESE = createConstant("zh", "CN"); /** Useful constant for language. */ ! public static final Locale TRADITIONAL_CHINESE = createConstant("zh", "TW"); /** Useful constant for country. */ ! public static final Locale FRANCE = createConstant("fr", "FR"); /** Useful constant for country. */ ! public static final Locale GERMANY = createConstant("de", "DE"); /** Useful constant for country. */ ! public static final Locale ITALY = createConstant("it", "IT"); /** Useful constant for country. */ ! public static final Locale JAPAN = createConstant("ja", "JP"); /** Useful constant for country. */ ! public static final Locale KOREA = createConstant("ko", "KR"); /** Useful constant for country. */ ! public static final Locale CHINA = SIMPLIFIED_CHINESE; /** Useful constant for country. */ ! public static final Locale PRC = SIMPLIFIED_CHINESE; /** Useful constant for country. */ ! public static final Locale TAIWAN = TRADITIONAL_CHINESE; /** Useful constant for country. */ ! public static final Locale UK = createConstant("en", "GB"); /** Useful constant for country. */ ! public static final Locale US = createConstant("en", "US"); /** Useful constant for country. */ ! public static final Locale CANADA = createConstant("en", "CA"); /** Useful constant for country. */ ! public static final Locale CANADA_FRENCH = createConstant("fr", "CA"); /** ! * Useful constant for the root locale. The root locale is the locale whose ! * language, country, and variant are empty ("") strings. This is regarded ! * as the base locale of all locales, and is used as the language/country ! * neutral locale for the locale sensitive operations. ! * ! * @since 1.6 */ ! public static final Locale ROOT = createConstant("", ""); /** * The key for the private use extension ('x'). * * @see #getExtension(char) --- 482,619 ---- * @author Mark Davis * @since 1.1 */ public final class Locale implements Cloneable, Serializable { /** Useful constant for language. */ ! public static final Locale ENGLISH; /** Useful constant for language. */ ! public static final Locale FRENCH; /** Useful constant for language. */ ! public static final Locale GERMAN; /** Useful constant for language. */ ! public static final Locale ITALIAN; /** Useful constant for language. */ ! public static final Locale JAPANESE; /** Useful constant for language. */ ! public static final Locale KOREAN; /** Useful constant for language. */ ! public static final Locale CHINESE; /** Useful constant for language. */ ! public static final Locale SIMPLIFIED_CHINESE; /** Useful constant for language. */ ! public static final Locale TRADITIONAL_CHINESE; /** Useful constant for country. */ ! public static final Locale FRANCE; /** Useful constant for country. */ ! public static final Locale GERMANY; /** Useful constant for country. */ ! public static final Locale ITALY; /** Useful constant for country. */ ! public static final Locale JAPAN; /** Useful constant for country. */ ! public static final Locale KOREA; /** Useful constant for country. */ ! public static final Locale UK; /** Useful constant for country. */ ! public static final Locale US; /** Useful constant for country. */ ! public static final Locale CANADA; /** Useful constant for country. */ ! public static final Locale CANADA_FRENCH; ! ! /** ! * Useful constant for the root locale. The root locale is the locale whose ! * language, country, and variant are empty ("") strings. This is regarded ! * as the base locale of all locales, and is used as the language/country ! * neutral locale for the locale sensitive operations. ! * ! * @since 1.6 ! */ ! public static final Locale ROOT; ! ! private static final Map<BaseLocale, Locale> CONSTANT_LOCALES = new HashMap<>(); ! ! static { ! ENGLISH = createConstant(BaseLocale.ENGLISH); ! FRENCH = createConstant(BaseLocale.FRENCH); ! GERMAN = createConstant(BaseLocale.GERMAN); ! ITALIAN = createConstant(BaseLocale.ITALIAN); ! JAPANESE = createConstant(BaseLocale.JAPANESE); ! KOREAN = createConstant(BaseLocale.KOREAN); ! CHINESE = createConstant(BaseLocale.CHINESE); ! SIMPLIFIED_CHINESE = createConstant(BaseLocale.SIMPLIFIED_CHINESE); ! TRADITIONAL_CHINESE = createConstant(BaseLocale.TRADITIONAL_CHINESE); ! FRANCE = createConstant(BaseLocale.FRANCE); ! GERMANY = createConstant(BaseLocale.GERMANY); ! ITALY = createConstant(BaseLocale.ITALY); ! JAPAN = createConstant(BaseLocale.JAPAN); ! KOREA = createConstant(BaseLocale.KOREA); ! UK = createConstant(BaseLocale.UK); ! US = createConstant(BaseLocale.US); ! CANADA = createConstant(BaseLocale.CANADA); ! CANADA_FRENCH = createConstant(BaseLocale.CANADA_FRENCH); ! ROOT = createConstant(BaseLocale.ROOT); ! } /** Useful constant for country. */ ! public static final Locale CHINA = SIMPLIFIED_CHINESE; /** Useful constant for country. */ ! public static final Locale PRC = SIMPLIFIED_CHINESE; /** Useful constant for country. */ ! public static final Locale TAIWAN = TRADITIONAL_CHINESE; /** ! * This method must be called only for creating the Locale.* ! * constants due to making shortcuts. */ ! private static Locale createConstant(byte baseType) { ! BaseLocale base = BaseLocale.constantBaseLocales[baseType]; ! Locale locale = new Locale(base, null); ! CONSTANT_LOCALES.put(base, locale); ! return locale; ! } /** * The key for the private use extension ('x'). * * @see #getExtension(char)
*** 707,717 **** * @param variant Any arbitrary value used to indicate a variation of a <code>Locale</code>. * See the <code>Locale</code> class description for the details. * @exception NullPointerException thrown if any argument is null. */ public Locale(String language, String country, String variant) { ! if (language== null || country == null || variant == null) { throw new NullPointerException(); } baseLocale = BaseLocale.getInstance(convertOldISOCodes(language), "", country, variant); localeExtensions = getCompatibilityExtensions(language, "", country, variant); } --- 740,750 ---- * @param variant Any arbitrary value used to indicate a variation of a <code>Locale</code>. * See the <code>Locale</code> class description for the details. * @exception NullPointerException thrown if any argument is null. */ public Locale(String language, String country, String variant) { ! if (language == null || country == null || variant == null) { throw new NullPointerException(); } baseLocale = BaseLocale.getInstance(convertOldISOCodes(language), "", country, variant); localeExtensions = getCompatibilityExtensions(language, "", country, variant); }
*** 765,783 **** public Locale(String language) { this(language, "", ""); } /** - * This method must be called only for creating the Locale.* - * constants due to making shortcuts. - */ - private static Locale createConstant(String lang, String country) { - BaseLocale base = BaseLocale.createInstance(lang, country); - return getInstance(base, null); - } - - /** * Returns a <code>Locale</code> constructed from the given * <code>language</code>, <code>country</code> and * <code>variant</code>. If the same <code>Locale</code> instance * is available in the cache, then that instance is * returned. Otherwise, a new <code>Locale</code> instance is --- 798,807 ----
*** 801,824 **** if (extensions == null) { extensions = getCompatibilityExtensions(language, script, country, variant); } ! BaseLocale baseloc = BaseLocale.getInstance(language, script, country, variant); return getInstance(baseloc, extensions); } static Locale getInstance(BaseLocale baseloc, LocaleExtensions extensions) { if (extensions == null) { ! return LOCALECACHE.get(baseloc); } else { LocaleKey key = new LocaleKey(baseloc, extensions); ! return LOCALECACHE.get(key); } } private static class Cache extends LocaleObjectCache<Object, Locale> { private Cache() { } @Override protected Locale createObject(Object key) { --- 825,855 ---- if (extensions == null) { extensions = getCompatibilityExtensions(language, script, country, variant); } ! BaseLocale baseloc = BaseLocale.getInstance(convertOldISOCodes(language), script, country, variant); return getInstance(baseloc, extensions); } static Locale getInstance(BaseLocale baseloc, LocaleExtensions extensions) { if (extensions == null) { ! Locale locale = CONSTANT_LOCALES.get(baseloc); ! if (locale != null) { ! return locale; ! } ! return Cache.LOCALECACHE.get(baseloc); } else { LocaleKey key = new LocaleKey(baseloc, extensions); ! return Cache.LOCALECACHE.get(key); } } private static class Cache extends LocaleObjectCache<Object, Locale> { + + private static final Cache LOCALECACHE = new Cache(); + private Cache() { } @Override protected Locale createObject(Object key) {
*** 975,986 **** getDefaultExtensions(props.getProperty(category.extensionsKey, "")) .orElse(defaultLocale.getLocaleExtensions())); } private static Optional<LocaleExtensions> getDefaultExtensions(String extensionsProp) { ! LocaleExtensions exts = null; try { exts = new InternalLocaleBuilder() .setExtensions(extensionsProp) .getLocaleExtensions(); } catch (LocaleSyntaxException e) { --- 1006,1020 ---- getDefaultExtensions(props.getProperty(category.extensionsKey, "")) .orElse(defaultLocale.getLocaleExtensions())); } private static Optional<LocaleExtensions> getDefaultExtensions(String extensionsProp) { ! if (LocaleUtils.isEmpty(extensionsProp)) { ! return Optional.empty(); ! } + LocaleExtensions exts = null; try { exts = new InternalLocaleBuilder() .setExtensions(extensionsProp) .getLocaleExtensions(); } catch (LocaleSyntaxException e) {
*** 2306,2315 **** --- 2340,2350 ---- String language = (String)fields.get("language", ""); String script = (String)fields.get("script", ""); String country = (String)fields.get("country", ""); String variant = (String)fields.get("variant", ""); String extStr = (String)fields.get("extensions", ""); + baseLocale = BaseLocale.getInstance(convertOldISOCodes(language), script, country, variant); if (!extStr.isEmpty()) { try { InternalLocaleBuilder bldr = new InternalLocaleBuilder(); bldr.setExtensions(extStr);
< prev index next >