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:
Then when you callpackage foo; class MyResource extends org.eigenbase.resgen.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.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static class
Nested classes/interfaces inherited from class java.util.ResourceBundle
ResourceBundle.Control
-
Field Summary
FieldsFields inherited from class java.util.ResourceBundle
parent
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Creates aShadowResourceBundle
, and reads resources from a.properties
file with the same name as the current class. -
Method Summary
Modifier and TypeMethodDescriptiongetKeys()
static Locale
Returns the preferred locale of the current thread, or null if the thread has not calledsetThreadLocale(java.util.Locale)
.protected static Locale
Returns the preferred locale of the current thread, or the default locale if the current thread has not calledsetThreadLocale(java.util.Locale)
.protected Object
handleGetObject
(String key) protected static ResourceBundle
Deprecated.This method does not work correctly in dynamically loaded jars.protected static ShadowResourceBundle
Deprecated.This method does not work correctly in dynamically loaded jars.protected static ShadowResourceBundle
instance
(String baseName, Locale locale, ResourceBundle bundle) Returns the instance of thebaseName
resource bundle for the given locale.static void
setThreadLocale
(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.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:
IOException
-
-
Method Details
-
getKeys
- Specified by:
getKeys
in classResourceBundle
-
handleGetObject
- Specified by:
handleGetObject
in classResourceBundle
- Throws:
MissingResourceException
-
instance
Deprecated.This method does not work correctly in dynamically loaded jars.Returns the instance of thebaseName
resource 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 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); } ... }
-
instance
protected static ShadowResourceBundle instance(String baseName, Locale locale, 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)); } ... }
-
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)
.
-