package net.johnewart.gearman.server.web; import freemarker.template.Configuration; import freemarker.template.TemplateException; import net.johnewart.gearman.server.config.GearmanServerConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 ClusterServlet extends HttpServlet { private final Logger LOG = LoggerFactory.getLogger(ClusterServlet.class); private static Configuration cfg = new Configuration(); private final GearmanServerConfiguration serverConfiguration; public ClusterServlet(GearmanServerConfiguration serverConfiguration) { this.serverConfiguration = serverConfiguration; } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { cfg.setClassForTemplateLoading(ClusterServlet.class, "templates"); cfg.setTemplateUpdateDelay(0); try { final OutputStream output = resp.getOutputStream(); OutputStreamWriter wr = new OutputStreamWriter(output); if(serverConfiguration.getCluster() != null) { cfg.getTemplate("cluster.ftl").process(new ClusterView(serverConfiguration.getCluster().getHazelcastInstance()), wr); } else { cfg.getTemplate("nocluster.ftl").process(null, wr); } } catch (IOException ioe) { ioe.printStackTrace(); } catch (TemplateException e) { e.printStackTrace(); } } }