Class ICUResourceBundle

Direct Known Subclasses:
ICUResourceBundleImpl

public class ICUResourceBundle extends UResourceBundle
  • Field Details

    • NO_INHERITANCE_MARKER

      public static final String NO_INHERITANCE_MARKER
      CLDR string value "∅∅∅" prevents fallback to the parent bundle.
      See Also:
    • ICU_DATA_CLASS_LOADER

      public static final ClassLoader ICU_DATA_CLASS_LOADER
      The class loader constant to be used with getBundleInstance API
    • INSTALLED_LOCALES

      protected static final String INSTALLED_LOCALES
      The name of the resource containing the installed locales
      See Also:
    • wholeBundle

    • container

      private ICUResourceBundle container
    • BUNDLE_CACHE

    • ICU_RESOURCE_INDEX

      private static final String ICU_RESOURCE_INDEX
      See Also:
    • DEFAULT_TAG

      private static final String DEFAULT_TAG
      See Also:
    • FULL_LOCALE_NAMES_LIST

      private static final String FULL_LOCALE_NAMES_LIST
      See Also:
    • DEBUG

      private static final boolean DEBUG
    • GET_AVAILABLE_CACHE

      private static CacheBase<String,ICUResourceBundle.AvailEntry,ClassLoader> GET_AVAILABLE_CACHE
    • COMPARE_FIRST_ELEMENT

      private static final Comparator<String[]> COMPARE_FIRST_ELEMENT
    • key

      protected String key
      Data member where the subclasses store the key.
    • RES_BOGUS

      public static final int RES_BOGUS
      A 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 ALIAS
      Resource 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 TABLE32
      Resource type constant for tables with 32-bit count, key offsets and values.
      See Also:
    • TABLE16

      public static final int TABLE16
      Resource 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_V2
      Resource type constant for 16-bit Unicode strings in formatVersion 2.
      See Also:
    • ARRAY16

      public static final int ARRAY16
      Resource 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

      private static final String RES_PATH_SEP_STR
      See Also:
    • ICUDATA

      private static final String ICUDATA
      See Also:
    • HYPHEN

      private static final char HYPHEN
      See Also:
    • LOCALE

      private static final String LOCALE
      See Also:
  • Constructor Details

  • 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 specifier
      resName - top level resource to consider (such as "collations")
      keyword - a particular keyword to consider (such as "collation" )
      locID - The requested locale
      isAvailable - 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

      public 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.
      Parameters:
      baseName - resource specifier
      keyword - a particular keyword to consider, must match a top level resource name within the tree. (i.e. "collations")
    • getWithFallback

      public ICUResourceBundle getWithFallback(String path) throws MissingResourceException
      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

      public ICUResourceBundle at(int index)
    • at

      public ICUResourceBundle at(String key)
    • findTopLevel

      public ICUResourceBundle findTopLevel(int index)
      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 class UResourceBundle
      Parameters:
      index - the index of the resource
      Returns:
      the resource, or null
      See Also:
    • findTopLevel

      public ICUResourceBundle findTopLevel(String aKey)
      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 class UResourceBundle
      Parameters:
      aKey - the key associated with the wanted resource
      Returns:
      the resource, or null
      See Also:
    • findWithFallback

      public ICUResourceBundle findWithFallback(String path)
      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

      public String findStringWithFallback(String path)
    • getStringWithFallback

      public String getStringWithFallback(String path) throws MissingResourceException
      Throws:
      MissingResourceException
    • getValueWithFallback

      public UResource.Value getValueWithFallback(String path) throws MissingResourceException
      Throws:
      MissingResourceException
    • getAllItemsWithFallbackNoFail

      public void getAllItemsWithFallbackNoFail(String path, UResource.Sink sink)
    • getAllItemsWithFallback

      public void getAllItemsWithFallback(String path, UResource.Sink sink) throws MissingResourceException
      Locates the resource specified by path in this resource bundle (performing any necessary fallback and following any aliases) and calls the specified sink's put() method with that resource. Then walks the bundle's parent chain, calling put() on the sink for each item in the parent chain.
      Parameters:
      path - The path of the desired resource
      sink - A UResource.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 by path 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 specified sink's put() 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 resource
      sink - A UResource.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

      public static Set<String> getAvailableLocaleNameSet(String bundlePrefix, ClassLoader loader)
      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

      public static Set<String> getFullLocaleNameSet()
      Return a set of all the locale names supported by a collection of resource bundles.
    • getFullLocaleNameSet

      public static Set<String> getFullLocaleNameSet(String bundlePrefix, ClassLoader loader)
      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

      public static Set<String> 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

      public static final ULocale[] getAvailableULocales()
      Get the set of ULocales installed the base bundle.
      Returns:
      the list of available locales
    • getAvailableULocales

      public static final ULocale[] getAvailableULocales(ULocale.AvailableType type)
      Get the set of ULocales installed the base bundle, for the specified type.
      Returns:
      the list of available locales for the specified type
    • getAvailableULocales

      public static final ULocale[] getAvailableULocales(String baseName, ClassLoader loader)
      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

      public static final Locale[] getAvailableLocales()
      Get the set of ULocales installed the base bundle.
      Returns:
      the list of available locales
    • getAvailableLocales

      public static final Locale[] getAvailableLocales(ULocale.AvailableType type)
      Get the set of Locales installed the base bundle, for the specified type.
      Returns:
      the list of available locales
    • getAvailableLocales

      public static final Locale[] getAvailableLocales(String baseName, ClassLoader loader)
      Get the set of Locales installed in the specified bundles.
      Returns:
      the list of available locales
    • getLocaleList

      public static final Locale[] getLocaleList(ULocale[] ulocales)
      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

      public Locale 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 class UResourceBundle
      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

      private static void addLocaleIDsFromListFile(String bn, ClassLoader root, Set<String> locales)
    • createFullLocaleNameSet

      private static Set<String> createFullLocaleNameSet(String baseName, ClassLoader loader)
    • createLocaleNameSet

      private static Set<String> createLocaleNameSet(String baseName, ClassLoader loader)
    • getAvailEntry

      private static ICUResourceBundle.AvailEntry getAvailEntry(String key, ClassLoader loader)
      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

      private void getResPathKeys(String[] keys, int depth)
      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 be getResDepth()
    • countPathKeys

      private static int countPathKeys(String path)
    • getResPathKeys

      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.
      Parameters:
      path - path string
      num - must be countPathKeys(String)
      keys -
      start - index where the first path key is stored
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • 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

      private static boolean localeIDStartsWithLangSubtag(String localeID, String lang)
    • getExplicitParent

      private static String getExplicitParent(String localeID)
    • getDefaultScript

      private static String getDefaultScript(String language, String region)
    • 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

      public static ICUResourceBundle createBundle(String baseName, String localeID, ClassLoader root)
      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

      protected String getLocaleID()
      Description copied from class: UResourceBundle
      Returns the localeID
      Specified by:
      getLocaleID in class UResourceBundle
      Returns:
      The string representation of the localeID
    • getBaseName

      protected String getBaseName()
      Description copied from class: UResourceBundle
      Returns the base name of the resource bundle
      Specified by:
      getBaseName in class UResourceBundle
      Returns:
      The string representation of the base name
    • getULocale

      public ULocale 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 class UResourceBundle
      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

      public ICUResourceBundle getParent()
      Description copied from class: UResourceBundle
      Returns the parent bundle
      Specified by:
      getParent in class UResourceBundle
      Returns:
      The parent bundle
    • setParent

      protected void setParent(ResourceBundle parent)
      Overrides:
      setParent in class ResourceBundle
    • getKey

      public String 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 class UResourceBundle
      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 public final Set<String> getTopLevelKeySet()
      Deprecated.
      This API is ICU internal only.
    • setTopLevelKeySet

      @Deprecated public final void setTopLevelKeySet(Set<String> keySet)
      Deprecated.
      This API is ICU internal only.
    • handleGetKeys

      protected Enumeration<String> 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 class UResourceBundle
      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 class UResourceBundle
      Returns:
      true if this is a top-level resource