//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.core.web.servlets; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpStatus; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import uk.gov.dstl.baleen.core.manager.BaleenManager; import uk.gov.dstl.baleen.core.web.security.WebPermission; /** * Provides ability to control the BaleenManager instance {@link BaleenManager} * * End points: * * /stop will shutdown the whole baleen instance. * * If using authentication, the user will need the "manager.stop". * * * * */ public class BaleenManagerServlet extends AbstractApiServlet { private static final Logger LOGGER = LoggerFactory.getLogger(BaleenManagerServlet.class); private static final long serialVersionUID = 1L; private final transient BaleenManager manager; /** * New instance, to control the baleen manager. * * @param manager * the pipeline manager what owns the pipelines */ public BaleenManagerServlet(BaleenManager manager) { super(LOGGER, BaleenManagerServlet.class); this.manager = manager; } @Override public WebPermission[] getPermissions() { return new WebPermission[] { new WebPermission("Stop Baleen", HttpMethod.POST, "manager.stop") }; } @Override protected void post(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String servletPath = req.getRequestURI(); if (servletPath.endsWith("stop")) { manager.stop(); } else { respondWithError(resp, HttpStatus.BAD_REQUEST_400, "Unknown request"); } } }