![JAR search and dependency download from the Maven repository](/logo.png)
li.rudin.jjst.servlet.JJSTServlet Maven / Gradle / Ivy
package li.rudin.jjst.servlet;
import java.io.IOException;
import java.lang.ref.SoftReference;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import li.rudin.jjst.core.JJST;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@WebServlet(loadOnStartup=1, urlPatterns="/jjst")
public class JJSTServlet extends HttpServlet
{
private static final Logger logger = LoggerFactory.getLogger(JJSTServlet.class);
private Map> cache = new HashMap<>();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
//classname parameter
String className = req.getParameter("class");
String debugStr = req.getParameter("debug");
boolean debug = false;
if (debugStr != null && Boolean.parseBoolean(debugStr))
debug = true;
try
{
String script = null;
//aquire reference
SoftReference reference = cache.get(className);
if (reference != null)
//Try to get soft cached script
script = reference.get();
if (script == null)
{
//Generate from class
Class> type = Class.forName(className);
script = JJST.transform(type, !debug);
//Store in cache
cache.put(className, new SoftReference(script));
}
resp.setContentType("text/javascript");
resp.getOutputStream().write(script.getBytes());
}
catch (Exception e)
{
logger.error("doGet", e);
throw new ServletException(e);
}
}
@Override
public void init() throws ServletException
{
logger.info("JJST Servlet {}", JJST.getVersion());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy