package ru.qatools.gridrouter; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import ru.qatools.gridrouter.json.JsonFormatter; import ru.qatools.gridrouter.sessions.StatsCounter; import javax.servlet.ServletException; import javax.servlet.annotation.HttpConstraint; import javax.servlet.annotation.ServletSecurity; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import static java.nio.charset.StandardCharsets.UTF_8; import static javax.servlet.http.HttpServletResponse.SC_OK; import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; /** * @author Dmitry Baev charlie@yandex-team.ru */ @WebServlet(urlPatterns = {"/stats"}, asyncSupported = true) @ServletSecurity(value = @HttpConstraint(rolesAllowed = {"user"})) public class StatsServlet extends SpringHttpServlet { @Autowired private transient StatsCounter statsCounter; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setStatus(SC_OK); response.setContentType(APPLICATION_JSON_VALUE); try (OutputStream output = response.getOutputStream()) { IOUtils.write(JsonFormatter.toJson( statsCounter.getStats(request.getRemoteUser()) ), output, UTF_8); } } }