package org.arbeitspferde.groningen.http; import com.google.common.base.Strings; import com.google.common.io.ByteStreams; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * A simple HTTP Servlet to serve static Groningen resources. */ public class GroningenResourceServlet extends HttpServlet { private static final String DEFAULT_RESOURCE = "/index.html"; private static final String BASE_PATH = "/org/arbeitspferde/groningen/ui"; public GroningenResourceServlet() { } private static String getContentType(String resourcePath) { if (resourcePath.endsWith(".css")) { return "text/css"; } else if (resourcePath.endsWith(".js")) { return "application/x-javascript"; } else { return "text/html"; } } @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String requestedPath = request.getRequestURI(); if (Strings.isNullOrEmpty(requestedPath) || requestedPath.equals("/")) { requestedPath = DEFAULT_RESOURCE; } String completePath = BASE_PATH + requestedPath; InputStream istream = getClass().getResourceAsStream(completePath); if (istream == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } response.setHeader("Content-Type", getContentType(requestedPath)); OutputStream ostream = response.getOutputStream(); ByteStreams.copy(istream, ostream); } }