venu        2004/07/09 03:17:18

  Modified:    java/src/org/apache/xerces/dom DOMMessageFormatter.java
  Log:
  Prevent reading property files every time,also added locale support.
  
  Revision  Changes    Path
  1.5       +60 -29    
xml-xerces/java/src/org/apache/xerces/dom/DOMMessageFormatter.java
  
  Index: DOMMessageFormatter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/dom/DOMMessageFormatter.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DOMMessageFormatter.java  24 Feb 2004 23:23:17 -0000      1.4
  +++ DOMMessageFormatter.java  9 Jul 2004 10:17:18 -0000       1.5
  @@ -14,58 +14,58 @@
    * limitations under the License.
    */
   
  -package org.apache.xerces.dom;
   
  +package org.apache.xerces.dom;
  +import java.util.Locale;
   import java.util.MissingResourceException;
   import java.util.ResourceBundle;
   import java.util.PropertyResourceBundle;
   
   /**
    * Used to format DOM error messages, using the system locale.
  - * 
  + *
    * @author Sandy Gao, IBM
    * @version $Id$
    */
   public class DOMMessageFormatter {
  -
  -    public static final String XML_DOMAIN = 
"http://www.w3.org/TR/1998/REC-xml-19980210";;
       public static final String DOM_DOMAIN = "http://www.w3.org/dom/DOMTR";;
  +    public static final String XML_DOMAIN = 
"http://www.w3.org/TR/1998/REC-xml-19980210";;
       public static final String SERIALIZER_DOMAIN = 
"http://apache.org/xml/serializer";;
       
  +    private static ResourceBundle domResourceBundle = null;
  +    private static ResourceBundle xmlResourceBundle = null;
  +    private static ResourceBundle serResourceBundle = null;
  +    private static Locale locale = null;
       
  -
  +    
  +    DOMMessageFormatter(){
  +        locale = Locale.getDefault();
  +    }
       /**
        * Formats a message with the specified arguments using the given
        * locale information.
  -     * 
  +     *
        * @param domain    domain from which error string is to come.
        * @param key       The message key.
        * @param arguments The message replacement text arguments. The order
        *                  of the arguments must match that of the placeholders
        *                  in the actual message.
  -     * 
  +     *
        * @return          the formatted message.
        *
        * @throws MissingResourceException Thrown if the message with the
        *                                  specified key cannot be found.
        */
  -     public static String formatMessage(String domain, 
  -            String key, Object[] arguments)
  -            throws MissingResourceException {
  -
  -        // TODO: need to support locale information
  -        ResourceBundle resourceBundle = null;
  -        if(domain.equals(DOM_DOMAIN)) {
  -            resourceBundle = 
PropertyResourceBundle.getBundle("org.apache.xerces.impl.msg.DOMMessages");
  -        } else if (domain.equals(SERIALIZER_DOMAIN)) {
  -            resourceBundle = 
PropertyResourceBundle.getBundle("org.apache.xerces.impl.msg.XMLSerializerMessages");
  -        } else if (domain.equals(XML_DOMAIN)){
  -            resourceBundle = 
PropertyResourceBundle.getBundle("org.apache.xerces.impl.msg.XMLMessages");
  -            
  -        }else {
  -            throw new MissingResourceException("Unknown domain" + domain, null, 
key);
  +    public static String formatMessage(String domain,
  +    String key, Object[] arguments)
  +    throws MissingResourceException {
  +        ResourceBundle resourceBundle = getResourceBundle(domain);
  +        if(resourceBundle == null){
  +            init();
  +            resourceBundle = getResourceBundle(domain);
  +            if(resourceBundle == null)
  +                throw new MissingResourceException("Unknown domain" + domain, null, 
key);
           }
  -
           // format message
           String msg;
           try {
  @@ -73,21 +73,21 @@
               if (arguments != null) {
                   try {
                       msg = java.text.MessageFormat.format(msg, arguments);
  -                } 
  +                }
                   catch (Exception e) {
                       msg = resourceBundle.getString("FormatFailed");
                       msg += " " + resourceBundle.getString(key);
                   }
  -            } 
  +            }
           }
           
  -
  +        
           // error
           catch (MissingResourceException e) {
               msg = resourceBundle.getString("BadMessageKey");
               throw new MissingResourceException(key, msg, key);
           }
  -
  +        
           // no message
           if (msg == null) {
               msg = key;
  @@ -102,8 +102,39 @@
                   }
               }
           }
  -
  -
  +        
           return msg;
  +    }
  +    
  +    static ResourceBundle getResourceBundle(String domain){
  +        if(domain == DOM_DOMAIN)
  +            return domResourceBundle;
  +        else if( domain == XML_DOMAIN)
  +            return xmlResourceBundle;
  +        else if(domain == SERIALIZER_DOMAIN)
  +            return serResourceBundle;
  +        return null;
  +    }
  +    /**
  +     * Initialize Message Formatter.
  +     */
  +    public static void init(){
  +        if (locale != null) {
  +            domResourceBundle = 
PropertyResourceBundle.getBundle("org.apache.xerces.impl.msg.DOMMessages", locale);
  +            xmlResourceBundle = 
PropertyResourceBundle.getBundle("org.apache.xerces.impl.msg.XMLSerializerMessages", 
locale);
  +            serResourceBundle = 
PropertyResourceBundle.getBundle("org.apache.xerces.impl.msg.XMLMessages", locale);
  +        }else{
  +            domResourceBundle = 
PropertyResourceBundle.getBundle("org.apache.xerces.impl.msg.DOMMessages");
  +            xmlResourceBundle = 
PropertyResourceBundle.getBundle("org.apache.xerces.impl.msg.XMLSerializerMessages");
  +            serResourceBundle = 
PropertyResourceBundle.getBundle("org.apache.xerces.impl.msg.XMLMessages");
  +        }
  +    }
  +    
  +    /**
  +     * setLocale to be used by the formatter.
  +     * @param locale
  +     */
  +    public static void setLocale(Locale dlocale){
  +        locale = dlocale;
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to