package org.limewire.core.impl.search; import org.limewire.core.api.search.SearchEvent; import org.limewire.core.api.search.SearchFactory; import org.limewire.core.api.search.SearchManager; import org.limewire.core.impl.search.torrentweb.TorrentRobotsTxt; import org.limewire.core.impl.search.torrentweb.TorrentRobotsTxtImpl; import org.limewire.core.impl.search.torrentweb.TorrentRobotsTxtStore; import org.limewire.core.impl.search.torrentweb.TorrentUriDatabaseStore; import org.limewire.core.impl.search.torrentweb.TorrentUriPrioritizerFactory; import org.limewire.core.impl.search.torrentweb.TorrentUriPrioritizerImpl; import org.limewire.core.impl.search.torrentweb.TorrentUriStore; import org.limewire.core.impl.search.torrentweb.TorrentWebSearch; import org.limewire.core.impl.search.torrentweb.TorrentWebSearchFactory; import org.limewire.listener.EventBroadcaster; import org.limewire.listener.EventMulticaster; import org.limewire.listener.EventMulticasterImpl; import org.limewire.listener.ListenerSupport; import com.google.inject.AbstractModule; import com.google.inject.TypeLiteral; import com.google.inject.assistedinject.FactoryProvider; public class CoreGlueSearchModule extends AbstractModule { @Override protected void configure() { bind(SearchManager.class).to(CoreSearchManager.class); bind(SearchFactory.class).toProvider(FactoryProvider.newFactory(SearchFactory.class, CoreSearch.class)); EventMulticaster<SearchEvent> searchMulticaster = new EventMulticasterImpl<SearchEvent>(); bind(new TypeLiteral<EventBroadcaster<SearchEvent>>(){}).toInstance(searchMulticaster); bind(new TypeLiteral<ListenerSupport<SearchEvent>>(){}).toInstance(searchMulticaster); bind(RemoteFileDescAdapter.Factory.class).toProvider(FactoryProvider.newFactory(RemoteFileDescAdapter.Factory.class, RemoteFileDescAdapter.class)); bind(TorrentWebSearchFactory.class).toProvider(FactoryProvider.newFactory(TorrentWebSearchFactory.class, TorrentWebSearch.class)); bind(TorrentUriPrioritizerFactory.class).toProvider(FactoryProvider.newFactory(TorrentUriPrioritizerFactory.class, TorrentUriPrioritizerImpl.class)); bind(TorrentUriStore.class).to(TorrentUriDatabaseStore.class); bind(TorrentRobotsTxtStore.class).to(TorrentUriDatabaseStore.class); bind(TorrentRobotsTxt.class).to(TorrentRobotsTxtImpl.class); } }