package fi.otavanopisto.pyramus.freemarker;
import java.io.IOException;
import java.util.Locale;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import fi.otavanopisto.pyramus.plugin.PluginManager;
import freemarker.cache.TemplateLoader;
import freemarker.template.SimpleHash;
import freemarker.template.Template;
import freemarker.template.TemplateModel;
public class FreemarkerServlet extends freemarker.ext.servlet.FreemarkerServlet {
/**
* SerialVersionUID
*/
private static final long serialVersionUID = 2472454788723357007L;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
@Override
protected TemplateLoader createTemplateLoader(String templatePath) throws IOException {
if (templatePath.startsWith("class://")) {
return new ClassLoaderTemplateLoader(PluginManager.getInstance().getPluginsClassLoader(), templatePath.substring(7));
}
return super.createTemplateLoader(templatePath);
}
@Override
protected boolean preTemplateProcess(HttpServletRequest request, HttpServletResponse response, Template template, TemplateModel data) throws ServletException, IOException {
((SimpleHash) data).put("contextPath", request.getContextPath());
return super.preTemplateProcess(request, response, template, data);
}
@Override
protected Locale deduceLocale(String templatePath, HttpServletRequest request, HttpServletResponse response) {
Locale locale = request.getLocale();
if (locale != null) {
return locale;
}
return super.deduceLocale(templatePath, request, response);
}
}