package org.karmaexchange.util; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.WebApplicationException; import org.karmaexchange.util.AdminUtil.AdminTaskType; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor(access = AccessLevel.PROTECTED) @SuppressWarnings("serial") public abstract class AdminTaskServlet extends HttpServlet { private static final Logger logger = Logger.getLogger(AdminTaskServlet.class.getName()); private final AdminTaskType taskType; protected HttpServletRequest req; protected HttpServletResponse resp; protected abstract void execute() throws IOException; @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { this.req = req; this.resp = resp; AdminUtil.setCurrentUser(taskType); try { execute(); } catch (WebApplicationException e) { logger.log(Level.WARNING, "Admin task failure: " + ServletUtil.getExceptionResponseAsJsonString(e)); } finally { UserService.clearCurrentUser(); } } @Override public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { doGet(req, resp); } }