package org.atomnuke.service.jetty.version; import com.rackspace.papi.commons.util.io.RawInputStreamReader; import java.io.IOException; import java.io.InputStream; import java.net.URL; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author zinic */ public class VersionServlet extends HttpServlet { private static final Logger LOGGER = LoggerFactory.getLogger(VersionServlet.class); private static final String GET_METHOD = "GET"; private final String versionString; public VersionServlet() { final URL resourceURL = VersionServlet.class.getResource("build-version.txt"); String actualVersion = "VERSION NOT SET"; if (resourceURL != null) { try { final InputStream resourceStream = resourceURL.openStream(); actualVersion = new String(RawInputStreamReader.instance().readFully(resourceStream)); resourceStream.close(); } catch (IOException ioe) { LOGGER.error("Unable to read build version info. This may be a packaging error and should be reported upstream.", ioe); } } this.versionString = actualVersion; } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { if (GET_METHOD.equalsIgnoreCase(req.getMethod())) { resp.setStatus(200); resp.getOutputStream().write(versionString.getBytes()); } else { resp.setStatus(405); } } }