package org.limewire.core.impl; import java.lang.annotation.Annotation; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import org.limewire.core.api.Application; import org.limewire.core.api.callback.GuiCallbackService; import org.limewire.core.api.connection.FirewallStatusEvent; import org.limewire.core.api.connection.FirewallTransferStatusEvent; import org.limewire.core.api.lifecycle.MockLifeCycleModule; import org.limewire.core.api.magnet.MockMagnetModule; import org.limewire.core.impl.bittorrent.MockBittorrentModule; import org.limewire.core.impl.browse.MockBrowseModule; import org.limewire.core.impl.callback.MockGuiCallbackService; import org.limewire.core.impl.connection.MockConnectionModule; import org.limewire.core.impl.daap.MockDaapModule; import org.limewire.core.impl.download.MockDownloadModule; import org.limewire.core.impl.friend.MockFriendModule; import org.limewire.core.impl.library.MockLibraryModule; import org.limewire.core.impl.mojito.MockMojitoModule; import org.limewire.core.impl.monitor.MockMonitorModule; import org.limewire.core.impl.network.MockNetworkModule; import org.limewire.core.impl.player.MockPlayerModule; import org.limewire.core.impl.playlist.MockPlaylistModule; import org.limewire.core.impl.properties.MockPropertyModule; import org.limewire.core.impl.search.MockSearchModule; import org.limewire.core.impl.search.browse.MockBrowseSearchModule; import org.limewire.core.impl.spam.MockSpamModule; import org.limewire.core.impl.support.MockSupportModule; import org.limewire.core.impl.updates.MockUpdatesModule; import org.limewire.core.impl.upload.MockUploadModule; import org.limewire.core.impl.xmpp.MockXmppModule; import org.limewire.lifecycle.ServiceRegistry; import org.limewire.listener.BroadcastPolicy; import org.limewire.listener.CachingEventMulticasterImpl; import org.limewire.listener.EventBean; import org.limewire.listener.EventBroadcaster; import org.limewire.listener.EventMulticaster; import org.limewire.listener.EventMulticasterImpl; import org.limewire.listener.ListenerSupport; import org.limewire.net.MockNetModule; import org.limewire.xmpp.activity.XmppActivityEvent; import org.limewire.concurrent.ScheduledListeningExecutorService; import org.limewire.concurrent.AbstractLazySingletonProvider; import org.limewire.concurrent.SimpleTimer; import com.google.inject.AbstractModule; import com.google.inject.TypeLiteral; import com.google.inject.Key; import com.google.inject.Singleton; import com.google.inject.name.Names; public class MockModule extends AbstractModule { @Override protected void configure() { bind(Application.class).to(MockApplication.class); bind(GuiCallbackService.class).to(MockGuiCallbackService.class); bind(ServiceRegistry.class).to(MockServiceRegistry.class); install(new MockLifeCycleModule()); install(new MockConnectionModule()); install(new MockDaapModule()); install(new MockSpamModule()); install(new MockSearchModule()); install(new MockBrowseSearchModule()); install(new MockNetworkModule()); install(new MockDownloadModule()); install(new MockFriendModule()); install(new MockLibraryModule()); install(new MockMojitoModule()); install(new MockMonitorModule()); install(new MockBrowseModule()); install(new MockPlayerModule()); install(new MockPlaylistModule()); install(new MockPropertyModule()); install(new MockXmppModule()); install(new MockSupportModule()); install(new MockMagnetModule()); install(new MockNetModule()); install(new MockUploadModule()); install(new MockUpdatesModule()); install(new MockBittorrentModule()); EventMulticaster<XmppActivityEvent> activityMulticaster = new EventMulticasterImpl<XmppActivityEvent>(); bind(new TypeLiteral<EventBroadcaster<XmppActivityEvent>>(){}).toInstance(activityMulticaster); bind(new TypeLiteral<ListenerSupport<XmppActivityEvent>>(){}).toInstance(activityMulticaster); CachingEventMulticasterImpl<FirewallTransferStatusEvent> fwtStatusMulticaster = new CachingEventMulticasterImpl<FirewallTransferStatusEvent>(BroadcastPolicy.IF_NOT_EQUALS); bind(new TypeLiteral<EventBean<FirewallTransferStatusEvent>>(){}).toInstance(fwtStatusMulticaster); bind(new TypeLiteral<EventBroadcaster<FirewallTransferStatusEvent>>(){}).toInstance(fwtStatusMulticaster); bind(new TypeLiteral<ListenerSupport<FirewallTransferStatusEvent>>(){}).toInstance(fwtStatusMulticaster); CachingEventMulticasterImpl<FirewallStatusEvent> firewalledStatusMulticaster = new CachingEventMulticasterImpl<FirewallStatusEvent>(BroadcastPolicy.IF_NOT_EQUALS); bind(new TypeLiteral<EventBean<FirewallStatusEvent>>(){}).toInstance(firewalledStatusMulticaster); bind(new TypeLiteral<EventBroadcaster<FirewallStatusEvent>>(){}).toInstance(firewalledStatusMulticaster); bind(new TypeLiteral<ListenerSupport<FirewallStatusEvent>>(){}).toInstance(firewalledStatusMulticaster); Annotation execAnn = Names.named("backgroundExecutor"); Key<ScheduledListeningExecutorService> mainKey = Key.get(ScheduledListeningExecutorService.class, execAnn); bind(mainKey).toProvider(BackgroundTimerProvider.class); bind(ScheduledExecutorService.class).annotatedWith(execAnn).to(mainKey); bind(Executor.class).annotatedWith(execAnn).to(mainKey); bind(ExecutorService.class).annotatedWith(execAnn).to(mainKey); } @Singleton private static class BackgroundTimerProvider extends AbstractLazySingletonProvider<ScheduledListeningExecutorService> { @Override protected ScheduledListeningExecutorService createObject() { return new SimpleTimer(true); } } }