package org.browsermob.proxy;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.servlet.GuiceServletContextListener;
import com.google.sitebricks.SitebricksModule;
import org.browsermob.proxy.bricks.ProxyResource;
import org.browsermob.proxy.guice.ConfigModule;
import org.browsermob.proxy.guice.JettyModule;
import org.browsermob.proxy.util.Log;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import javax.servlet.ServletContextEvent;
import java.io.InputStream;
import java.util.Properties;
public class Main {
private static final Log LOG = new Log();
public static void main(String[] args) throws Exception {
String version = "UNKNOWN/DEVELOPMENT";
InputStream is = Main.class.getResourceAsStream("/META-INF/maven/biz.neustar/browsermob-proxy/pom.properties");
if (is != null) {
Properties props = new Properties();
props.load(is);
version = props.getProperty("version");
}
final Injector injector = Guice.createInjector(new ConfigModule(args), new JettyModule(), new SitebricksModule() {
@Override
protected void configureSitebricks() {
scan(ProxyResource.class.getPackage());
}
});
LOG.info("Starting BrowserMob Proxy version %s", version);
Server server = injector.getInstance(Server.class);
GuiceServletContextListener gscl = new GuiceServletContextListener() {
@Override
protected Injector getInjector() {
return injector;
}
};
server.start();
ServletContextHandler context = (ServletContextHandler) server.getHandler();
gscl.contextInitialized(new ServletContextEvent(context.getServletContext()));
server.join();
}
}