KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > xerces > util > SAXMessageFormatter


1 /*
2  * Copyright 2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.xerces.util;
17
18 import java.util.Locale JavaDoc;
19 import java.util.MissingResourceException JavaDoc;
20 import java.util.ResourceBundle JavaDoc;
21 import java.util.PropertyResourceBundle JavaDoc;
22
23 /**
24  * Used to format SAX error messages using a specified locale.
25  *
26  * @author Michael Glavassevich, IBM
27  *
28  * @version $Id: SAXMessageFormatter.java,v 1.2 2004/02/24 23:15:53 mrglavas Exp $
29  */

30 public class SAXMessageFormatter {
31
32     /**
33      * Formats a message with the specified arguments using the given
34      * locale information.
35      *
36      * @param locale The locale of the message.
37      * @param key The message key.
38      * @param arguments The message replacement text arguments. The order
39      * of the arguments must match that of the placeholders
40      * in the actual message.
41      *
42      * @return the formatted message.
43      *
44      * @throws MissingResourceException Thrown if the message with the
45      * specified key cannot be found.
46      */

47     public static String JavaDoc formatMessage(Locale JavaDoc locale,
48         String JavaDoc key, Object JavaDoc[] arguments)
49         throws MissingResourceException JavaDoc {
50
51         ResourceBundle JavaDoc resourceBundle = null;
52         if (locale != null) {
53             resourceBundle =
54                 PropertyResourceBundle.getBundle("org.apache.xerces.impl.msg.SAXMessages", locale);
55         }
56         else {
57             resourceBundle =
58                 PropertyResourceBundle.getBundle("org.apache.xerces.impl.msg.SAXMessages");
59         }
60
61         // format message
62
String JavaDoc msg;
63         try {
64             msg = resourceBundle.getString(key);
65             if (arguments != null) {
66                 try {
67                     msg = java.text.MessageFormat.format(msg, arguments);
68                 }
69                 catch (Exception JavaDoc e) {
70                     msg = resourceBundle.getString("FormatFailed");
71                     msg += " " + resourceBundle.getString(key);
72                 }
73             }
74         }
75         
76         // error
77
catch (MissingResourceException JavaDoc e) {
78             msg = resourceBundle.getString("BadMessageKey");
79             throw new MissingResourceException JavaDoc(key, msg, key);
80         }
81
82         // no message
83
if (msg == null) {
84             msg = key;
85             if (arguments.length > 0) {
86                 StringBuffer JavaDoc str = new StringBuffer JavaDoc(msg);
87                 str.append('?');
88                 for (int i = 0; i < arguments.length; i++) {
89                     if (i > 0) {
90                         str.append('&');
91                     }
92                     str.append(String.valueOf(arguments[i]));
93                 }
94             }
95         }
96         return msg;
97     }
98 }
99
Popular Tags