Package com.ibm.icu.impl
Class ICUResourceBundle
java.lang.Object
java.util.ResourceBundle
com.ibm.icu.util.UResourceBundle
com.ibm.icu.impl.ICUResourceBundle
- Direct Known Subclasses:
ICUResourceBundleImpl
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class
private static final class
Holds the prefix, and lazily creates the Locale[] list or the locale name Set as needed.private static class
Loader for bundle instances, for caching.static enum
protected static final class
Fields for a whole bundle, rather than any specific resource in the bundle.Nested classes/interfaces inherited from class java.util.ResourceBundle
ResourceBundle.Control
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Resource type constant for aliases; internally stores a string which identifies the actual resource storing the data (can be in a different resource bundle).static final int
Resource type constant for arrays with 16-bit count and values.private static CacheBase
<String, ICUResourceBundle, ICUResourceBundle.Loader> private static final Comparator
<String[]> private ICUResourceBundle
private static final boolean
private static final String
private static final String
private static CacheBase
<String, ICUResourceBundle.AvailEntry, ClassLoader> private static final char
static final ClassLoader
The class loader constant to be used with getBundleInstance APIprivate static final String
private static final String
protected static final String
The name of the resource containing the installed localesprotected String
Data member where the subclasses store the key.private static final String
static final String
CLDR string value "∅∅∅" prevents fallback to the parent bundle.static final int
A resource word value that means "no resource".private static final char
private static final String
static final int
Resource type constant for 16-bit Unicode strings in formatVersion 2.static final int
Resource type constant for tables with 16-bit count, key offsets and values.static final int
Resource type constant for tables with 32-bit count, key offsets and values.(package private) ICUResourceBundle.WholeBundle
Fields inherited from class com.ibm.icu.util.UResourceBundle
ARRAY, BINARY, INT, INT_VECTOR, NONE, STRING, TABLE
Fields inherited from class java.util.ResourceBundle
parent
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
ICUResourceBundle
(ICUResourceBundle.WholeBundle wholeBundle) Constructor for the root table of a bundle.protected
ICUResourceBundle
(ICUResourceBundle container, String key) -
Method Summary
Modifier and TypeMethodDescriptionprivate static final void
addBundleBaseNamesFromClassLoader
(String bn, ClassLoader root, Set<String> names) private static final void
addLocaleIDsFromIndexBundle
(String baseName, ClassLoader root, Set<String> locales) private static void
addLocaleIDsFromListFile
(String bn, ClassLoader root, Set<String> locales) at
(int index) private static int
countPathKeys
(String path) static ICUResourceBundle
createBundle
(String baseName, String localeID, ClassLoader root) Create a bundle using a reader.createFullLocaleNameSet
(String baseName, ClassLoader loader) createLocaleNameSet
(String baseName, ClassLoader loader) private static final EnumMap
<ULocale.AvailableType, ULocale[]> createULocaleList
(String baseName, ClassLoader root) boolean
private static final ICUResourceBundle
findResourceWithFallback
(String[] keys, int depth, ICUResourceBundle base, UResourceBundle requested) private static final ICUResourceBundle
findResourceWithFallback
(String path, UResourceBundle actualBundle, UResourceBundle requested) findStringWithFallback
(String path) private static final String
findStringWithFallback
(String path, UResourceBundle actualBundle, UResourceBundle requested) Like findResourceWithFallback(...).getString() but with minimal creation of intermediate ICUResourceBundle objects.findTopLevel
(int index) Returns a resource in a given resource that has a given index, or null if the resource is not found.findTopLevel
(String aKey) Returns a resource in a given resource that has a given key, or null if the resource is not found.findWithFallback
(String path) Like getWithFallback, but returns null if the resource is not found instead of throwing an exception.(package private) ICUResourceBundle
protected static ICUResourceBundle
getAliasedResource
(ICUResourceBundle base, String[] keys, int depth, String key, int _resource, HashMap<String, String> aliasesVisited, UResourceBundle requested) Returns the resource object referred to from the alias _resource int's path string.protected static ICUResourceBundle
getAliasedResource
(String rpath, ClassLoader loaderToUse, String baseName, String[] keys, int depth, String[] baseKeyPath, HashMap<String, String> aliasesVisited, UResourceBundle requested) void
getAllChildrenWithFallback
(String path, UResource.Sink sink) Locates the resource specified bypath
in this resource bundle (performing any necessary fallback and following any aliases) and, if the resource is a table resource, iterates over its immediate child resources (again, following any aliases to get the individual resource values), and calls the specifiedsink
'sput()
method for each child resource (passing it that resource's key and either its actual value or, if that value is an alias, the value you get by following the alias).private void
getAllItemsWithFallback
(UResource.Key key, ICUResourceBundleReader.ReaderValue readerValue, UResource.Sink sink, UResourceBundle requested) void
getAllItemsWithFallback
(String path, UResource.Sink sink) Locates the resource specified bypath
in this resource bundle (performing any necessary fallback and following any aliases) and calls the specifiedsink
'sput()
method with that resource.void
getAllItemsWithFallbackNoFail
(String path, UResource.Sink sink) Return a set of the locale names supported by a collection of resource bundles.getAvailableLocaleNameSet
(String bundlePrefix, ClassLoader loader) Return a set of the locale names supported by a collection of resource bundles.static final Locale[]
Get the set of ULocales installed the base bundle.static final Locale[]
Get the set of Locales installed the base bundle, for the specified type.static final Locale[]
getAvailableLocales
(String baseName, ClassLoader loader) Get the set of Locales installed in the specified bundles.static final Locale[]
getAvailableLocales
(String baseName, ClassLoader loader, ULocale.AvailableType type) Get the set of Locales installed in the specified bundles, for the specified type.static final ULocale[]
Get the set of ULocales installed the base bundle.static final ULocale[]
Get the set of ULocales installed the base bundle, for the specified type.static final ULocale[]
getAvailableULocales
(String baseName, ClassLoader loader) Get the set of Locales installed in the specified bundles.static final ULocale[]
getAvailableULocales
(String baseName, ClassLoader loader, ULocale.AvailableType type) Get the set of Locales installed in the specified bundles, for the specified type.private static ICUResourceBundle.AvailEntry
getAvailEntry
(String key, ClassLoader loader) Stores the locale information in a cache accessed by key (bundle prefix).protected String
Returns the base name of the resource bundleprivate static ICUResourceBundle
getBundle
(ICUResourceBundleReader reader, String baseName, String localeID, ClassLoader loader) static ICUResourceBundle
getBundleInstance
(String baseName, ULocale locale, ICUResourceBundle.OpenType openType) static ICUResourceBundle
getBundleInstance
(String baseName, String localeID, ClassLoader root, boolean disableFallback) static ICUResourceBundle
getBundleInstance
(String baseName, String localeID, ClassLoader root, ICUResourceBundle.OpenType openType) private static String
getDefaultScript
(String language, String region) private static String
getExplicitParent
(String localeID) Return a set of all the locale names supported by a collection of resource bundles.getFullLocaleNameSet
(String bundlePrefix, ClassLoader loader) Return a set of all the locale names supported by a collection of resource bundles.static final ULocale
getFunctionalEquivalent
(String baseName, ClassLoader loader, String resName, String keyword, ULocale locID, boolean[] isAvailable, boolean omitDefault) Returns a functionally equivalent locale, considering keywords as well, for the specified keyword.getKey()
Returns the key associated with a given resource.static final String[]
getKeywordValues
(String baseName, String keyword) Given a tree path and keyword, return a string enumeration of all possible values for that keyword.Returns the locale of this resource bundle.protected String
Returns the localeIDstatic final Locale[]
getLocaleList
(ULocale[] ulocales) Convert a list of ULocales to a list of Locales.private boolean
Get the noFallback flag specified in the loaded bundle.Returns the parent bundlestatic String
getParentLocaleID
(String name, String origName, ICUResourceBundle.OpenType openType) private int
private void
getResPathKeys
(String[] keys, int depth) Fills some of the keys array with the keys on the path to this resource object.private static void
getResPathKeys
(String path, int num, String[] keys, int start) Fills some of the keys array (from start) with the num keys from the path string.getStringWithFallback
(String path) Deprecated.This API is ICU internal only.Returns the RFC 3066 conformant locale id of this resource bundle.getValueWithFallback
(String path) getWithFallback
(String path) This method performs multilevel fallback for fetching items from the bundle e.g: If resource is in the form de__PHONEBOOK{ collations{ default{ "phonebook"} } } If the value of "default" key needs to be accessed, then do:UResourceBundle bundle = UResourceBundle.getBundleInstance("de__PHONEBOOK"); ICUResourceBundle result = null; if(bundle instanceof ICUResourceBundle){ result = ((ICUResourceBundle) bundle).getWithFallback("collations/default"); }
protected Enumeration
<String> Actual worker method for fetching the keys of resources contained in the resource.int
hashCode()
private static ICUResourceBundle
instantiateBundle
(String baseName, String localeID, String origLocaleID, String defaultID, ClassLoader root, ICUResourceBundle.OpenType openType) boolean
isRoot()
Returns true if this is the root bundle, or an item in the root bundle.protected boolean
Is this a top-level resource, that is, a whole bundle?private static boolean
localeIDStartsWithLangSubtag
(String localeID, String lang) protected void
setParent
(ResourceBundle parent) final void
setTopLevelKeySet
(Set<String> keySet) Deprecated.This API is ICU internal only.Methods inherited from class com.ibm.icu.util.UResourceBundle
get, get, getBinary, getBinary, getBundleInstance, getBundleInstance, getBundleInstance, getBundleInstance, getBundleInstance, getBundleInstance, getBundleInstance, getBundleInstance, getInt, getIntVector, getIterator, getKeys, getSize, getString, getString, getStringArray, getType, getUInt, getVersion, handleGet, handleGet, handleGetObject, handleGetStringArray, handleKeySet, instantiateBundle, keySet
Methods inherited from class java.util.ResourceBundle
clearCache, clearCache, containsKey, getBaseBundleName, getBundle, getBundle, getBundle, getBundle, getBundle, getBundle, getBundle, getBundle, getObject, getString, getStringArray
-
Field Details
-
NO_INHERITANCE_MARKER
CLDR string value "∅∅∅" prevents fallback to the parent bundle.- See Also:
-
ICU_DATA_CLASS_LOADER
The class loader constant to be used with getBundleInstance API -
INSTALLED_LOCALES
The name of the resource containing the installed locales- See Also:
-
wholeBundle
ICUResourceBundle.WholeBundle wholeBundle -
container
-
BUNDLE_CACHE
-
ICU_RESOURCE_INDEX
- See Also:
-
DEFAULT_TAG
- See Also:
-
FULL_LOCALE_NAMES_LIST
- See Also:
-
DEBUG
private static final boolean DEBUG -
GET_AVAILABLE_CACHE
-
COMPARE_FIRST_ELEMENT
-
key
Data member where the subclasses store the key. -
RES_BOGUS
public static final int RES_BOGUSA resource word value that means "no resource". Note: 0xffffffff == -1 This has the same value as UResourceBundle.NONE, but they are semantically different and should be used appropriately according to context: NONE means "no type". (The type of RES_BOGUS is RES_RESERVED=15 which was defined in ICU4C ures.h.)- See Also:
-
ALIAS
public static final int ALIASResource type constant for aliases; internally stores a string which identifies the actual resource storing the data (can be in a different resource bundle). Resolved internally before delivering the actual resource through the API.- See Also:
-
TABLE32
public static final int TABLE32Resource type constant for tables with 32-bit count, key offsets and values.- See Also:
-
TABLE16
public static final int TABLE16Resource type constant for tables with 16-bit count, key offsets and values. All values are STRING_V2 strings.- See Also:
-
STRING_V2
public static final int STRING_V2Resource type constant for 16-bit Unicode strings in formatVersion 2.- See Also:
-
ARRAY16
public static final int ARRAY16Resource type constant for arrays with 16-bit count and values. All values are STRING_V2 strings.- See Also:
-
RES_PATH_SEP_CHAR
private static final char RES_PATH_SEP_CHAR- See Also:
-
RES_PATH_SEP_STR
- See Also:
-
ICUDATA
- See Also:
-
HYPHEN
private static final char HYPHEN- See Also:
-
LOCALE
- See Also:
-
-
Constructor Details
-
ICUResourceBundle
Constructor for the root table of a bundle. -
ICUResourceBundle
-
-
Method Details
-
getFunctionalEquivalent
public static final ULocale getFunctionalEquivalent(String baseName, ClassLoader loader, String resName, String keyword, ULocale locID, boolean[] isAvailable, boolean omitDefault) Returns a functionally equivalent locale, considering keywords as well, for the specified keyword.- Parameters:
baseName
- resource specifierresName
- top level resource to consider (such as "collations")keyword
- a particular keyword to consider (such as "collation" )locID
- The requested localeisAvailable
- If non-null, 1-element array of fillin parameter that indicates whether the requested locale was available. The locale is defined as 'available' if it physically exists within the specified tree and included in 'InstalledLocales'.omitDefault
- if true, omit keyword and value if default. 'de_DE\@collation=standard' -> 'de_DE'- Returns:
- the locale
-
getKeywordValues
Given a tree path and keyword, return a string enumeration of all possible values for that keyword.- Parameters:
baseName
- resource specifierkeyword
- a particular keyword to consider, must match a top level resource name within the tree. (i.e. "collations")
-
getWithFallback
This method performs multilevel fallback for fetching items from the bundle e.g: If resource is in the form de__PHONEBOOK{ collations{ default{ "phonebook"} } } If the value of "default" key needs to be accessed, then do:UResourceBundle bundle = UResourceBundle.getBundleInstance("de__PHONEBOOK"); ICUResourceBundle result = null; if(bundle instanceof ICUResourceBundle){ result = ((ICUResourceBundle) bundle).getWithFallback("collations/default"); }
- Parameters:
path
- The path to the required resource key- Returns:
- resource represented by the key
- Throws:
MissingResourceException
- If a resource was not found.
-
at
-
at
-
findTopLevel
Description copied from class:UResourceBundle
Returns a resource in a given resource that has a given index, or null if the resource is not found.- Overrides:
findTopLevel
in classUResourceBundle
- Parameters:
index
- the index of the resource- Returns:
- the resource, or null
- See Also:
-
findTopLevel
Description copied from class:UResourceBundle
Returns a resource in a given resource that has a given key, or null if the resource is not found.- Overrides:
findTopLevel
in classUResourceBundle
- Parameters:
aKey
- the key associated with the wanted resource- Returns:
- the resource, or null
- See Also:
-
findWithFallback
Like getWithFallback, but returns null if the resource is not found instead of throwing an exception.- Parameters:
path
- the path to the resource- Returns:
- the resource, or null
-
findStringWithFallback
-
getStringWithFallback
- Throws:
MissingResourceException
-
getValueWithFallback
- Throws:
MissingResourceException
-
getAllItemsWithFallbackNoFail
-
getAllItemsWithFallback
public void getAllItemsWithFallback(String path, UResource.Sink sink) throws MissingResourceException Locates the resource specified bypath
in this resource bundle (performing any necessary fallback and following any aliases) and calls the specifiedsink
'sput()
method with that resource. Then walks the bundle's parent chain, callingput()
on the sink for each item in the parent chain.- Parameters:
path
- The path of the desired resourcesink
- AUResource.Sink
that gets called for each resource in the parent chain- Throws:
MissingResourceException
-
getAllChildrenWithFallback
public void getAllChildrenWithFallback(String path, UResource.Sink sink) throws MissingResourceException Locates the resource specified bypath
in this resource bundle (performing any necessary fallback and following any aliases) and, if the resource is a table resource, iterates over its immediate child resources (again, following any aliases to get the individual resource values), and calls the specifiedsink
'sput()
method for each child resource (passing it that resource's key and either its actual value or, if that value is an alias, the value you get by following the alias). Then walks back over the bundle's parent chain, similarly iterating over each parent table resource's child resources. Does not descend beyond one level of table children.- Parameters:
path
- The path of the desired resourcesink
- AUResource.Sink
that gets called for each child resource of the specified resource (and each child of the resources in its parent chain).- Throws:
MissingResourceException
-
getAllItemsWithFallback
private void getAllItemsWithFallback(UResource.Key key, ICUResourceBundleReader.ReaderValue readerValue, UResource.Sink sink, UResourceBundle requested) -
getAvailableLocaleNameSet
Return a set of the locale names supported by a collection of resource bundles.- Parameters:
bundlePrefix
- the prefix of the resource bundles to use.
-
getFullLocaleNameSet
Return a set of all the locale names supported by a collection of resource bundles. -
getFullLocaleNameSet
Return a set of all the locale names supported by a collection of resource bundles.- Parameters:
bundlePrefix
- the prefix of the resource bundles to use.
-
getAvailableLocaleNameSet
Return a set of the locale names supported by a collection of resource bundles. -
getAvailableULocales
public static final ULocale[] getAvailableULocales(String baseName, ClassLoader loader, ULocale.AvailableType type) Get the set of Locales installed in the specified bundles, for the specified type.- Returns:
- the list of available locales
-
getAvailableULocales
Get the set of ULocales installed the base bundle.- Returns:
- the list of available locales
-
getAvailableULocales
Get the set of ULocales installed the base bundle, for the specified type.- Returns:
- the list of available locales for the specified type
-
getAvailableULocales
Get the set of Locales installed in the specified bundles.- Returns:
- the list of available locales
-
getAvailableLocales
public static final Locale[] getAvailableLocales(String baseName, ClassLoader loader, ULocale.AvailableType type) Get the set of Locales installed in the specified bundles, for the specified type.- Returns:
- the list of available locales
-
getAvailableLocales
Get the set of ULocales installed the base bundle.- Returns:
- the list of available locales
-
getAvailableLocales
Get the set of Locales installed the base bundle, for the specified type.- Returns:
- the list of available locales
-
getAvailableLocales
Get the set of Locales installed in the specified bundles.- Returns:
- the list of available locales
-
getLocaleList
Convert a list of ULocales to a list of Locales. ULocales with a script code will not be converted since they cannot be represented as a Locale. This means that the two lists will not match one-to-one, and that the returned list might be shorter than the input list.- Parameters:
ulocales
- a list of ULocales to convert to a list of Locales.- Returns:
- the list of converted ULocales
-
getLocale
Returns the locale of this resource bundle. This method can be used after a call to getBundle() to determine whether the resource bundle returned really corresponds to the requested locale or is a fallback.- Overrides:
getLocale
in classUResourceBundle
- Returns:
- the locale of this resource bundle
-
createULocaleList
private static final EnumMap<ULocale.AvailableType,ULocale[]> createULocaleList(String baseName, ClassLoader root) -
addLocaleIDsFromIndexBundle
private static final void addLocaleIDsFromIndexBundle(String baseName, ClassLoader root, Set<String> locales) -
addBundleBaseNamesFromClassLoader
private static final void addBundleBaseNamesFromClassLoader(String bn, ClassLoader root, Set<String> names) -
addLocaleIDsFromListFile
-
createFullLocaleNameSet
-
createLocaleNameSet
-
getAvailEntry
Stores the locale information in a cache accessed by key (bundle prefix). The cached objects are AvailEntries. The cache is implemented by SoftCache so it can be GC'd. -
findResourceWithFallback
private static final ICUResourceBundle findResourceWithFallback(String path, UResourceBundle actualBundle, UResourceBundle requested) -
findResourceWithFallback
private static final ICUResourceBundle findResourceWithFallback(String[] keys, int depth, ICUResourceBundle base, UResourceBundle requested) -
findStringWithFallback
private static final String findStringWithFallback(String path, UResourceBundle actualBundle, UResourceBundle requested) Like findResourceWithFallback(...).getString() but with minimal creation of intermediate ICUResourceBundle objects. -
getResDepth
private int getResDepth() -
getResPathKeys
Fills some of the keys array with the keys on the path to this resource object. Writes the top-level key into index 0 and increments from there.- Parameters:
keys
-depth
- must begetResDepth()
-
countPathKeys
-
getResPathKeys
Fills some of the keys array (from start) with the num keys from the path string.- Parameters:
path
- path stringnum
- must becountPathKeys(String)
keys
-start
- index where the first path key is stored
-
equals
-
hashCode
public int hashCode() -
getBundleInstance
public static ICUResourceBundle getBundleInstance(String baseName, String localeID, ClassLoader root, boolean disableFallback) -
getBundleInstance
public static ICUResourceBundle getBundleInstance(String baseName, ULocale locale, ICUResourceBundle.OpenType openType) -
getBundleInstance
public static ICUResourceBundle getBundleInstance(String baseName, String localeID, ClassLoader root, ICUResourceBundle.OpenType openType) -
localeIDStartsWithLangSubtag
-
getExplicitParent
-
getDefaultScript
-
getParentLocaleID
public static String getParentLocaleID(String name, String origName, ICUResourceBundle.OpenType openType) -
instantiateBundle
private static ICUResourceBundle instantiateBundle(String baseName, String localeID, String origLocaleID, String defaultID, ClassLoader root, ICUResourceBundle.OpenType openType) -
get
ICUResourceBundle get(String aKey, HashMap<String, String> aliasesVisited, UResourceBundle requested) -
createBundle
Create a bundle using a reader.- Parameters:
baseName
- The name for the bundle.localeID
- The locale identification.root
- The ClassLoader object root.- Returns:
- the new bundle
-
getLocaleID
Description copied from class:UResourceBundle
Returns the localeID- Specified by:
getLocaleID
in classUResourceBundle
- Returns:
- The string representation of the localeID
-
getBaseName
Description copied from class:UResourceBundle
Returns the base name of the resource bundle- Specified by:
getBaseName
in classUResourceBundle
- Returns:
- The string representation of the base name
-
getULocale
Description copied from class:UResourceBundle
Returns the RFC 3066 conformant locale id of this resource bundle. This method can be used after a call to getBundleInstance() to determine whether the resource bundle returned really corresponds to the requested locale or is a fallback.- Specified by:
getULocale
in classUResourceBundle
- Returns:
- the locale of this resource bundle
-
isRoot
public boolean isRoot()Returns true if this is the root bundle, or an item in the root bundle. -
getParent
Description copied from class:UResourceBundle
Returns the parent bundle- Specified by:
getParent
in classUResourceBundle
- Returns:
- The parent bundle
-
setParent
- Overrides:
setParent
in classResourceBundle
-
getKey
Description copied from class:UResourceBundle
Returns the key associated with a given resource. Not all the resources have a key - only those that are members of a table.- Overrides:
getKey
in classUResourceBundle
- Returns:
- a key associated to this resource, or null if it doesn't have a key
-
getNoFallback
private boolean getNoFallback()Get the noFallback flag specified in the loaded bundle.- Returns:
- The noFallback flag.
-
getBundle
private static ICUResourceBundle getBundle(ICUResourceBundleReader reader, String baseName, String localeID, ClassLoader loader) -
getAliasedResource
protected static ICUResourceBundle getAliasedResource(ICUResourceBundle base, String[] keys, int depth, String key, int _resource, HashMap<String, String> aliasesVisited, UResourceBundle requested) Returns the resource object referred to from the alias _resource int's path string. Throws MissingResourceException if not found. If the alias path does not contain a key path: If keys != null then keys[:depth] is used. Otherwise the base key path plus the key parameter is used.- Parameters:
base
- A direct or indirect container of the alias.keys
- The key path to the alias, or null. (const)depth
- The length of the key path, if keys != null.key
- The alias' own key within this current container, if keys == null._resource
- The alias resource int.aliasesVisited
- Set of alias path strings already visited, for detecting loops. We cannot change the type (e.g., to Set) because it is used in protected/@stable UResourceBundle methods. requested
- The original resource object from which the lookup started, which is the starting point for "/LOCALE/..." aliases.- Returns:
- the aliased resource object
-
getAliasedResource
protected static ICUResourceBundle getAliasedResource(String rpath, ClassLoader loaderToUse, String baseName, String[] keys, int depth, String[] baseKeyPath, HashMap<String, String> aliasesVisited, UResourceBundle requested) -
getTopLevelKeySet
Deprecated.This API is ICU internal only. -
setTopLevelKeySet
Deprecated.This API is ICU internal only. -
handleGetKeys
Description copied from class:UResourceBundle
Actual worker method for fetching the keys of resources contained in the resource. Sub classes must override this method if they support keys and associated resources.- Overrides:
handleGetKeys
in classUResourceBundle
- Returns:
- Enumeration An enumeration of all the keys in this resource.
-
isTopLevelResource
protected boolean isTopLevelResource()Description copied from class:UResourceBundle
Is this a top-level resource, that is, a whole bundle?- Overrides:
isTopLevelResource
in classUResourceBundle
- Returns:
- true if this is a top-level resource
-