01: /*
02: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
03: *
04: * // Copyright (c) 1998, 2007, Oracle. All rights reserved.
05: *
06: *
07: * The contents of this file are subject to the terms of either the GNU
08: * General Public License Version 2 only ("GPL") or the Common Development
09: * and Distribution License("CDDL") (collectively, the "License"). You
10: * may not use this file except in compliance with the License. You can obtain
11: * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
12: * or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific
13: * language governing permissions and limitations under the License.
14: *
15: * When distributing the software, include this License Header Notice in each
16: * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
17: * Sun designates this particular file as subject to the "Classpath" exception
18: * as provided by Sun in the GPL Version 2 section of the License file that
19: * accompanied this code. If applicable, add the following below the License
20: * Header, with the fields enclosed by brackets [] replaced by your own
21: * identifying information: "Portions Copyrighted [year]
22: * [name of copyright owner]"
23: *
24: * Contributor(s):
25: *
26: * If you wish your version of this file to be governed by only the CDDL or
27: * only the GPL Version 2, indicate your decision by adding "[Contributor]
28: * elects to include this software in this distribution under the [CDDL or GPL
29: * Version 2] license." If you don't indicate a single choice of license, a
30: * recipient has the option to distribute your version of this file under
31: * either the CDDL, the GPL Version 2 or to extend the choice of license to
32: * its licensees as provided above. However, if you add GPL Version 2 code
33: * and therefore, elected the GPL Version 2 license, then the option applies
34: * only if the new code is made subject to such option by the copyright
35: * holder.
36: */
37: package oracle.toplink.essentials.internal.localization;
38:
39: import java.text.MessageFormat;
40: import java.util.Locale;
41: import java.util.ResourceBundle;
42:
43: /**
44: * <p>
45: * <b>Purpose</b>: Any TopLink message in Foundation Library & J2EE Integration JARs
46: * should be a subclass of this class.
47: *
48: * Creation date: (7/12/00)
49: * @author Shannon Chen
50: * @since TOPLink/Java 5.0
51: */
52: public abstract class ToplinkLocalization {
53:
54: /**
55: * Return the message for the given exception class and error number.
56: */
57: public static String buildMessage(String localizationClassName,
58: String key, Object[] arguments) {
59: String message = key;
60: ResourceBundle bundle = null;
61:
62: // JDK 1.1 MessageFormat can't handle null arguments
63: if (arguments != null) {
64: for (int i = 0; i < arguments.length; i++) {
65: if (arguments[i] == null) {
66: arguments[i] = "null";
67: }
68: }
69: }
70:
71: bundle = ResourceBundle.getBundle(
72: "oracle.toplink.essentials.internal.localization.i18n."
73: + localizationClassName + "Resource", Locale
74: .getDefault());
75:
76: try {
77: message = bundle.getString(key);
78: } catch (java.util.MissingResourceException mre) {
79: // Found bundle, but couldn't find translation.
80: // Get the current language's NoTranslationForThisLocale message.
81: bundle = ResourceBundle
82: .getBundle(
83: "oracle.toplink.essentials.internal.localization.i18n.ToplinkLocalizationResource",
84: Locale.getDefault());
85: String noTranslationMessage = bundle
86: .getString("NoTranslationForThisLocale");
87:
88: return MessageFormat.format(message, arguments)
89: + noTranslationMessage;
90: }
91: return MessageFormat.format(message, arguments);
92: }
93: }
|