package org.swellrt.server.velocity;
import org.apache.velocity.tools.ConversionUtils;
import org.apache.velocity.tools.generic.ResourceTool;
import org.apache.velocity.tools.generic.ValueParser;
import org.waveprotocol.wave.util.logging.Log;
import java.util.Locale;
import java.util.ResourceBundle;
public class CustomResourceTool extends ResourceTool {
public static final String CLASS_LOADER_KEY = "classLoader";
private static final Log LOG = Log.get(CustomResourceTool.class);
private ClassLoader classLoader;
public void setClassLoader(ClassLoader classLoader) {
this.classLoader = classLoader;
}
@Override
protected void configure(ValueParser parser) {
try {
ClassLoader classLoader = (ClassLoader) parser.getValue(CLASS_LOADER_KEY);
if (classLoader != null) {
this.classLoader = classLoader;
}
} catch (ClassCastException e) {
}
super.configure(parser);
}
@Override
protected ResourceBundle getBundle(String baseName, Object loc) {
Locale locale = (loc == null) ? getLocale() : toLocale(loc);
if (baseName == null || locale == null) {
return null;
}
return (classLoader != null) ? ResourceBundle.getBundle(baseName, locale, classLoader)
: ResourceBundle.getBundle(baseName, locale);
}
// Copied from ResourceTool class
private Locale toLocale(Object obj) {
if (obj == null) {
return null;
}
if (obj instanceof Locale)
{
return (Locale) obj;
}
String s = String.valueOf(obj);
return ConversionUtils.toLocale(s);
}
}