package org.atomhopper.jetty;
import org.atomhopper.AtomHopperServlet;
import org.atomhopper.AtomHopperVersionServlet;
import org.atomhopper.servlet.ServletInitParameter;
import org.atomhopper.servlet.ServletSpringContext;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.springframework.web.context.ContextLoaderListener;
/**
*
*
*/
public class AtomHopperJettyServerBuilder {
private final int portNumber;
public AtomHopperJettyServerBuilder(int portNumber) {
this.portNumber = portNumber;
}
private Server buildNewInstance() {
final Server jettyServerReference = new Server(portNumber);
final ServletContextHandler rootContext = buildRootContext(jettyServerReference);
final ServletHolder atomHopServer = new ServletHolder(AtomHopperServlet.class);
final ServletHolder versionServlet = new ServletHolder(AtomHopperVersionServlet.class);
atomHopServer.setInitParameter(ServletInitParameter.CONTEXT_ADAPTER_CLASS.toString(), ServletSpringContext.class.getName());
atomHopServer.setInitParameter(ServletInitParameter.CONFIGURATION_LOCATION.toString(), "classpath:/META-INF/atom-server.cfg.xml");
rootContext.addServlet(versionServlet, "/buildinfo");
rootContext.addServlet(atomHopServer, "/*");
return jettyServerReference;
}
private ServletContextHandler buildRootContext(Server serverReference) {
final ServletContextHandler servletContext = new ServletContextHandler(serverReference, "/");
servletContext.getInitParams().put("contextConfigLocation", "classpath:/META-INF/application-context.xml");
servletContext.addEventListener(new ContextLoaderListener());
return servletContext;
}
public Server newServer() {
return buildNewInstance();
}
}