package com.appmetr.hercules; import com.appmetr.hercules.driver.DataDriver; import com.appmetr.hercules.driver.ThriftDataDriver; import com.appmetr.hercules.manager.EntityManager; import com.appmetr.hercules.manager.IndexManager; import com.appmetr.hercules.manager.WideEntityManager; import com.appmetr.monblank.Monitoring; import com.appmetr.monblank.MonitoringStub; import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Scopes; public class HerculesFactory { public static Hercules create(final HerculesConfig config) { Injector injector = Guice.createInjector(new AbstractModule() { @Override protected void configure() { bind(HerculesConfig.class).toInstance(config); bind(DataDriver.class).to(ThriftDataDriver.class).in(Scopes.SINGLETON); bind(EntityManager.class).in(Scopes.SINGLETON); bind(WideEntityManager.class).in(Scopes.SINGLETON); bind(IndexManager.class).in(Scopes.SINGLETON); bind(Monitoring.class).to(MonitoringStub.class).in(Scopes.SINGLETON); } }); return injector.getInstance(Hercules.class); } }