Java 类java.text.spi.DateFormatSymbolsProvider 实例源码

项目:openjdk-jdk10    文件:JRELocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
    if (dateFormatSymbolsProvider == null) {
        DateFormatSymbolsProvider provider = AccessController.doPrivileged(
            (PrivilegedAction<DateFormatSymbolsProvider>) () ->
                new DateFormatSymbolsProviderImpl(
                    getAdapterType(),
                    getLanguageTagSet("FormatData")));

        synchronized (this) {
            if (dateFormatSymbolsProvider == null) {
                dateFormatSymbolsProvider = provider;
            }
        }
    }
    return dateFormatSymbolsProvider;
}
项目:openjdk9    文件:JRELocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
    if (dateFormatSymbolsProvider == null) {
        DateFormatSymbolsProvider provider = AccessController.doPrivileged(
            (PrivilegedAction<DateFormatSymbolsProvider>) () ->
                new DateFormatSymbolsProviderImpl(
                    getAdapterType(),
                    getLanguageTagSet("FormatData")));

        synchronized (this) {
            if (dateFormatSymbolsProvider == null) {
                dateFormatSymbolsProvider = provider;
            }
        }
    }
    return dateFormatSymbolsProvider;
}
项目:VarJ    文件:DateFormatSymbols.java   
/**
 * Gets the <code>DateFormatSymbols</code> instance for the specified 
 * locale.  This method provides access to <code>DateFormatSymbols</code>
 * instances for locales supported by the Java runtime itself as well 
 * as for those supported by installed 
 * {@link java.text.spi.DateFormatSymbolsProvider DateFormatSymbolsProvider} 
 * implementations.
 * @param locale the given locale.
 * @return a <code>DateFormatSymbols</code> instance.
 * @exception NullPointerException if <code>locale</code> is null
 * @since 1.6
 */
public static final DateFormatSymbols getInstance(Locale locale) {

    // Check whether a provider can provide an implementation that's closer 
    // to the requested locale than what the Java runtime itself can provide.
    LocaleServiceProviderPool pool =
        LocaleServiceProviderPool.getPool(DateFormatSymbolsProvider.class);
    if (pool.hasProviders()) {
        DateFormatSymbols providersInstance = pool.getLocalizedObject(
                            DateFormatSymbolsGetter.INSTANCE, locale);
        if (providersInstance != null) {
            return providersInstance;
        }
    }

    return new DateFormatSymbols(locale);
}
项目:OpenJSharp    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    DateFormatSymbolsProvider provider = adapter.getDateFormatSymbolsProvider();
    DateFormatSymbols dfsyms = provider.getInstance(locale);
    if (dfsyms == null) {
        provider = LocaleProviderAdapter.forJRE().getDateFormatSymbolsProvider();
        dfsyms = provider.getInstance(locale);
    }
    return dfsyms;
}
项目:OpenJSharp    文件:JRELocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
    if (dateFormatSymbolsProvider == null) {
        DateFormatSymbolsProvider provider = new DateFormatSymbolsProviderImpl(getAdapterType(),
                                                            getLanguageTagSet("FormatData"));
        synchronized (this) {
            if (dateFormatSymbolsProvider == null) {
                dateFormatSymbolsProvider = provider;
            }
        }
    }
    return dateFormatSymbolsProvider;
}
项目:jdk8u-jdk    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    DateFormatSymbolsProvider provider = adapter.getDateFormatSymbolsProvider();
    DateFormatSymbols dfsyms = provider.getInstance(locale);
    if (dfsyms == null) {
        provider = LocaleProviderAdapter.forJRE().getDateFormatSymbolsProvider();
        dfsyms = provider.getInstance(locale);
    }
    return dfsyms;
}
项目:jdk8u-jdk    文件:JRELocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
    if (dateFormatSymbolsProvider == null) {
        DateFormatSymbolsProvider provider = new DateFormatSymbolsProviderImpl(getAdapterType(),
                                                            getLanguageTagSet("FormatData"));
        synchronized (this) {
            if (dateFormatSymbolsProvider == null) {
                dateFormatSymbolsProvider = provider;
            }
        }
    }
    return dateFormatSymbolsProvider;
}
项目:openjdk-jdk10    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    DateFormatSymbolsProvider provider = adapter.getDateFormatSymbolsProvider();
    DateFormatSymbols dfsyms = provider.getInstance(locale);
    if (dfsyms == null) {
        provider = LocaleProviderAdapter.forJRE().getDateFormatSymbolsProvider();
        dfsyms = provider.getInstance(locale);
    }
    return dfsyms;
}
项目:openjdk9    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    DateFormatSymbolsProvider provider = adapter.getDateFormatSymbolsProvider();
    DateFormatSymbols dfsyms = provider.getInstance(locale);
    if (dfsyms == null) {
        provider = LocaleProviderAdapter.forJRE().getDateFormatSymbolsProvider();
        dfsyms = provider.getInstance(locale);
    }
    return dfsyms;
}
项目:Java8CN    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    DateFormatSymbolsProvider provider = adapter.getDateFormatSymbolsProvider();
    DateFormatSymbols dfsyms = provider.getInstance(locale);
    if (dfsyms == null) {
        provider = LocaleProviderAdapter.forJRE().getDateFormatSymbolsProvider();
        dfsyms = provider.getInstance(locale);
    }
    return dfsyms;
}
项目:NonDex    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    DateFormatSymbolsProvider provider = adapter.getDateFormatSymbolsProvider();
    DateFormatSymbols dfsyms = provider.getInstance(locale);
    if (dfsyms == null) {
        provider = LocaleProviderAdapter.forJRE().getDateFormatSymbolsProvider();
        dfsyms = provider.getInstance(locale);
    }
    return dfsyms;
}
项目:jdk8u_jdk    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    DateFormatSymbolsProvider provider = adapter.getDateFormatSymbolsProvider();
    DateFormatSymbols dfsyms = provider.getInstance(locale);
    if (dfsyms == null) {
        provider = LocaleProviderAdapter.forJRE().getDateFormatSymbolsProvider();
        dfsyms = provider.getInstance(locale);
    }
    return dfsyms;
}
项目:jdk8u_jdk    文件:JRELocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
    if (dateFormatSymbolsProvider == null) {
        DateFormatSymbolsProvider provider = new DateFormatSymbolsProviderImpl(getAdapterType(),
                                                            getLanguageTagSet("FormatData"));
        synchronized (this) {
            if (dateFormatSymbolsProvider == null) {
                dateFormatSymbolsProvider = provider;
            }
        }
    }
    return dateFormatSymbolsProvider;
}
项目:lookaside_java-1.8.0-openjdk    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    DateFormatSymbolsProvider provider = adapter.getDateFormatSymbolsProvider();
    DateFormatSymbols dfsyms = provider.getInstance(locale);
    if (dfsyms == null) {
        provider = LocaleProviderAdapter.forJRE().getDateFormatSymbolsProvider();
        dfsyms = provider.getInstance(locale);
    }
    return dfsyms;
}
项目:lookaside_java-1.8.0-openjdk    文件:JRELocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
    if (dateFormatSymbolsProvider == null) {
        DateFormatSymbolsProvider provider = new DateFormatSymbolsProviderImpl(getAdapterType(),
                                                            getLanguageTagSet("FormatData"));
        synchronized (this) {
            if (dateFormatSymbolsProvider == null) {
                dateFormatSymbolsProvider = provider;
            }
        }
    }
    return dateFormatSymbolsProvider;
}
项目:VarJ    文件:DateFormatSymbols.java   
public DateFormatSymbols getObject(DateFormatSymbolsProvider dateFormatSymbolsProvider, 
                        Locale locale, 
                        String key,
                        Object... params) {
    assert params.length == 0;
    return dateFormatSymbolsProvider.getInstance(locale);
}
项目:jdk-1.7-annotated    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    DateFormatSymbols providersInstance = null;

    // Check whether a provider can provide an implementation that's closer
    // to the requested locale than what the Java runtime itself can provide.
    LocaleServiceProviderPool pool =
        LocaleServiceProviderPool.getPool(DateFormatSymbolsProvider.class);
    if (pool.hasProviders()) {
        providersInstance = pool.getLocalizedObject(
                                DateFormatSymbolsGetter.INSTANCE, locale);
    }
    return providersInstance;
}
项目:jdk-1.7-annotated    文件:DateFormatSymbols.java   
public DateFormatSymbols getObject(DateFormatSymbolsProvider dateFormatSymbolsProvider,
                        Locale locale,
                        String key,
                        Object... params) {
    assert params.length == 0;
    return dateFormatSymbolsProvider.getInstance(locale);
}
项目:infobip-open-jdk-8    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    DateFormatSymbolsProvider provider = adapter.getDateFormatSymbolsProvider();
    DateFormatSymbols dfsyms = provider.getInstance(locale);
    if (dfsyms == null) {
        provider = LocaleProviderAdapter.forJRE().getDateFormatSymbolsProvider();
        dfsyms = provider.getInstance(locale);
    }
    return dfsyms;
}
项目:infobip-open-jdk-8    文件:JRELocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
    if (dateFormatSymbolsProvider == null) {
        DateFormatSymbolsProvider provider = new DateFormatSymbolsProviderImpl(getAdapterType(),
                                                            getLanguageTagSet("FormatData"));
        synchronized (this) {
            if (dateFormatSymbolsProvider == null) {
                dateFormatSymbolsProvider = provider;
            }
        }
    }
    return dateFormatSymbolsProvider;
}
项目:jdk8u-dev-jdk    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    DateFormatSymbolsProvider provider = adapter.getDateFormatSymbolsProvider();
    DateFormatSymbols dfsyms = provider.getInstance(locale);
    if (dfsyms == null) {
        provider = LocaleProviderAdapter.forJRE().getDateFormatSymbolsProvider();
        dfsyms = provider.getInstance(locale);
    }
    return dfsyms;
}
项目:jdk8u-dev-jdk    文件:JRELocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
    if (dateFormatSymbolsProvider == null) {
        DateFormatSymbolsProvider provider = new DateFormatSymbolsProviderImpl(getAdapterType(),
                                                            getLanguageTagSet("FormatData"));
        synchronized (this) {
            if (dateFormatSymbolsProvider == null) {
                dateFormatSymbolsProvider = provider;
            }
        }
    }
    return dateFormatSymbolsProvider;
}
项目:jdk7-jdk    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    DateFormatSymbols providersInstance = null;

    // Check whether a provider can provide an implementation that's closer
    // to the requested locale than what the Java runtime itself can provide.
    LocaleServiceProviderPool pool =
        LocaleServiceProviderPool.getPool(DateFormatSymbolsProvider.class);
    if (pool.hasProviders()) {
        providersInstance = pool.getLocalizedObject(
                                DateFormatSymbolsGetter.INSTANCE, locale);
    }
    return providersInstance;
}
项目:jdk7-jdk    文件:DateFormatSymbols.java   
public DateFormatSymbols getObject(DateFormatSymbolsProvider dateFormatSymbolsProvider,
                        Locale locale,
                        String key,
                        Object... params) {
    assert params.length == 0;
    return dateFormatSymbolsProvider.getInstance(locale);
}
项目:openjdk-source-code-learn    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    DateFormatSymbols providersInstance = null;

    // Check whether a provider can provide an implementation that's closer
    // to the requested locale than what the Java runtime itself can provide.
    LocaleServiceProviderPool pool =
        LocaleServiceProviderPool.getPool(DateFormatSymbolsProvider.class);
    if (pool.hasProviders()) {
        providersInstance = pool.getLocalizedObject(
                                DateFormatSymbolsGetter.INSTANCE, locale);
    }
    return providersInstance;
}
项目:openjdk-source-code-learn    文件:DateFormatSymbols.java   
public DateFormatSymbols getObject(DateFormatSymbolsProvider dateFormatSymbolsProvider,
                        Locale locale,
                        String key,
                        Object... params) {
    assert params.length == 0;
    return dateFormatSymbolsProvider.getInstance(locale);
}
项目:OLD-OpenJDK8    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    DateFormatSymbolsProvider provider = adapter.getDateFormatSymbolsProvider();
    DateFormatSymbols dfsyms = provider.getInstance(locale);
    if (dfsyms == null) {
        provider = LocaleProviderAdapter.forJRE().getDateFormatSymbolsProvider();
        dfsyms = provider.getInstance(locale);
    }
    return dfsyms;
}
项目:OLD-OpenJDK8    文件:JRELocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
    if (dateFormatSymbolsProvider == null) {
        DateFormatSymbolsProvider provider = new DateFormatSymbolsProviderImpl(getAdapterType(),
                                                            getLanguageTagSet("FormatData"));
        synchronized (this) {
            if (dateFormatSymbolsProvider == null) {
                dateFormatSymbolsProvider = provider;
            }
        }
    }
    return dateFormatSymbolsProvider;
}
项目:cn1    文件:DateFormatSymbols.java   
/**
 * Return the DateFormatSymbols for the specified locale. This method return
 * DateFormatSymbols instances for locales supported by the Java runtime and
 * installed DateFormatSymbols implementations.
 * 
 * @param locale
 *            locale for the returned DateFormatSymbols instance
 * 
 * @return an instance of DateFormatSymbols
 * 
 * @exception NullPointerException
 *                if locale is null
 * 
 * @since 1.6
 */
public static final DateFormatSymbols getInstance(Locale locale) {
    if (null == locale) {
        throw new NullPointerException();
    }

    if (buildinLocales == null) {
        initBuildInLocales(com.ibm.icu.text.DateFormatSymbols
                .getAvailableLocales());
    }

    if (buildinLocales.contains(locale)) {
        return new DateFormatSymbols(locale);
    }

    DateFormatSymbolsProvider provider = (DateFormatSymbolsProvider) LocaleServiceProviderLoader
            .getProviderByLocale(providersCache, locale,
                    PROVIDER_CONFIGURATION_FILE_NAME);

    if (provider != null) {
        return provider.getInstance(locale);
    }

    // return DateFormatSymbols using default locale
    return new DateFormatSymbols();

}
项目:openjdk-jdk7u-jdk    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    DateFormatSymbols providersInstance = null;

    // Check whether a provider can provide an implementation that's closer
    // to the requested locale than what the Java runtime itself can provide.
    LocaleServiceProviderPool pool =
        LocaleServiceProviderPool.getPool(DateFormatSymbolsProvider.class);
    if (pool.hasProviders()) {
        providersInstance = pool.getLocalizedObject(
                                DateFormatSymbolsGetter.INSTANCE, locale);
    }
    return providersInstance;
}
项目:openjdk-jdk7u-jdk    文件:DateFormatSymbols.java   
public DateFormatSymbols getObject(DateFormatSymbolsProvider dateFormatSymbolsProvider,
                        Locale locale,
                        String key,
                        Object... params) {
    assert params.length == 0;
    return dateFormatSymbolsProvider.getInstance(locale);
}
项目:openjdk-icedtea7    文件:DateFormatSymbols.java   
private static DateFormatSymbols getProviderInstance(Locale locale) {
    DateFormatSymbols providersInstance = null;

    // Check whether a provider can provide an implementation that's closer
    // to the requested locale than what the Java runtime itself can provide.
    LocaleServiceProviderPool pool =
        LocaleServiceProviderPool.getPool(DateFormatSymbolsProvider.class);
    if (pool.hasProviders()) {
        providersInstance = pool.getLocalizedObject(
                                DateFormatSymbolsGetter.INSTANCE, locale);
    }
    return providersInstance;
}
项目:openjdk-icedtea7    文件:DateFormatSymbols.java   
public DateFormatSymbols getObject(DateFormatSymbolsProvider dateFormatSymbolsProvider,
                        Locale locale,
                        String key,
                        Object... params) {
    assert params.length == 0;
    return dateFormatSymbolsProvider.getInstance(locale);
}
项目:OpenJSharp    文件:DateFormatSymbols.java   
private void initializeData(Locale desiredLocale) {
    locale = desiredLocale;

    // Copy values of a cached instance if any.
    SoftReference<DateFormatSymbols> ref = cachedInstances.get(locale);
    DateFormatSymbols dfs;
    if (ref != null && (dfs = ref.get()) != null) {
        copyMembers(dfs, this);
        return;
    }

    // Initialize the fields from the ResourceBundle for locale.
    LocaleProviderAdapter adapter = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
    // Avoid any potential recursions
    if (!(adapter instanceof ResourceBundleBasedAdapter)) {
        adapter = LocaleProviderAdapter.getResourceBundleBased();
    }
    ResourceBundle resource = ((ResourceBundleBasedAdapter)adapter).getLocaleData().getDateFormatData(locale);

    // JRE and CLDR use different keys
    // JRE: Eras, short.Eras and narrow.Eras
    // CLDR: long.Eras, Eras and narrow.Eras
    if (resource.containsKey("Eras")) {
        eras = resource.getStringArray("Eras");
    } else if (resource.containsKey("long.Eras")) {
        eras = resource.getStringArray("long.Eras");
    } else if (resource.containsKey("short.Eras")) {
        eras = resource.getStringArray("short.Eras");
    }
    months = resource.getStringArray("MonthNames");
    shortMonths = resource.getStringArray("MonthAbbreviations");
    ampms = resource.getStringArray("AmPmMarkers");
    localPatternChars = resource.getString("DateTimePatternChars");

    // Day of week names are stored in a 1-based array.
    weekdays = toOneBasedArray(resource.getStringArray("DayNames"));
    shortWeekdays = toOneBasedArray(resource.getStringArray("DayAbbreviations"));

    // Put a clone in the cache
    ref = new SoftReference<>((DateFormatSymbols)this.clone());
    SoftReference<DateFormatSymbols> x = cachedInstances.putIfAbsent(locale, ref);
    if (x != null) {
        DateFormatSymbols y = x.get();
        if (y == null) {
            // Replace the empty SoftReference with ref.
            cachedInstances.put(locale, ref);
        }
    }
}
项目:OpenJSharp    文件:AuxLocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
    return getLocaleServiceProvider(DateFormatSymbolsProvider.class);
}
项目:OpenJSharp    文件:SPILocaleProviderAdapter.java   
@Override
public void addImpl(DateFormatSymbolsProvider impl) {
    for (Locale l : impl.getAvailableLocales()) {
        map.putIfAbsent(l, impl);
    }
}
项目:OpenJSharp    文件:SPILocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getImpl(Locale locale) {
    return SPILocaleProviderAdapter.getImpl(map, locale);
}
项目:jdk8u-jdk    文件:DateFormatSymbols.java   
/**
 * Initializes this DateFormatSymbols with the locale data. This method uses
 * a cached DateFormatSymbols instance for the given locale if available. If
 * there's no cached one, this method creates an uninitialized instance and
 * populates its fields from the resource bundle for the locale, and caches
 * the instance. Note: zoneStrings isn't initialized in this method.
 */
private void initializeData(Locale locale) {
    SoftReference<DateFormatSymbols> ref = cachedInstances.get(locale);
    DateFormatSymbols dfs;
    if (ref == null || (dfs = ref.get()) == null) {
        if (ref != null) {
            // Remove the empty SoftReference
            cachedInstances.remove(locale, ref);
        }
        dfs = new DateFormatSymbols(false);

        // Initialize the fields from the ResourceBundle for locale.
        LocaleProviderAdapter adapter
            = LocaleProviderAdapter.getAdapter(DateFormatSymbolsProvider.class, locale);
        // Avoid any potential recursions
        if (!(adapter instanceof ResourceBundleBasedAdapter)) {
            adapter = LocaleProviderAdapter.getResourceBundleBased();
        }
        ResourceBundle resource
            = ((ResourceBundleBasedAdapter)adapter).getLocaleData().getDateFormatData(locale);

        dfs.locale = locale;
        // JRE and CLDR use different keys
        // JRE: Eras, short.Eras and narrow.Eras
        // CLDR: long.Eras, Eras and narrow.Eras
        if (resource.containsKey("Eras")) {
            dfs.eras = resource.getStringArray("Eras");
        } else if (resource.containsKey("long.Eras")) {
            dfs.eras = resource.getStringArray("long.Eras");
        } else if (resource.containsKey("short.Eras")) {
            dfs.eras = resource.getStringArray("short.Eras");
        }
        dfs.months = resource.getStringArray("MonthNames");
        dfs.shortMonths = resource.getStringArray("MonthAbbreviations");
        dfs.ampms = resource.getStringArray("AmPmMarkers");
        dfs.localPatternChars = resource.getString("DateTimePatternChars");

        // Day of week names are stored in a 1-based array.
        dfs.weekdays = toOneBasedArray(resource.getStringArray("DayNames"));
        dfs.shortWeekdays = toOneBasedArray(resource.getStringArray("DayAbbreviations"));

        // Put dfs in the cache
        ref = new SoftReference<>(dfs);
        SoftReference<DateFormatSymbols> x = cachedInstances.putIfAbsent(locale, ref);
        if (x != null) {
            DateFormatSymbols y = x.get();
            if (y == null) {
                // Replace the empty SoftReference with ref.
                cachedInstances.replace(locale, x, ref);
            } else {
                ref = x;
                dfs = y;
            }
        }
        // If the bundle's locale isn't the target locale, put another cache
        // entry for the bundle's locale.
        Locale bundleLocale = resource.getLocale();
        if (!bundleLocale.equals(locale)) {
            SoftReference<DateFormatSymbols> z
                = cachedInstances.putIfAbsent(bundleLocale, ref);
            if (z != null && z.get() == null) {
                cachedInstances.replace(bundleLocale, z, ref);
            }
        }
    }

    // Copy the field values from dfs to this instance.
    copyMembers(dfs, this);
}
项目:jdk8u-jdk    文件:AuxLocaleProviderAdapter.java   
@Override
public DateFormatSymbolsProvider getDateFormatSymbolsProvider() {
    return getLocaleServiceProvider(DateFormatSymbolsProvider.class);
}
项目:jdk8u-jdk    文件:SPILocaleProviderAdapter.java   
@Override
public void addImpl(DateFormatSymbolsProvider impl) {
    for (Locale l : impl.getAvailableLocales()) {
        map.putIfAbsent(l, impl);
    }
}