|
1 /* |
|
2 * reserved comment block |
|
3 * DO NOT REMOVE OR ALTER! |
|
4 */ |
|
5 /* |
|
6 * Copyright 1999-2004 The Apache Software Foundation. |
|
7 * |
|
8 * Licensed under the Apache License, Version 2.0 (the "License"); |
|
9 * you may not use this file except in compliance with the License. |
|
10 * You may obtain a copy of the License at |
|
11 * |
|
12 * http://www.apache.org/licenses/LICENSE-2.0 |
|
13 * |
|
14 * Unless required by applicable law or agreed to in writing, software |
|
15 * distributed under the License is distributed on an "AS IS" BASIS, |
|
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
17 * See the License for the specific language governing permissions and |
|
18 * limitations under the License. |
|
19 */ |
|
20 |
|
21 package com.sun.org.apache.xerces.internal.impl.msg; |
|
22 |
|
23 import java.util.Locale; |
|
24 import java.util.MissingResourceException; |
|
25 import java.util.ResourceBundle; |
|
26 import java.util.PropertyResourceBundle; |
|
27 |
|
28 import com.sun.org.apache.xerces.internal.util.MessageFormatter; |
|
29 import com.sun.org.apache.xerces.internal.utils.SecuritySupport; |
|
30 |
|
31 /** |
|
32 * XMLMessageFormatter provides error messages for the XML 1.0 Recommendation and for |
|
33 * the Namespaces Recommendation |
|
34 * |
|
35 * @xerces.internal |
|
36 * |
|
37 * @author Eric Ye, IBM |
|
38 * |
|
39 */ |
|
40 public class XMLMessageFormatter_es implements MessageFormatter { |
|
41 /** |
|
42 * The domain of messages concerning the XML 1.0 specification. |
|
43 */ |
|
44 public static final String XML_DOMAIN = "http://www.w3.org/TR/1998/REC-xml-19980210"; |
|
45 public static final String XMLNS_DOMAIN = "http://www.w3.org/TR/1999/REC-xml-names-19990114"; |
|
46 |
|
47 // private objects to cache the locale and resource bundle |
|
48 private Locale fLocale = null; |
|
49 private ResourceBundle fResourceBundle = null; |
|
50 |
|
51 // |
|
52 // MessageFormatter methods |
|
53 // |
|
54 |
|
55 /** |
|
56 * Formats a message with the specified arguments using the given |
|
57 * locale information. |
|
58 * |
|
59 * @param locale The locale of the message. |
|
60 * @param key The message key. |
|
61 * @param arguments The message replacement text arguments. The order |
|
62 * of the arguments must match that of the placeholders |
|
63 * in the actual message. |
|
64 * |
|
65 * @return Returns the formatted message. |
|
66 * |
|
67 * @throws MissingResourceException Thrown if the message with the |
|
68 * specified key cannot be found. |
|
69 */ |
|
70 public String formatMessage(Locale locale, String key, Object[] arguments) |
|
71 throws MissingResourceException { |
|
72 |
|
73 if (fResourceBundle == null || locale != fLocale) { |
|
74 if (locale != null) { |
|
75 fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", locale); |
|
76 // memorize the most-recent locale |
|
77 fLocale = locale; |
|
78 } |
|
79 if (fResourceBundle == null) |
|
80 fResourceBundle = SecuritySupport.getResourceBundle("com.sun.org.apache.xerces.internal.impl.msg.XMLMessages"); |
|
81 } |
|
82 |
|
83 // format message |
|
84 String msg; |
|
85 try { |
|
86 msg = fResourceBundle.getString(key); |
|
87 if (arguments != null) { |
|
88 try { |
|
89 msg = java.text.MessageFormat.format(msg, arguments); |
|
90 } |
|
91 catch (Exception e) { |
|
92 msg = fResourceBundle.getString("FormatFailed"); |
|
93 msg += " " + fResourceBundle.getString(key); |
|
94 } |
|
95 } |
|
96 } |
|
97 |
|
98 // error |
|
99 catch (MissingResourceException e) { |
|
100 msg = fResourceBundle.getString("BadMessageKey"); |
|
101 throw new MissingResourceException(key, msg, key); |
|
102 } |
|
103 |
|
104 // no message |
|
105 if (msg == null) { |
|
106 msg = key; |
|
107 if (arguments.length > 0) { |
|
108 StringBuffer str = new StringBuffer(msg); |
|
109 str.append('?'); |
|
110 for (int i = 0; i < arguments.length; i++) { |
|
111 if (i > 0) { |
|
112 str.append('&'); |
|
113 } |
|
114 str.append(String.valueOf(arguments[i])); |
|
115 } |
|
116 } |
|
117 } |
|
118 |
|
119 return msg; |
|
120 } |
|
121 |
|
122 } |