00001
00027 package org.objectweb.jonas_lib;
00028
00029 import java.text.MessageFormat;
00030 import java.util.HashMap;
00031 import java.util.Locale;
00032 import java.util.Map;
00033 import java.util.MissingResourceException;
00034 import java.util.ResourceBundle;
00035
00036
00043 public class I18n {
00044
00048 private static final String RESOURCE_BUNDLE_NAME = "I18n";
00049
00053 private static Map bundles = null;
00054
00058 private ResourceBundle resourceBundle = null;
00059
00065 private I18n(String packageName, ClassLoader cl) {
00066
00067 String bundleName = packageName + "." + RESOURCE_BUNDLE_NAME;
00068
00069
00070 try {
00071 Locale locale = Locale.getDefault();
00072 resourceBundle = ResourceBundle.getBundle(bundleName, locale, cl);
00073 } catch (MissingResourceException mre) {
00074 String err = "Error when trying to get a ResourceBundle for package '" + packageName + "' : " + mre.getMessage();
00075 throw new IllegalStateException(err);
00076 }
00077 }
00078
00084 public static I18n getInstance(Class c) {
00085 return getInstance(c.getPackage().getName());
00086 }
00087
00094 public static I18n getInstance(Class c, ClassLoader cl) {
00095 return getInstance(c.getPackage().getName(), cl);
00096 }
00097
00103 public static I18n getInstance(String packageName) {
00104 return getInstance(packageName, Thread.currentThread().getContextClassLoader());
00105 }
00106
00113 public static I18n getInstance(String packageName, ClassLoader cl) {
00114 if (bundles == null) {
00115 bundles = new HashMap();
00116 }
00117
00118 I18n i18n = (I18n) bundles.get(packageName);
00119 if (i18n != null) {
00120 return i18n;
00121 }
00122
00123
00124 i18n = new I18n(packageName, cl);
00125 bundles.put(packageName, i18n);
00126 return i18n;
00127 }
00128
00135 public String getMessage(String key, Object[] args) {
00136 String value = getMessage(key);
00137 return MessageFormat.format(value, args);
00138 }
00139
00140
00146 public String getMessage(String key) {
00147 String ret = null;
00148
00149
00150 if (resourceBundle == null) {
00151 return key;
00152 }
00153
00154 try {
00155 ret = resourceBundle.getString(key);
00156 } catch (MissingResourceException mre) {
00157
00158 ret = key;
00159 }
00160
00161 return ret;
00162 }
00163
00170 public String getMessage(String key, Object obj) {
00171 return getMessage(key, new Object[] {obj});
00172 }
00173
00174
00182 public String getMessage(String key, Object obj1, Object obj2) {
00183 return getMessage(key, new Object[] {obj1, obj2 });
00184 }
00185
00194 public String getMessage(String key, Object obj1, Object obj2, Object obj3) {
00195 return getMessage(key, new Object[] {obj1, obj2, obj3 });
00196 }
00197
00198
00208 public String getMessage(String key, Object obj1, Object obj2, Object obj3, Object obj4) {
00209 return getMessage(key, new Object[] {obj1, obj2, obj3, obj4 });
00210 }
00211
00212
00223 public String getMessage(String key, Object obj1, Object obj2, Object obj3, Object obj4, Object obj5) {
00224 return getMessage(key, new Object[] {obj1, obj2, obj3, obj4, obj5 });
00225 }
00226
00227
00239 public String getMessage(String key, Object obj1, Object obj2, Object obj3, Object obj4, Object obj5, Object obj6) {
00240 return getMessage(key, new Object[] {obj1, obj2, obj3, obj4, obj5, obj6 });
00241 }
00242
00243 }