LocaleServiceProviderPool.java revision 1672
2018N/A * Copyright 2005-2006 Sun Microsystems, Inc. All Rights Reserved. 342N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 342N/A * This code is free software; you can redistribute it and/or modify it 342N/A * under the terms of the GNU General Public License version 2 only, as 342N/A * published by the Free Software Foundation. Sun designates this 342N/A * particular file as subject to the "Classpath" exception as provided 342N/A * by Sun in the LICENSE file that accompanied this code. 342N/A * This code is distributed in the hope that it will be useful, but WITHOUT 342N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 342N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 342N/A * version 2 for more details (a copy is included in the LICENSE file that 342N/A * accompanied this code). 342N/A * You should have received a copy of the GNU General Public License version 342N/A * 2 along with this work; if not, write to the Free Software Foundation, 1472N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 1472N/A * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 342N/A * CA 95054 USA or visit www.sun.com if you need additional information or 342N/A * An instance of this class holds a set of the third party implementations of a particular 342N/A * locale sensitive service, such as {@link java.util.spi.LocaleNameProvider}. 2591N/A * A Map that holds singleton instances of this class. Each instance holds a 2591N/A * set of provider implementations of a particular locale sensitive service. 342N/A * A Set containing locale service providers that implement the 342N/A * specified provider SPI 342N/A * A Map that retains Locale->provider mapping 342N/A * Available locales for this locale sensitive service. This also contains 342N/A * JRE's available locales 342N/A * Available locales within this JRE. Currently this is declared as 342N/A * static. This could be non-static later, so that they could have 342N/A * different sets for each locale sensitive services. 342N/A * Provider locales for this locale sensitive service. 342N/A * A factory method that returns a singleton instance 342N/A * The sole constructor. 342N/A * @param c class of the locale sensitive service 342N/A * Lazy loaded set of available locales. 342N/A * Loading all locales is a very long operation. 342N/A * Available locales for all locale sensitive services. 342N/A * This also contains JRE's available locales 342N/A * Returns an array of available locales for all the provider classes. 342N/A * This array is a merged array of all the locales that are provided by each 342N/A * provider, including the JRE. 342N/A * @return an array of the available locales for all provider classes 2280N/A * Returns an array of available locales. This array is a 2280N/A * merged array of all the locales that are provided by each 2280N/A * provider, including the JRE. 2280N/A * @return an array of the available locales 342N/A * Returns an array of available locales from providers. 2018N/A * Note that this method does not return a defensive copy. 2018N/A * @return list of the provider locales 355N/A * Returns whether any provider for this locale sensitive 355N/A * service is available or not. 355N/A * @return true if any provider is available 342N/A * Returns an array of available locales supported by the JRE. 342N/A * Note that this method does not return a defensive copy. 342N/A * @return list of the available JRE locales 342N/A * Returns whether the given locale is supported by the JRE. 342N/A * @param locale the locale to test. 342N/A * @return true, if the locale is supported by the JRE. false 342N/A * Returns the provider's localized object for the specified 342N/A * @param getter an object on which getObject() method 342N/A * is called to obtain the provider's instance. 342N/A * @param locale the given locale that is used as the starting one 342N/A * @param params provider specific parameters 796N/A * @return provider's instance, or null. 2037N/A * Returns the provider's localized name for the specified 342N/A * @param getter an object on which getObject() method 342N/A * is called to obtain the provider's instance. 342N/A * @param locale the given locale that is used as the starting one 342N/A * @param bundle JRE resource bundle that contains 342N/A * the localized names, or null for localized objects. 342N/A * @param key the key string if bundle is supplied, otherwise null. 342N/A * @param params provider specific parameters 342N/A * @return provider's instance, or null. 342N/A * Returns the provider's localized name for the specified 342N/A * @param getter an object on which getObject() method 342N/A * is called to obtain the provider's instance. 342N/A * @param locale the given locale that is used as the starting one 342N/A * @param bundleKey JRE specific bundle key. e.g., "USD" is for currency 342N/A symbol and "usd" is for currency display name in the JRE bundle. 342N/A * @param bundle JRE resource bundle that contains 342N/A * the localized names, or null for localized objects. 342N/A * @param key the key string if bundle is supplied, otherwise null. 342N/A * @param params provider specific parameters 342N/A * @return provider's instance, or null. 1394N/A // check whether a provider has an implementation that's closer 1394N/A // to the requested locale than the bundle we've found (for 1394N/A // localized names), or Java runtime's supported locale 2591N/A "A locale sensitive service provider returned null for a localized objects, which should not happen. provider: " +
lsp +
" locale: " +
requested);
2822N/A // look up the JRE bundle and its parent chain. Only 2822N/A // providers for localized names are checked hereafter. 2019N/A * Returns a locale service provider instance that supports 2019N/A * @param locale the given locale 2019N/A * @return the provider, or null if there is 342N/A * Returns the provider's locale that is the most appropriate 2939N/A * @param start the given locale that is used as the starting one 342N/A * @param end the given locale that is used as the end one (exclusive), 342N/A * or null if it reaching any of the JRE supported locale should 342N/A * terminate the look up. 342N/A * @return the most specific locale within the range, or null 342N/A * if no provider locale found in that range. 2018N/A * Returns the parent locale. 2018N/A * @return the parent locale 342N/A * A dummy locale service provider that indicates there is no 342N/A * An interface to get a localized object for each locale sensitve 342N/A * Returns an object from the provider 342N/A * @param lsp the provider 342N/A * @param locale the locale 2037N/A * @param key key string to localize, or null if the provider is not 2037N/A * @param params provider specific params 2037N/A * @return localized object from the provider