FileDocCategorySizeDatePackage
XMLMessages.javaAPI DocJava SE 5 API5943Fri Aug 26 14:56:02 BST 2005com.sun.org.apache.xml.internal.res

XMLMessages

public class XMLMessages extends Object
A utility class for issuing XML error messages.
xsl.usage
internal

Fields Summary
protected Locale
fLocale
The local object to use.
private static ListResourceBundle
XMLBundle
The language specific resource object for XML messages.
private static final String
XML_ERROR_RESOURCES
The class name of the XML error message string table.
protected static String
BAD_CODE
String to use if a bad message code is used.
protected static String
FORMAT_FAILED
String to use if the message format operation failed.
Constructors Summary
Methods Summary
public static final java.lang.StringcreateMsg(java.util.ListResourceBundle fResourceBundle, java.lang.String msgKey, java.lang.Object[] args)
Creates a message from the specified key and replacement arguments, localized to the given locale.

param
errorCode The key for the message text.
param
fResourceBundle The resource bundle to use.
param
msgKey The message key to use.
param
args The arguments to be used as replacement text in the message created.
return
The formatted message string.


    String fmsg = null;
    boolean throwex = false;
    String msg = null;

    if (msgKey != null)
      msg = fResourceBundle.getString(msgKey);

    if (msg == null)
    {
      msg = fResourceBundle.getString(BAD_CODE);
      throwex = true;
    }

    if (args != null)
    {
      try
      {

        // Do this to keep format from crying.
        // This is better than making a bunch of conditional
        // code all over the place.
        int n = args.length;

        for (int i = 0; i < n; i++)
        {
          if (null == args[i])
            args[i] = "";
        }

        fmsg = java.text.MessageFormat.format(msg, args);
      }
      catch (Exception e)
      {
        fmsg = fResourceBundle.getString(FORMAT_FAILED);
        fmsg += " " + msg;
      }
    }
    else
      fmsg = msg;

    if (throwex)
    {
      throw new RuntimeException(fmsg);
    }

    return fmsg;
  
public static final java.lang.StringcreateXMLMessage(java.lang.String msgKey, java.lang.Object[] args)
Creates a message from the specified key and replacement arguments, localized to the given locale.

param
errorCode The key for the message text.
param
args The arguments to be used as replacement text in the message created.
return
The formatted message string.

    if (XMLBundle == null)
      XMLBundle = loadResourceBundle(XML_ERROR_RESOURCES);
    
    if (XMLBundle != null)
    {
      return createMsg(XMLBundle, msgKey, args);
    }
    else
      return "Could not load any resource bundles.";
  
public java.util.LocalegetLocale()
Get the Locale object that is being used.

return
non-null reference to Locale object.

    return fLocale;
  
protected static java.lang.StringgetResourceSuffix(java.util.Locale locale)
Return the resource file suffic for the indicated locale For most locales, this will be based the language code. However for Chinese, we do distinguish between Taiwan and PRC

param
locale the locale
return
an String suffix which can be appended to a resource name


    String suffix = "_" + locale.getLanguage();
    String country = locale.getCountry();

    if (country.equals("TW"))
      suffix += "_" + country;

    return suffix;
  
public static java.util.ListResourceBundleloadResourceBundle(java.lang.String className)
Return a named ResourceBundle for a particular locale. This method mimics the behavior of ResourceBundle.getBundle().

param
res the name of the resource to load.
param
locale the locale to prefer when searching for the bundle
param
className The class name of the resource bundle.
return
the ResourceBundle
throws
MissingResourceException

    
    Locale locale = Locale.getDefault();

    try
    {
      return (ListResourceBundle)ResourceBundle.getBundle(className, locale);
    }
    catch (MissingResourceException e)
    {
      try  // try to fall back to en_US if we can't load
      {

        // Since we can't find the localized property file,
        // fall back to en_US.
        return (ListResourceBundle)ResourceBundle.getBundle(
          className, new Locale("en", "US"));
      }
      catch (MissingResourceException e2)
      {

        // Now we are really in trouble.
        // very bad, definitely very bad...not going to get very far
        throw new MissingResourceException(
          "Could not load any resource bundles." + className, className, "");
      }
    }
  
public voidsetLocale(java.util.Locale locale)
Set the Locale object to use.

param
locale non-null reference to Locale object.

    
                   
      
  
    fLocale = locale;