li.rudin.mavenjs.servlet.MavenJSServlet Maven / Gradle / Ivy
package li.rudin.mavenjs.servlet;
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;
public class MavenJSServlet extends HttpServlet
{
private static final Logger logger = LoggerFactory.getLogger(MavenJSServlet.class);
private URL getResource(String name)
{
URL url = Thread.currentThread().getContextClassLoader().getResource(name);
if (url == null && name.length() > 1)
//try without leading /
url = Thread.currentThread().getContextClassLoader().getResource(name.substring(1));
if (url == null)
//try locally
url = MavenJSServlet.class.getResource(name);
return url;
}
private void resolveEntry(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
// /test/x/y
String requestUri = req.getRequestURI();
// /test
String servletPath = req.getContextPath() + req.getServletPath();
// /x/y
String requestString = requestUri.substring( servletPath.length() );
logger.debug("Got Request: {} and method: {}", requestString, req.getMethod());
try
{
InputStream stream = null;
URL url = getResource(requestString);
if (url != null)
stream = url.openStream();
if (stream != null)
{
StreamUtil.streamCopy(stream, resp.getOutputStream());
stream.close();
String contentType = "text/html";
if (requestString.endsWith(".js"))
contentType = "text/javascript";
else if (requestString.endsWith(".css"))
contentType = "text/css";
resp.setContentType(contentType);
resp.setStatus(HttpServletResponse.SC_OK);
return;
}
resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
}
catch (Exception e)
{
//rethrow
throw new ServletException(e);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
resolveEntry(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
resolveEntry(req, resp);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy