Package org.eigenbase.resgen
Class ShadowResourceBundle
java.lang.Object
java.util.ResourceBundle
org.eigenbase.resgen.ShadowResourceBundle
ShadowResourceBundle is an abstract base class for
ResourceBundle 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 called ResourceBundle.getBundle(java.lang.String)("foo.MyResource")foo.MyResource, then
looks for a file called foo/MyResource.properties. If it finds
the file, it creates a PropertyResourceBundle 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 org.eigenbase.resgen.ShadowResourceBundle {
public MyResource() throws java.io.IOException {
}
}
Then when you call
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.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static classNested classes/interfaces inherited from class java.util.ResourceBundle
ResourceBundle.Control -
Field Summary
FieldsFields inherited from class java.util.ResourceBundle
parent -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedCreates aShadowResourceBundle, and reads resources from a.propertiesfile with the same name as the current class. -
Method Summary
Modifier and TypeMethodDescriptiongetKeys()static LocaleReturns the preferred locale of the current thread, or null if the thread has not calledsetThreadLocale(java.util.Locale).protected static LocaleReturns the preferred locale of the current thread, or the default locale if the current thread has not calledsetThreadLocale(java.util.Locale).protected ObjecthandleGetObject(String key) protected static ResourceBundleDeprecated.This method does not work correctly in dynamically loaded jars.protected static ShadowResourceBundleDeprecated.This method does not work correctly in dynamically loaded jars.protected static ShadowResourceBundleinstance(String baseName, Locale locale, ResourceBundle bundle) Returns the instance of thebaseNameresource bundle for the given locale.static voidsetThreadLocale(Locale locale) Sets the locale for the current thread.Methods inherited from class java.util.ResourceBundle
clearCache, clearCache, containsKey, getBaseBundleName, getBundle, getBundle, getBundle, getBundle, getBundle, getBundle, getBundle, getBundle, getLocale, getObject, getString, getStringArray, handleKeySet, keySet, setParent
-
Field Details
-
emptyObjectArray
-
-
Constructor Details
-
ShadowResourceBundle
Creates aShadowResourceBundle, and reads resources from a.propertiesfile 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:
IOException
-
-
Method Details
-
getKeys
- Specified by:
getKeysin classResourceBundle
-
handleGetObject
- Specified by:
handleGetObjectin classResourceBundle- Throws:
MissingResourceException
-
instance
Deprecated.This method does not work correctly in dynamically loaded jars.Returns the instance of thebaseNameresource bundle for the current thread's locale. For example, if called with "mondrian.olap.MondrianResource", from a thread which has calledsetThreadLocale(java.util.Locale)(Locale.FRENCH), will get an instance of "mondrian.olap.MondrianResource_FR" from the cache.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 current locale. If this thread has specified a locale * by calling {@link #setThreadLocale}, this locale is used, * otherwise the default locale is used. **/ public static MyResource instance() { return (MyResource) instance(MyResource.class.getName()); } ... } -
instance
Deprecated.This method does not work correctly in dynamically loaded jars.Returns the instance of thebaseNameresource 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); } ... } -
instance
protected static ShadowResourceBundle instance(String baseName, Locale locale, ResourceBundle bundle) Returns the instance of thebaseNameresource 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)); } ... } -
getThreadOrDefaultLocale
Returns the preferred locale of the current thread, or the default locale if the current thread has not calledsetThreadLocale(java.util.Locale). -
setThreadLocale
Sets the locale for the current thread. Used byinstance(String,Locale). -
getThreadLocale
Returns the preferred locale of the current thread, or null if the thread has not calledsetThreadLocale(java.util.Locale).
-