package org.kisst.gft.admin;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.kisst.gft.GftContainer;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.kisst.gft.GftWrapper;
@SuppressWarnings("deprecation")
public class TemplateServlet extends BaseServlet {
private static final Configuration cfg= new Configuration();;
static {
//cfg.setDirectoryForTemplateLoading(new File("src/java"));
cfg.setClassForTemplateLoading(TemplateServlet.class, "/");
cfg.setObjectWrapper(new DefaultObjectWrapper());
}
private final String templateName;
public TemplateServlet(GftWrapper wrapper) {
super(wrapper);
this.templateName=this.getClass().getName().replace('.', '/')+".template";
}
public TemplateServlet(GftWrapper wrapper, String templateName) {
super(wrapper);
this.templateName=templateName;
}
public void handle(HttpServletRequest request, HttpServletResponse response) {
if (getUser(request, response)==null)
return;
try {
HashMap<String, Object> root=new HashMap<String, Object>();
root.put("gft", wrapper.getCurrentGft());
addContext(request, root);
Template temp = cfg.getTemplate(templateName);
Writer out = response.getWriter();
temp.process(root, out);
out.flush();
}
catch (TemplateException e) { throw new RuntimeException(e); }
catch (IOException e) { throw new RuntimeException(e); }
}
protected void addContext(HttpServletRequest request, HashMap<String, Object> root) {}
}