
com.google.sitebricks.stat.StatsServlet Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sitebricks-stat Show documentation
Show all versions of sitebricks-stat Show documentation
Statistics/Monitoring for Guice applications (does not require sitebricks)
The newest version!
package com.google.sitebricks.stat;
import com.google.inject.Inject;
import com.google.inject.Singleton;
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.PrintWriter;
import java.util.Map;
import static com.google.common.base.Objects.firstNonNull;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Throwables.getStackTraceAsString;
/**
* @author [email protected] (Dhanji R. Prasanna)
*/
@Singleton
class StatsServlet extends HttpServlet {
static final String FORMAT_PARAM = "format";
static final String DEFAULT_FORMAT = "default";
private final Stats stats;
private final Map publishersByFormat;
@Inject
StatsServlet(Map publishersByFormat, Stats stats) {
this.publishersByFormat = publishersByFormat;
this.stats = stats;
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setStatus(HttpServletResponse.SC_OK);
String format = firstNonNull(req.getParameter(FORMAT_PARAM), DEFAULT_FORMAT);
StatsPublisher publisher = checkNotNull(publishersByFormat.get(format),
"No publisher for format %s found in %s",
format, publishersByFormat);
resp.setContentType(publisher.getContentType());
PrintWriter writer = resp.getWriter();
try {
publisher.publish(stats.snapshot(), writer);
} catch (Exception e) {
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
writer.write(String.format(
"Exception publishing stats:\n%s", getStackTraceAsString(e)));
} finally {
writer.flush();
writer.close();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy