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]