StringManagerpublic class StringManager extends Object An internationalization / localization helper class which reduces
the bother of handling ResourceBundles and takes care of the
common cases of message formating which otherwise require the
creation of Object arrays and such.
The StringManager operates on a package basis. One StringManager
per package can be created and accessed via the getManager method
call.
The StringManager will look for a ResourceBundle named by
the package name given plus the suffix of "LocalStrings". In
practice, this means that the localized information will be contained
in a LocalStrings.properties file located in the package
directory of the classpath.
Please see the documentation for java.util.ResourceBundle for
more information. |
Fields Summary |
---|
private static com.sun.org.apache.commons.logging.Log | log | private ResourceBundle | bundleThe ResourceBundle for this StringManager. | private HashMap | bundles | private String | bundleName | private static Hashtable | managers |
Constructors Summary |
---|
private StringManager(String packageName)Creates a new StringManager for a given package. This is a
private method and all access to it is arbitrated by the
static getManager method call so that only one StringManager
per package will be created.
// END SJSAS 6412710
/* 6412710
String bundleName = packageName + ".LocalStrings";
*/
// START SJSAS 6412710
this.bundleName = packageName + ".LocalStrings";
// END SJSAS 6412710
/* SJSAS 6412710
try {
*/
bundle = ResourceBundle.getBundle(bundleName);
// START SJSAS 6412710
bundles.put(Locale.getDefault(), bundle);
// END SJSAS 6412710
return;
/* SJSAS 6412710
} catch( MissingResourceException ex ) {
// Try from the current loader ( that's the case for trusted apps )
ClassLoader cl=Thread.currentThread().getContextClassLoader();
if( cl != null ) {
try {
bundle=ResourceBundle.getBundle(bundleName, Locale.getDefault(), cl);
return;
} catch(MissingResourceException ex2) {
}
}
if( cl==null )
cl=this.getClass().getClassLoader();
if (log.isDebugEnabled())
log.debug("Can't find resource " + bundleName +
" " + cl);
if( cl instanceof URLClassLoader ) {
if (log.isDebugEnabled())
log.debug( ((URLClassLoader)cl).getURLs());
}
}
*/
|
Methods Summary |
---|
public static synchronized org.apache.catalina.util.StringManager | getManager(java.lang.String packageName)Get the StringManager for a particular package. If a manager for
a package already exists, it will be reused, else a new
StringManager will be created and returned.
StringManager mgr = (StringManager)managers.get(packageName);
if (mgr == null) {
mgr = new StringManager(packageName);
managers.put(packageName, mgr);
}
return mgr;
| public java.util.Locale | getResourceBundleLocale(java.util.Locale requestLocale)Returns the locale of the resource bundle for the given request locale.
ResourceBundle bundle = bundles.get(requestLocale);
if (bundle == null) {
synchronized (bundles) {
bundle = bundles.get(requestLocale);
if (bundle == null) {
bundle = ResourceBundle.getBundle(this.bundleName,
requestLocale);
bundles.put(requestLocale, bundle);
}
}
}
return bundle.getLocale();
| public java.lang.String | getString(java.lang.String key, java.lang.Object arg1, java.lang.Object arg2)Get a string from the underlying resource bundle and format it
with the given object arguments. These arguments can of course
be String objects.
/* SJSAS 6412710
Object[] args = new Object[] {arg1, arg2};
return getString(key, args);
*/
// START SJSAS 6412710
return getString(key, arg1, arg2, Locale.getDefault());
// END SJSAS 6412710
| public java.lang.String | getString(java.lang.String key, java.lang.Object arg1, java.lang.Object arg2, java.util.Locale locale)
Object[] args = new Object[] {arg1, arg2};
return getString(key, args, locale);
| public java.lang.String | getString(java.lang.String key, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)Get a string from the underlying resource bundle and format it
with the given object arguments. These arguments can of course
be String objects.
/* SJSAS 6412710
Object[] args = new Object[] {arg1, arg2, arg3};
return getString(key, args);
*/
// START SJSAS 6412710
return getString(key, arg1, arg2, arg3, Locale.getDefault());
// END SJSAS 6412710
| public java.lang.String | getString(java.lang.String key, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3, java.util.Locale locale)
Object[] args = new Object[] {arg1, arg2, arg3};
return getString(key, args, locale);
| public java.lang.String | getString(java.lang.String key, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3, java.lang.Object arg4)Get a string from the underlying resource bundle and format it
with the given object arguments. These arguments can of course
be String objects.
/* SJSAS 6412710
Object[] args = new Object[] {arg1, arg2, arg3, arg4};
return getString(key, args);
*/
// START SJSAS 6412710
return getString(key, arg1, arg2, arg3, arg4, Locale.getDefault());
// END SJSAS 6412710
| public java.lang.String | getString(java.lang.String key, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3, java.lang.Object arg4, java.util.Locale locale)
Object[] args = new Object[] {arg1, arg2, arg3, arg4};
return getString(key, args, locale);
| public java.lang.String | getString(java.lang.String key)Get a string from the underlying resource bundle.
/* SJSAS 6412710
return MessageFormat.format(getStringInternal(key),(Object[]) null);
*/
// START SJSAS 6412710
return getString(key, Locale.getDefault());
// END SJSAS 6412710
| public java.lang.String | getString(java.lang.String key, java.util.Locale locale)
return MessageFormat.format(getStringInternal(key, locale),
(Object[]) null);
| public java.lang.String | getString(java.lang.String key, java.lang.Object[] args)Get a string from the underlying resource bundle and format
it with the given set of arguments.
// START SJSAS 6412710
return getString(key, args, Locale.getDefault());
| public java.lang.String | getString(java.lang.String key, java.lang.Object[] args, java.util.Locale locale)
// END SJSAS 6412710
String iString = null;
/* 6412710
String value = getStringInternal(key);
*/
// START SJSAS 6412710
String value = getStringInternal(key, locale);
// END SJSAS 6412710
// this check for the runtime exception is some pre 1.1.6
// VM's don't do an automatic toString() on the passed in
// objects and barf out
try {
// ensure the arguments are not null so pre 1.2 VM's don't barf
Object nonNullArgs[] = args;
for (int i=0; i<args.length; i++) {
if (args[i] == null) {
if (nonNullArgs==args) nonNullArgs=(Object[])args.clone();
nonNullArgs[i] = "null";
}
}
iString = MessageFormat.format(value, nonNullArgs);
} catch (IllegalArgumentException iae) {
StringBuffer buf = new StringBuffer();
buf.append(value);
for (int i = 0; i < args.length; i++) {
buf.append(" arg[" + i + "]=" + args[i]);
}
iString = buf.toString();
}
return iString;
| public java.lang.String | getString(java.lang.String key, java.lang.Object arg)Get a string from the underlying resource bundle and format it
with the given object argument. This argument can of course be
a String object.
/* SJSAS 6412710
Object[] args = new Object[] {arg};
return getString(key, args);
*/
// START SJSAS 6412710
return getString(key, arg, Locale.getDefault());
// END SJSAS 6412710
| public java.lang.String | getString(java.lang.String key, java.lang.Object arg, java.util.Locale locale)
Object[] args = new Object[] {arg};
return getString(key, args, locale);
| protected java.lang.String | getStringInternal(java.lang.String key)
// START SJSAS 6412710
return getStringInternal(key, Locale.getDefault());
| protected java.lang.String | getStringInternal(java.lang.String key, java.util.Locale locale)
// END SJSAS 6412710
if (key == null) {
String msg = "key is null";
throw new NullPointerException(msg);
}
String str = null;
if( bundle==null )
return key;
// START SJSAS 6412710
ResourceBundle bundle = bundles.get(locale);
if (bundle == null) {
synchronized (bundles) {
bundle = bundles.get(locale);
if (bundle == null) {
bundle = ResourceBundle.getBundle(this.bundleName, locale);
bundles.put(locale, bundle);
}
}
}
// END SJSAS 6412710
try {
str = bundle.getString(key);
} catch (MissingResourceException mre) {
str = "Cannot find message associated with key '" + key + "'";
}
return str;
|
|