package com.faforever.client.config; import com.faforever.client.achievements.AchievementService; import com.faforever.client.achievements.AchievementServiceImpl; import com.faforever.client.api.FafApiAccessor; import com.faforever.client.api.FafApiAccessorImpl; import com.faforever.client.api.MockFafApiAccessor; import com.faforever.client.chat.ChatService; import com.faforever.client.chat.MockChatService; import com.faforever.client.chat.PircBotXChatService; import com.faforever.client.chat.PircBotXFactory; import com.faforever.client.chat.PircBotXFactoryImpl; import com.faforever.client.connectivity.ConnectivityService; import com.faforever.client.connectivity.ConnectivityServiceImpl; import com.faforever.client.connectivity.TurnServerAccessor; import com.faforever.client.connectivity.TurnServerAccessorImpl; import com.faforever.client.events.EventService; import com.faforever.client.events.EventServiceImpl; import com.faforever.client.fa.ForgedAllianceService; import com.faforever.client.fa.ForgedAllianceServiceImpl; import com.faforever.client.game.GameService; import com.faforever.client.game.GameServiceImpl; import com.faforever.client.leaderboard.LeaderboardService; import com.faforever.client.leaderboard.LeaderboardServiceImpl; import com.faforever.client.leaderboard.MockLeaderboardService; import com.faforever.client.legacy.UidService; import com.faforever.client.legacy.UnixUidService; import com.faforever.client.legacy.WindowsUidService; import com.faforever.client.map.MapService; import com.faforever.client.map.MapServiceImpl; import com.faforever.client.mod.ModService; import com.faforever.client.mod.ModServiceImpl; import com.faforever.client.news.LegacyNewsService; import com.faforever.client.news.NewsService; import com.faforever.client.notification.NotificationService; import com.faforever.client.notification.NotificationServiceImpl; import com.faforever.client.os.OperatingSystem; import com.faforever.client.patch.GameUpdateService; import com.faforever.client.patch.GameUpdateServiceImpl; import com.faforever.client.patch.GitWrapper; import com.faforever.client.patch.JGitWrapper; import com.faforever.client.patch.UpdateServerAccessor; import com.faforever.client.patch.UpdateServerAccessorImpl; import com.faforever.client.player.PlayerService; import com.faforever.client.player.PlayerServiceImpl; import com.faforever.client.preferences.PreferencesService; import com.faforever.client.relay.LocalRelayServer; import com.faforever.client.relay.LocalRelayServerImpl; import com.faforever.client.remote.FafServerAccessor; import com.faforever.client.remote.FafServerAccessorImpl; import com.faforever.client.remote.FafService; import com.faforever.client.remote.FafServiceImpl; import com.faforever.client.remote.MockFafServerAccessor; import com.faforever.client.replay.ReplayFileReader; import com.faforever.client.replay.ReplayFileReaderImpl; import com.faforever.client.replay.ReplayFileWriter; import com.faforever.client.replay.ReplayFileWriterImpl; import com.faforever.client.replay.ReplayServer; import com.faforever.client.replay.ReplayServerAccessor; import com.faforever.client.replay.ReplayServerAccessorImpl; import com.faforever.client.replay.ReplayServerImpl; import com.faforever.client.replay.ReplayService; import com.faforever.client.replay.ReplayServiceImpl; import com.faforever.client.reporting.ReportingService; import com.faforever.client.reporting.ReportingServiceImpl; import com.faforever.client.stats.StatisticsService; import com.faforever.client.stats.StatisticsServiceImpl; import com.faforever.client.task.TaskService; import com.faforever.client.task.TaskServiceImpl; import com.faforever.client.theme.ThemeService; import com.faforever.client.theme.ThemeServiceImpl; import com.faforever.client.update.ClientUpdateService; import com.faforever.client.update.ClientUpdateServiceImpl; import com.faforever.client.update.MockClientUpdateService; import com.faforever.client.update.MockGameUpdateService; import com.faforever.client.uploader.ImageUploadService; import com.faforever.client.uploader.imgur.ImgurImageUploadService; import com.faforever.client.upnp.UpnpService; import com.faforever.client.upnp.WeUpnpServiceImpl; import com.faforever.client.user.UserService; import com.faforever.client.user.UserServiceImpl; import com.faforever.client.util.TimeService; import com.faforever.client.util.TimeServiceImpl; import com.google.api.client.util.Beta; import org.apache.lucene.store.Directory; import org.apache.lucene.store.RAMDirectory; import org.ice4j.stack.StunStack; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler; import javax.annotation.Resource; @org.springframework.context.annotation.Configuration @Import(BaseConfig.class) public class ServiceConfig { @Resource Environment environment; @Bean UserService userService() { return new UserServiceImpl(); } @Bean FafServerAccessor fafServerAccessor() { if (environment.containsProperty("faf.testing")) { return new MockFafServerAccessor(); } return new FafServerAccessorImpl(); } @Bean FafApiAccessor fafApiAccessor() { if (environment.containsProperty("faf.testing")) { return new MockFafApiAccessor(); } return new FafApiAccessorImpl(); } @Bean ReplayServerAccessor replayServerAccessor() { return new ReplayServerAccessorImpl(); } @Bean UpdateServerAccessor updateServerAccessor() { return new UpdateServerAccessorImpl(); } @Bean ChatService chatService() { if (environment.containsProperty("faf.testing")) { return new MockChatService(); } return new PircBotXChatService(); } @Bean GameService gameService() { return new GameServiceImpl(); } @Bean PlayerService playerService() { return new PlayerServiceImpl(); } @Bean PreferencesService preferencesService() { return new PreferencesService(); } @Bean ForgedAllianceService processService() { return new ForgedAllianceServiceImpl(); } @Bean TaskScheduler taskScheduler() { return new ConcurrentTaskScheduler(); } @Bean LocalRelayServer relayServer() { return new LocalRelayServerImpl(); } @Bean ConnectivityService portCheckService() { return new ConnectivityServiceImpl(); } @Bean FafService lobbyService() { return new FafServiceImpl(); } @Bean ModService modService() { return new ModServiceImpl(); } @Bean ReplayServer replayServer() { return new ReplayServerImpl(); } @Bean ReplayFileWriter replayFileWriter() { return new ReplayFileWriterImpl(); } @Bean ReplayFileReader replayFileReader() { return new ReplayFileReaderImpl(); } @Bean UpnpService upnpService() { return new WeUpnpServiceImpl(); } @Bean LeaderboardService leaderboardService() { if (environment.containsProperty("faf.testing")) { return new MockLeaderboardService(); } return new LeaderboardServiceImpl(); } @Bean TurnServerAccessor turnServerAccessor() { return new TurnServerAccessorImpl(); } @Bean GameUpdateService patchService() { if (environment.containsProperty("disable.update")) { return new MockGameUpdateService(); } return new GameUpdateServiceImpl(); } @Bean TaskService taskQueueService() { return new TaskServiceImpl(); } @Bean NotificationService notificationService() { return new NotificationServiceImpl(); } @Bean StatisticsService statisticsService() { return new StatisticsServiceImpl(); } @Bean ReplayService replayService() { return new ReplayServiceImpl(); } @Bean MapService mapService() { return new MapServiceImpl(); } @Bean TimeService prettyTime() { return new TimeServiceImpl(); } @Bean ReportingService reportingService() { return new ReportingServiceImpl(); } @Bean ImageUploadService imageUploadService() { return new ImgurImageUploadService(); } @Bean GitWrapper gitWrapper() { return new JGitWrapper(); } @Bean PircBotXFactory pircBotXFactory() { return new PircBotXFactoryImpl(); } @Bean NewsService newsService() { return new LegacyNewsService(); } @Bean ClientUpdateService updateService() { if (environment.containsProperty("faf.testing")) { return new MockClientUpdateService(); } else { return new ClientUpdateServiceImpl(); } } @Bean UidService uidService() { switch (OperatingSystem.current()) { case WINDOWS: return new WindowsUidService(); default: return new UnixUidService(); } } @Bean AchievementService achievementService() { return new AchievementServiceImpl(); } @Bean EventService eventService() { return new EventServiceImpl(); } @Beta Directory directory() { return new RAMDirectory(); } @Bean ThemeService themeService() { return new ThemeServiceImpl(); } @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) StunStack stunStack() { return new StunStack(); } }