public abstract class ShadowResourceBundle extends ResourceBundle
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.ResourceBundle.Control| Modifier and Type | Field and Description |
|---|---|
protected static Object[] |
emptyObjectArray |
parent| Modifier | Constructor and Description |
|---|---|
protected |
ShadowResourceBundle()
Creates a
ShadowResourceBundle, and reads resources from
a .properties file with the same name as the current class. |
| Modifier and Type | Method and Description |
|---|---|
Enumeration |
getKeys() |
static Locale |
getThreadLocale()
Returns the preferred locale of the current thread, or null if the
thread has not called
setThreadLocale(java.util.Locale). |
protected static Locale |
getThreadOrDefaultLocale()
Returns the preferred locale of the current thread, or
the default locale if the current thread has not called
setThreadLocale(java.util.Locale). |
protected Object |
handleGetObject(String key) |
protected static ResourceBundle |
instance(String baseName)
Deprecated.
This method does not work correctly in dynamically
loaded jars.
|
protected static ShadowResourceBundle |
instance(String baseName,
Locale locale)
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 the
baseName resource bundle
for the given locale. |
static void |
setThreadLocale(Locale locale)
Sets the locale for the current thread.
|
clearCache, clearCache, containsKey, getBaseBundleName, getBundle, getBundle, getBundle, getBundle, getBundle, getBundle, getLocale, getObject, getString, getStringArray, handleKeySet, keySet, setParentprotected static final Object[] emptyObjectArray
protected ShadowResourceBundle()
throws IOException
ShadowResourceBundle, and reads resources from
a .properties file with the same name as the current class.
For example, if the class is called foo.MyResource_en_US,
reads from foo/MyResource_en_US.properties, then
foo/MyResource_en.properties, then
foo/MyResource.properties.IOException - on errorpublic Enumeration getKeys()
getKeys in class ResourceBundleprotected Object handleGetObject(String key) throws MissingResourceException
handleGetObject in class ResourceBundleMissingResourceExceptionprotected static ResourceBundle instance(String baseName)
baseName resource bundle for
the current thread's locale. For example, if called with
"mondrian.olap.MondrianResource", from a thread which has called
setThreadLocale(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());
}
...
}baseName - Base nameprotected static ShadowResourceBundle instance(String baseName, Locale locale)
baseName 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);
}
...
}baseName - Base namelocale - Localeprotected static ShadowResourceBundle instance(String baseName, Locale locale, ResourceBundle bundle)
baseName 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));
}
...
}baseName - Base namelocale - Localebundle - Resource bundleprotected static Locale getThreadOrDefaultLocale()
setThreadLocale(java.util.Locale).public static void setThreadLocale(Locale locale)
instance(String,Locale).locale - Localepublic static Locale getThreadLocale()
setThreadLocale(java.util.Locale).Copyright © 2012–2021 Julian Hyde. All rights reserved.