import java.awt.Desktop;
import java.io.File;
import java.net.URI;
import java.net.URL;
import java.util.Arrays;

import javax.servlet.Servlet;

import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.servlet.ServletHandler;


public class HttpFactory {
	public static Handler fromServlet(String path, Class<? extends Servlet> servletClass){
		ServletHandler handler = new ServletHandler();
		handler.addServletWithMapping(servletClass, path);
		return handler;
	}
	
	public static Handler fromFiles(String ... files){
		ResourceHandler handler = new ResourceHandler();
		handler.setResourceBase("./");
		handler.setDirectoriesListed(true);
		handler.setWelcomeFiles(Arrays.asList(files).toArray(new String[files.length]));
		return handler;
	}

	
	public static Server fromHandlers(int port, Handler ... handlers){
		Server server = new Server(port);
		HandlerList handler = new HandlerList();
		for (Handler h : handlers)
			handler.addHandler(h);
		server.setHandler(handler);
		return server;
	}
	
	public static void main(String ... args) throws Exception{
		Server s = fromHandlers(8000, fromFiles("/www/welcome.html"), fromServlet("/hello",Welcome.class), fromServlet("/ajax",Ajax.class));

		s.start();
		
		Desktop.getDesktop().browse(new URI("http://localhost:8000/www/welcome.html"));
		
		s.join();
	}
}
