package com.patch.html_to_png_server.http; import java.io.IOException; import java.net.InetSocketAddress; import java.util.HashMap; import java.util.Map; import com.patch.html_to_png_server.Options; import com.patch.html_to_png_server.renderers.AbstractRenderer; import com.patch.html_to_png_server.renderers.FF3LinuxRenderer; import com.patch.html_to_png_server.renderers.IERenderer; import com.patch.html_to_png_server.renderers.MozReplRenderer; import com.patch.html_to_png_server.renderers.Webkit2PngRenderer; import com.sun.net.httpserver.HttpServer; public class HtmlToPngHttpServer { private Options options; private static Map<String, Class<? extends AbstractRenderer>> strategies = new HashMap<String, Class<? extends AbstractRenderer>>(); static { strategies.put("/ff3-linux", FF3LinuxRenderer.class); strategies.put("/mozrepl", MozReplRenderer.class); strategies.put("/ie", IERenderer.class); strategies.put("/webkit2png", Webkit2PngRenderer.class); } public HtmlToPngHttpServer(Options options) { this.options = options; } public void run() throws IOException { HttpServer server = HttpServer.create( new InetSocketAddress(options.getPort()), 0); for (String key : strategies.keySet()) { Class<? extends AbstractRenderer> clazz = strategies.get(key); server.createContext(key, new HtmlToPngHttpHandler(clazz)); } server.setExecutor(null); server.start(); } }