package com.tinkerpop.rexster.servlet;
import com.sun.jersey.core.util.ReaderWriter;
import com.tinkerpop.gremlin.Tokens;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStreamReader;
import java.net.URL;
/**
* Serves all content requested on "/main" context.
* <p/>
* Simply pushes main.html on all paths requested from the "/main" context. There might
* be an easier and more direct way to do this.
*/
public class DogHouseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException {
String baseRexsterApiUri = this.getInitParameter("com.tinkerpop.rexster.config.rexsterApiBaseUri");
if (!baseRexsterApiUri.endsWith("/")) {
baseRexsterApiUri = baseRexsterApiUri + "/";
}
ServletContext ctx = this.getServletContext();
// set the MIME type of the response, "text/html"
response.setContentType("text/html");
// no matter what this should always root from "public"
URL resource = ctx.getResource("/public/main.html");
// kind of opens a bad door here. will probably rethink this a bit.
String content = ReaderWriter.readFromAsString(new InputStreamReader(resource.openStream()));
content = content.replace("{{inject}}", "<script type=\"text/javascript\">var GREMLIN_VERSION = \"" + Tokens.VERSION + "\";var BASE_URI = \"" + baseRexsterApiUri + "\"</script>");
response.getWriter().write(content);
}
}