package es.uji.security.util.i18n;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
public class CustomBundleLoader
{
private static final Map<String, ResourceBundle> BUNDLES = new HashMap<String, ResourceBundle>();
public static ResourceBundle getBundle(String name)
{
synchronized (BUNDLES)
{
ResourceBundle bundle = BUNDLES.get(name);
if (bundle == null)
{
ClassLoader loader = getContextClassLoader();
bundle = loadBundle(loader, name.replace('.', '/') + ".properties");
BUNDLES.put(name, bundle);
}
return bundle;
}
}
private static ClassLoader getContextClassLoader()
{
return Thread.currentThread().getContextClassLoader() != null ? Thread.currentThread()
.getContextClassLoader()
: CustomBundleLoader.class.getClassLoader() != null ? CustomBundleLoader.class
.getClassLoader() : ClassLoader.getSystemClassLoader();
}
private static ResourceBundle loadBundle(ClassLoader loader, String res)
{
try
{
InputStream in = loader.getResourceAsStream(res);
try
{
return new PropertyResourceBundle(in);
}
finally
{
in.close();
}
}
catch (IOException e)
{
throw new IllegalStateException(e.toString());
}
}
}