FileDocCategorySizeDatePackage
LocalStringsImpl.javaAPI DocGlassfish v2 API9204Fri May 04 22:32:08 BST 2007com.sun.enterprise.util

LocalStringsImpl

public class LocalStringsImpl extends Object
This class makes getting localized strings super-simple. This is the companion class to Strings. Use this class when performance may be an issue. I.e. Strings is all-static and creates a ResourceBundle on every call. This class is instantiated once and can be used over and over from the same package.

Specifics:

  • Your calling code should have a file named LocalStrings.properties in its package directory.
  • If your localized string has no arguments call get(String) to get the localized String value.
  • If you have a parameterized string, call get(String, Object...)

Note: You can not get an Exception out of calling this code! If the String or the properties file does not exist, it will return the String that you gave in the first place as the argument.

Example:

  • LocalStringsImpl sh = new LocalStringsImpl();
  • String s = sh.get("xyz");
  • String s = sh.get("xyz", new Date(), 500, "something", 2.00003);
  • String s = sh.get("xyz", "something", "foo", "whatever");
author
bnevins

Fields Summary
private ResourceBundle
bundle
private static final String
thisPackage
private String
propsFilename
Constructors Summary
public LocalStringsImpl()
Create a LocalStringsImpl instance. Automatically discover the caller's LocalStrings.properties file

        setBundle();
    
public LocalStringsImpl(Class clazz)
Create a LocalStringsImpl instance. use the proffered class object to find LocalStrings.properties. This is the constructor to use if you are concerned about getting the fastest performance.

        setBundle(clazz);
    
Methods Summary
public java.lang.Stringget(java.lang.String indexString)
Get a String from the caller's package's LocalStrings.properties

param
indexString The string index into the localized string file
return
the String from LocalStrings or the supplied String if it doesn't exist

        try
        {
            return getBundle().getString(indexString);
        }
        catch (Exception e)
        {
            // it is not an error to have no key...
            return indexString;
        }
    
public java.lang.Stringget(java.lang.String indexString, java.lang.Object objects)
Get and format a String from the caller's package's LocalStrings.properties

param
indexString The string index into the localized string file
param
objects The arguments to give to MessageFormat
return
the String from LocalStrings or the supplied String if it doesn't exist -- using the array of supplied Object arguments

        indexString = get(indexString);
        
        try
        {
            MessageFormat mf = new MessageFormat(indexString);
            return mf.format(objects);
        }
        catch(Exception e)
        {
            return indexString;
        }
    
public booleangetBoolean(java.lang.String indexString, boolean defaultValue)
Get a boolean from the caller's package's LocalStrings.properties

param
indexString The string index into the localized string file
return
the integer value from LocalStrings or the supplied default if it doesn't exist or is bad.

        try
        {
            return Boolean.valueOf(getBundle().getString(indexString));
        }
        catch (Exception e)
        {
            // it is not an error to have no key...
            return defaultValue;
        }
    
private java.util.ResourceBundlegetBundle()

        return bundle;
    
public intgetInt(java.lang.String indexString, int defaultValue)
Get an integer from the caller's package's LocalStrings.properties

param
indexString The string index into the localized string file
return
the integer value from LocalStrings or the supplied default if it doesn't exist or is bad.

        try
        {
            String s = getBundle().getString(indexString);
            return Integer.parseInt(s);
        }
        catch (Exception e)
        {
            // it is not an error to have no key...
            return defaultValue;
        }
    
public java.lang.StringgetString(java.lang.String indexString, java.lang.String defaultValue)
Get a String from the caller's package's LocalStrings.properties

param
indexString The string index into the localized string file
return
the String from LocalStrings or the supplied default value if it doesn't exist

        try
        {
            return getBundle().getString(indexString);
        }
        catch (Exception e)
        {
            // it is not an error to have no key...
            return defaultValue;
        }
    
private voidsetBundle(java.lang.Class clazz)

        setBundle(clazz.getName());
    
private voidsetBundle(java.lang.String className)

        try
        {
            String props;
            // handle the default package...
            if(className.indexOf('.") < 0)
                props = propsFilename;
            else
                props = className.substring(0, className.lastIndexOf('.")) + '." + propsFilename;
            
            bundle = ResourceBundle.getBundle(props);
        }
        catch(Exception e)
        {
            bundle = null;
        }
    
private voidsetBundle()

        // go through the stack, top to bottom.  The item that is below the LAST
        // method that is in the util framework is where the logfile is.
        // note that there may be more than one method from util in the stack
        // because they may be calling us indirectly from LoggerHelper.  Also
        // note that this class won't work from any class in the util hierarchy itself.
        
        try
        {
            StackTraceElement[] items = Thread.currentThread().getStackTrace();
            int lastMeOnStack = -1;
            
            for(int i = 0; i < items.length; i++)
            {
                StackTraceElement item = items[i];
                if(item.getClassName().startsWith(thisPackage))
                    lastMeOnStack = i;
            }
            
            String className = items[lastMeOnStack + 1].getClassName();
            setBundle(className);
        }
        catch(Exception e)
        {
            bundle = null;
        }