package codeine; import codeine.collectors.CollectorsListHolderFactory; import codeine.collectors.CollectorsRunnerFactory; import codeine.collectors.OneCollectorRunnerFactory; import codeine.collectors.tags.TagsCollectorRunnerFactory; import codeine.collectors.version.VersionCollectorRunnerFactory; import codeine.configuration.IConfigurationManager; import codeine.db.IAlertsDatabaseConnector; import codeine.db.IStatusDatabaseConnector; import codeine.db.ProjectsConfigurationConnector; import codeine.db.mysql.DBConnection; import codeine.db.mysql.IDBConnection; import codeine.db.mysql.MysqlHostSelector; import codeine.db.mysql.NearestMysqlHostSelectorPeer; import codeine.db.mysql.connectors.NotificationsMysqlConnector; import codeine.db.mysql.connectors.ProjectsConfigurationMysqlConnector; import codeine.db.mysql.connectors.StatusMysqlConnector; import codeine.jsons.nodes.NodesManager; import codeine.jsons.peer_status.PeerStatus; import codeine.nodes.NodesManagerPeer; import codeine.nodes.NodesRunner; import com.google.inject.AbstractModule; import com.google.inject.Scopes; import com.google.inject.assistedinject.FactoryModuleBuilder; public class CodeinePeerModule extends AbstractModule { @Override protected void configure() { bind(IAlertsDatabaseConnector.class).to(NotificationsMysqlConnector.class); bind(ProjectsConfigurationConnector.class).to(ProjectsConfigurationMysqlConnector.class); bind(IStatusDatabaseConnector.class).to(StatusMysqlConnector.class); bind(MysqlHostSelector.class).to(NearestMysqlHostSelectorPeer.class).in(Scopes.SINGLETON); bind(IDBConnection.class).to(DBConnection.class).in(Scopes.SINGLETON); bind(PeerStatus.class).in(Scopes.SINGLETON); bind(IConfigurationManager.class).to(ConfigurationManagerPeer.class).in(Scopes.SINGLETON); bind(NodesRunner.class).in(Scopes.SINGLETON); bind(ConfigurationGetter.class).in(Scopes.SINGLETON); bind(PeerStatusChangedUpdater.class).in(Scopes.SINGLETON); bind(NodesManager.class).to(NodesManagerPeer.class).in(Scopes.SINGLETON); bind(SnoozeKeeper.class).in(Scopes.SINGLETON); install(new FactoryModuleBuilder().build(CollectorsRunnerFactory.class)); install(new FactoryModuleBuilder().build(CollectorsListHolderFactory.class)); install(new FactoryModuleBuilder().build(OneCollectorRunnerFactory.class)); install(new FactoryModuleBuilder().build(VersionCollectorRunnerFactory.class)); install(new FactoryModuleBuilder().build(TagsCollectorRunnerFactory.class)); } }