javax.jdo.spi
Class I18NHelper

java.lang.Object
  extended byjavax.jdo.spi.I18NHelper

public class I18NHelper
extends java.lang.Object

Helper class for constructing messages from bundles. The intended usage of this class is to construct a new instance bound to a bundle, as in

I18NHelper msg = I18NHelper.getInstance("javax.jdo.Bundle");

This call uses the class loader that loaded the I18NHelper class to find the specified Bundle. The class provides two overloaded getInstance methods allowing to specify a different class loader: getInstance(Class cls) looks for a bundle called "Bundle.properties" located in the package of the specified class object and getInstance(String bundleName,ClassLoader loader) uses the specified class loader to find the bundle.

Subsequently, instance methods can be used to format message strings using the text from the bundle, as in

throw new JDOFatalInternalException (msg.msg("ERR_NoMetadata", cls.getName()));

Since:
1.0.1
Version:
1.1

Field Summary
private  java.util.ResourceBundle bundle
          The bundle used by this instance of the helper.
private  java.lang.String bundleName
          The name of the bundle used by this instance of the helper.
private static java.util.Hashtable bundles
          Bundles that have already been loaded
private static java.lang.String bundleSuffix
          The unqualified standard name of a bundle.
private  java.lang.Throwable failure
          Throwable if ResourceBundle couldn't be loaded
private static java.util.Hashtable helpers
          Helper instances that have already been created
private static java.util.Locale locale
          The default locale for this VM.
 
Constructor Summary
private I18NHelper()
          Constructor
private I18NHelper(java.lang.String bundleName, java.lang.ClassLoader loader)
          Constructor for an instance bound to a bundle.
 
Method Summary
private  void assertBundle()
          Assert resources available
private  void assertBundle(java.lang.String key)
          Assert resources available
static I18NHelper getInstance(java.lang.Class cls)
          An instance bound to a bundle.
static I18NHelper getInstance(java.lang.String bundleName)
          An instance bound to a bundle.
static I18NHelper getInstance(java.lang.String bundleName, java.lang.ClassLoader loader)
          An instance bound to a bundle.
private static java.lang.String getMessage(java.util.ResourceBundle messages, java.lang.String messageKey)
          Returns message as String
private static java.lang.String getMessage(java.util.ResourceBundle messages, java.lang.String messageKey, boolean arg)
          Formats message by adding a boolean as an argument.
private static java.lang.String getMessage(java.util.ResourceBundle messages, java.lang.String messageKey, int arg)
          Formats message by adding an int as an argument.
private static java.lang.String getMessage(java.util.ResourceBundle messages, java.lang.String messageKey, java.lang.Object arg)
          Formats message by adding an Object argument.
private static java.lang.String getMessage(java.util.ResourceBundle messages, java.lang.String messageKey, java.lang.Object[] msgArgs)
          Formats message by adding array of arguments
private static java.lang.String getMessage(java.util.ResourceBundle messages, java.lang.String messageKey, java.lang.Object arg1, java.lang.Object arg2)
          Formats message by adding two Object arguments.
private static java.lang.String getMessage(java.util.ResourceBundle messages, java.lang.String messageKey, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)
          Formats message by adding three Object arguments.
private static java.lang.String getPackageName(java.lang.String className)
          Returns the package portion of the specified class.
 java.util.ResourceBundle getResourceBundle()
          Returns the resource bundle used by this I18NHelper.
private static java.lang.ClassLoader getSystemClassLoaderPrivileged()
          Get the system class loader.
private static java.util.ResourceBundle loadBundle(java.lang.String bundleName, java.lang.ClassLoader loader)
          Load ResourceBundle by bundle name
 java.lang.String msg(java.lang.String messageKey)
          Message formatter
 java.lang.String msg(java.lang.String messageKey, boolean arg)
          Message formatter
 java.lang.String msg(java.lang.String messageKey, int arg)
          Message formatter
 java.lang.String msg(java.lang.String messageKey, java.lang.Object arg1)
          Message formatter
 java.lang.String msg(java.lang.String messageKey, java.lang.Object[] args)
          Message formatter
 java.lang.String msg(java.lang.String messageKey, java.lang.Object arg1, java.lang.Object arg2)
          Message formatter
 java.lang.String msg(java.lang.String messageKey, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)
          Message formatter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

bundles

private static java.util.Hashtable bundles
Bundles that have already been loaded


helpers

private static java.util.Hashtable helpers
Helper instances that have already been created


locale

private static java.util.Locale locale
The default locale for this VM.


bundleName

private final java.lang.String bundleName
The name of the bundle used by this instance of the helper.


bundle

private java.util.ResourceBundle bundle
The bundle used by this instance of the helper.


failure

private java.lang.Throwable failure
Throwable if ResourceBundle couldn't be loaded


bundleSuffix

private static final java.lang.String bundleSuffix
The unqualified standard name of a bundle.

See Also:
Constant Field Values
Constructor Detail

I18NHelper

private I18NHelper()
Constructor


I18NHelper

private I18NHelper(java.lang.String bundleName,
                   java.lang.ClassLoader loader)
Constructor for an instance bound to a bundle.

Parameters:
bundleName - the name of the resource bundle
loader - the class loader from which to load the resource bundle
Method Detail

getInstance

public static I18NHelper getInstance(java.lang.String bundleName)
An instance bound to a bundle. This method uses the current class loader to find the bundle.

Parameters:
bundleName - the name of the bundle
Returns:
the helper instance bound to the bundle

getInstance

public static I18NHelper getInstance(java.lang.Class cls)
An instance bound to a bundle. This method figures out the bundle name for the class object's package and uses the class' class loader to find the bundle. Note, the specified class object must not be null.

Parameters:
cls - the class object from which to load the resource bundle
Returns:
the helper instance bound to the bundle

getInstance

public static I18NHelper getInstance(java.lang.String bundleName,
                                     java.lang.ClassLoader loader)
An instance bound to a bundle. This method uses the specified class loader to find the bundle. Note, the specified class loader must not be null.

Parameters:
bundleName - the name of the bundle
loader - the class loader from which to load the resource bundle
Returns:
the helper instance bound to the bundle

msg

public java.lang.String msg(java.lang.String messageKey)
Message formatter

Parameters:
messageKey - the message key
Returns:
the resolved message text

msg

public java.lang.String msg(java.lang.String messageKey,
                            java.lang.Object arg1)
Message formatter

Parameters:
messageKey - the message key
arg1 - the first argument
Returns:
the resolved message text

msg

public java.lang.String msg(java.lang.String messageKey,
                            java.lang.Object arg1,
                            java.lang.Object arg2)
Message formatter

Parameters:
messageKey - the message key
arg1 - the first argument
arg2 - the second argument
Returns:
the resolved message text

msg

public java.lang.String msg(java.lang.String messageKey,
                            java.lang.Object arg1,
                            java.lang.Object arg2,
                            java.lang.Object arg3)
Message formatter

Parameters:
messageKey - the message key
arg1 - the first argument
arg2 - the second argument
arg3 - the third argument
Returns:
the resolved message text

msg

public java.lang.String msg(java.lang.String messageKey,
                            java.lang.Object[] args)
Message formatter

Parameters:
messageKey - the message key
args - the array of arguments
Returns:
the resolved message text

msg

public java.lang.String msg(java.lang.String messageKey,
                            int arg)
Message formatter

Parameters:
messageKey - the message key
arg - the argument
Returns:
the resolved message text

msg

public java.lang.String msg(java.lang.String messageKey,
                            boolean arg)
Message formatter

Parameters:
messageKey - the message key
arg - the argument
Returns:
the resolved message text

getResourceBundle

public java.util.ResourceBundle getResourceBundle()
Returns the resource bundle used by this I18NHelper.

Returns:
the associated resource bundle
Since:
1.1

loadBundle

private static final java.util.ResourceBundle loadBundle(java.lang.String bundleName,
                                                         java.lang.ClassLoader loader)
Load ResourceBundle by bundle name

Parameters:
bundleName - the name of the bundle
loader - the class loader from which to load the resource bundle
Returns:
the ResourceBundle

assertBundle

private void assertBundle()
Assert resources available

Throws:
JDOFatalInternalException - if the resource bundle could not be loaded during construction.
Since:
1.1

assertBundle

private void assertBundle(java.lang.String key)
Assert resources available

Parameters:
key - the message key
Throws:
JDOFatalInternalException - if the resource bundle could not be loaded during construction.
Since:
1.0.2

getMessage

private static final java.lang.String getMessage(java.util.ResourceBundle messages,
                                                 java.lang.String messageKey)
Returns message as String

Parameters:
messages - the resource bundle
messageKey - the message key
Returns:
the resolved message text

getMessage

private static final java.lang.String getMessage(java.util.ResourceBundle messages,
                                                 java.lang.String messageKey,
                                                 java.lang.Object[] msgArgs)
Formats message by adding array of arguments

Parameters:
messages - the resource bundle
messageKey - the message key
msgArgs - an array of arguments to substitute into the message
Returns:
the resolved message text

getMessage

private static final java.lang.String getMessage(java.util.ResourceBundle messages,
                                                 java.lang.String messageKey,
                                                 java.lang.Object arg)
Formats message by adding an Object argument.

Parameters:
messages - the resource bundle
messageKey - the message key
arg - the argument
Returns:
the resolved message text

getMessage

private static final java.lang.String getMessage(java.util.ResourceBundle messages,
                                                 java.lang.String messageKey,
                                                 java.lang.Object arg1,
                                                 java.lang.Object arg2)
Formats message by adding two Object arguments.

Parameters:
messages - the resource bundle
messageKey - the message key
arg1 - the first argument
arg2 - the second argument
Returns:
the resolved message text

getMessage

private static final java.lang.String getMessage(java.util.ResourceBundle messages,
                                                 java.lang.String messageKey,
                                                 java.lang.Object arg1,
                                                 java.lang.Object arg2,
                                                 java.lang.Object arg3)
Formats message by adding three Object arguments.

Parameters:
messages - the resource bundle
messageKey - the message key
arg1 - the first argument
arg2 - the second argument
arg3 - the third argument
Returns:
the resolved message text

getMessage

private static final java.lang.String getMessage(java.util.ResourceBundle messages,
                                                 java.lang.String messageKey,
                                                 int arg)
Formats message by adding an int as an argument.

Parameters:
messages - the resource bundle
messageKey - the message key
arg - the argument
Returns:
the resolved message text

getMessage

private static final java.lang.String getMessage(java.util.ResourceBundle messages,
                                                 java.lang.String messageKey,
                                                 boolean arg)
Formats message by adding a boolean as an argument.

Parameters:
messages - the resource bundle
messageKey - the message key
arg - the argument
Returns:
the resolved message text

getPackageName

private static final java.lang.String getPackageName(java.lang.String className)
Returns the package portion of the specified class.

Parameters:
className - the name of the class from which to extract the package
Returns:
package portion of the specified class

getSystemClassLoaderPrivileged

private static java.lang.ClassLoader getSystemClassLoaderPrivileged()
Get the system class loader. This must be done in a doPrivileged block because of security.