Package org.apache.calcite.runtime
Class Resources.ShadowResourceBundle
- java.lang.Object
-
- java.util.ResourceBundle
-
- org.apache.calcite.runtime.Resources.ShadowResourceBundle
-
- Enclosing class:
- Resources
public abstract static class Resources.ShadowResourceBundle extends java.util.ResourceBundle
ShadowResourceBundle
is an abstract base class forResourceBundle
classes which are backed by a properties file. When the class is created, it loads a properties file with the same name as the class.In the standard scheme (see
ResourceBundle
), if you call
, it first looks for a class calledResourceBundle.getBundle(java.lang.String)
("foo.MyResource")foo.MyResource
, then looks for a file calledfoo/MyResource.properties
. If it finds the file, it creates aPropertyResourceBundle
and loads the class. The problem is if you want to load the.properties
file into a dedicated class;ShadowResourceBundle
helps with this case.You should create a class as follows:
package foo; class MyResource extends ShadowResourceBundle { public MyResource() throws java.io.IOException { } }
ResourceBundle.getBundle("foo.MyResource")
, it will find the class before the properties file, but still automatically load the properties file based upon the name of the class.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.PropertyResourceBundle
bundle
-
Constructor Summary
Constructors Modifier Constructor Description protected
ShadowResourceBundle()
Creates aShadowResourceBundle
, and reads resources from a.properties
file with the same name as the current class.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Enumeration<java.lang.String>
getKeys()
protected java.lang.Object
handleGetObject(java.lang.String key)
protected static Resources.ShadowResourceBundle
instance(java.lang.String baseName, java.util.Locale locale, java.util.ResourceBundle bundle)
Returns the instance of thebaseName
resource bundle for the given locale.private static java.io.InputStream
openPropertiesFile(java.lang.Class clazz)
Opens the properties file corresponding to a given class.
-
-
-
Constructor Detail
-
ShadowResourceBundle
protected ShadowResourceBundle() throws java.io.IOException
Creates aShadowResourceBundle
, and reads resources from a.properties
file with the same name as the current class. For example, if the class is calledfoo.MyResource_en_US
, reads fromfoo/MyResource_en_US.properties
, thenfoo/MyResource_en.properties
, thenfoo/MyResource.properties
.- Throws:
java.io.IOException
- on error
-
-
Method Detail
-
openPropertiesFile
private static java.io.InputStream openPropertiesFile(java.lang.Class clazz)
Opens the properties file corresponding to a given class. The code is copied fromResourceBundle
.
-
getKeys
public java.util.Enumeration<java.lang.String> getKeys()
- Specified by:
getKeys
in classjava.util.ResourceBundle
-
handleGetObject
protected java.lang.Object handleGetObject(java.lang.String key)
- Specified by:
handleGetObject
in classjava.util.ResourceBundle
-
instance
protected static Resources.ShadowResourceBundle instance(java.lang.String baseName, java.util.Locale locale, java.util.ResourceBundle bundle)
Returns the instance of thebaseName
resource bundle for the given locale.This method should be called from a derived class, with the proper casting:
class MyResource extends ShadowResourceBundle { ... /** * Retrieves the instance of {@link MyResource} appropriate * to the given locale. **/ public static MyResource instance(Locale locale) { return (MyResource) instance( MyResource.class.getName(), locale, ResourceBundle.getBundle(MyResource.class.getName(), locale)); } ... }
- Parameters:
baseName
- Base namelocale
- Localebundle
- Resource bundle- Returns:
- Resource bundle
-
-