package net.jsunit; import net.jsunit.configuration.ServerConfiguration; import org.mortbay.http.SocketListener; import org.mortbay.http.handler.ResourceHandler; import org.mortbay.jetty.Server; import org.mortbay.jetty.servlet.ServletHttpContext; import java.util.logging.Logger; /** * A simple server that depends only on Jetty (not WebWork) and only serves static files. */ public class SimpleWebServer implements WebServer { private Server httpServer; private ServerConfiguration configuration; private Logger logger = Logger.getLogger("net.jsunit"); public SimpleWebServer(ServerConfiguration configuration) { this.configuration = configuration; } public boolean isAlive() { return httpServer != null && httpServer.isStarted(); } public void start() throws Exception { if (httpServer == null) { String contextPath = "jsunit"; String resourceBase = configuration.getResourceBase().toString(); int port = configuration.getPort(); logger.info("Creating JsUnit simple server" + " on port <" + port + ">" + " with contextPath <" + contextPath + ">" + " and resourceBase <" + resourceBase + ">"); httpServer = new Server(); ServletHttpContext jsunitContext = new ServletHttpContext(); jsunitContext.setContextPath(contextPath); jsunitContext.setResourceBase(resourceBase); ResourceHandler resourceHandler = new ResourceHandler(); resourceHandler.setDirAllowed(false); jsunitContext.addHandler(resourceHandler); httpServer.addContext(jsunitContext); SocketListener listener = new SocketListener(); listener.setPort(port); httpServer.addListener(listener); } logger.info("Starting JsUnit simple server."); httpServer.start(); } public void dispose() { if (httpServer != null) { try { logger.info("Stopping JsUnit simple server."); httpServer.stop(); } catch (InterruptedException e) { e.printStackTrace(); } } } }