I18n.java

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         // Resource bundle is on the form packagename.I18n.properties
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         // No bundle, return key
00150         if (resourceBundle == null) {
00151             return key;
00152         }
00153 
00154         try {
00155             ret = resourceBundle.getString(key);
00156         } catch (MissingResourceException mre) {
00157             // key not found, return the key
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 }

Generated on Tue Feb 15 15:05:55 2005 for JOnAS by  doxygen 1.3.9.1