package net.johnewart.gearman.server.web;
import freemarker.template.Configuration;
import freemarker.template.TemplateException;
import net.johnewart.gearman.engine.storage.ExceptionStorageEngine;
import net.johnewart.gearman.engine.storage.NoopExceptionStorageEngine;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class ExceptionsServlet extends HttpServlet {
private final ExceptionStorageEngine exceptionStorageEngine;
private static Configuration cfg = new Configuration();
public ExceptionsServlet(ExceptionStorageEngine exceptionStorageEngine) {
this.exceptionStorageEngine = exceptionStorageEngine;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
cfg.setClassForTemplateLoading(ClusterServlet.class, "templates");
cfg.setTemplateUpdateDelay(0);
final int pageSize, pageNum;
if(req.getParameter("pageSize") != null) {
pageSize = Integer.valueOf(req.getParameter("pageSize")).intValue();
} else {
pageSize = 50;
}
if(req.getParameter("pageNum") != null) {
pageNum = Integer.valueOf(req.getParameter("pageNum")).intValue();
} else {
pageNum = 1;
}
try {
final OutputStream output = resp.getOutputStream();
OutputStreamWriter wr = new OutputStreamWriter(output);
if(exceptionStorageEngine != null && exceptionStorageEngine.getClass() != NoopExceptionStorageEngine.class) {
cfg.getTemplate("exceptions.ftl").process(new ExceptionsView(exceptionStorageEngine, pageSize, pageNum), wr);
} else {
cfg.getTemplate("noexceptions.ftl").process(null, wr);
}
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
}
}