[app-wiring-refactor]: Apply review comments:

- Add reference to original library in `FluentBuilder`.
- Change `I<Name>` notation to `<Name>Impl` notation.
- Move error config to test resources
- Add comment with config instruction
- Add config to the documentation
This commit is contained in:
Francesco Burato 2020-10-30 22:37:25 +00:00
parent e8bb8ae24b
commit 6e3750d50a
41 changed files with 171 additions and 146 deletions

View file

@ -1,118 +1,124 @@
package mage.server;
import mage.server.draft.DraftManager;
import mage.server.game.GameManager;
import mage.server.game.GamesRoomManager;
import mage.server.game.ReplayManager;
import mage.server.draft.DraftManagerImpl;
import mage.server.game.GameManagerImpl;
import mage.server.game.GamesRoomManagerImpl;
import mage.server.game.ReplayManagerImpl;
import mage.server.managers.*;
import mage.server.tournament.TournamentManager;
import mage.server.util.ThreadExecutor;
import mage.server.tournament.TournamentManagerImpl;
import mage.server.util.ThreadExecutorImpl;
public class MainManagerFactory implements ManagerFactory {
private final IConfigSettings configSettings;
private final IThreadExecutor threadExecutor;
private final IChatManager chatManager;
private final IDraftManager draftManager;
private final IGameManager gameManager;
private final IGamesRoomManager gamesRoomManager;
private final IMailClient mailClient;
private final IMailClient mailgunClient;
private final IReplayManager replayManager;
private final ISessionManager sessionManager;
private final ITableManager tableManager;
private final IUserManager userManager;
private final ITournamentManager tournamentManager;
private final ConfigSettings configSettings;
private final ThreadExecutor threadExecutor;
private final ChatManager chatManager;
private final DraftManager draftManager;
private final GameManager gameManager;
private final GamesRoomManager gamesRoomManager;
private final MailClient mailClient;
private final MailClient mailgunClient;
private final ReplayManager replayManager;
private final SessionManager sessionManager;
private final TableManager tableManager;
private final UserManager userManager;
private final TournamentManager tournamentManager;
public MainManagerFactory(IConfigSettings configSettings) {
public MainManagerFactory(ConfigSettings configSettings) {
this.configSettings = configSettings;
this.threadExecutor = new ThreadExecutor(configSettings);
this.mailClient = new MailClient(configSettings);
this.mailgunClient = new MailgunClient(configSettings);
this.chatManager = new ChatManager(this);
this.draftManager = new DraftManager(this);
this.gameManager = new GameManager(this);
this.replayManager = new ReplayManager(this);
this.sessionManager = new SessionManager(this);
this.tournamentManager = new TournamentManager(this);
final GamesRoomManager gamesRoomManager = new GamesRoomManager(this);
final TableManager tableManager = new TableManager(this);
final UserManager userManager = new UserManager(this);
// ThreadExecutorImpl, MailClientImpl and MailGunClient depend only on the config, so they are initialised first
this.threadExecutor = new ThreadExecutorImpl(configSettings);
this.mailClient = new MailClientImpl(configSettings);
this.mailgunClient = new MailgunClientImpl(configSettings);
// Chat, Draft, Game, Replay, Session and Tournament managers only require access to the ManagerFactory
// but do not use them in initialisation
this.chatManager = new ChatManagerImpl(this);
this.draftManager = new DraftManagerImpl(this);
this.gameManager = new GameManagerImpl(this);
this.replayManager = new ReplayManagerImpl(this);
this.sessionManager = new SessionManagerImpl(this);
this.tournamentManager = new TournamentManagerImpl(this);
// GamesRoom, Table, User managers depend on the ManagerFactory and have an initialisation block which is delayed
// to the end of the construction
final GamesRoomManagerImpl gamesRoomManager = new GamesRoomManagerImpl(this);
final TableManagerImpl tableManager = new TableManagerImpl(this);
final UserManagerImpl userManager = new UserManagerImpl(this);
this.gamesRoomManager = gamesRoomManager;
this.tableManager = tableManager;
this.userManager = userManager;
// execute the initialisation block of the relevant manager (they start the executor services)
startThreads(gamesRoomManager, tableManager, userManager);
}
private void startThreads(GamesRoomManager gamesRoomManager, TableManager tableManager, UserManager userManager) {
private void startThreads(GamesRoomManagerImpl gamesRoomManager, TableManagerImpl tableManager, UserManagerImpl userManager) {
userManager.init();
tableManager.init();
gamesRoomManager.init();
}
@Override
public IChatManager chatManager() {
public ChatManager chatManager() {
return chatManager;
}
@Override
public IDraftManager draftManager() {
public DraftManager draftManager() {
return draftManager;
}
@Override
public IGameManager gameManager() {
public GameManager gameManager() {
return gameManager;
}
@Override
public IGamesRoomManager gamesRoomManager() {
public GamesRoomManager gamesRoomManager() {
return gamesRoomManager;
}
@Override
public IMailClient mailClient() {
public MailClient mailClient() {
return mailClient;
}
@Override
public IMailClient mailgunClient() {
public MailClient mailgunClient() {
return mailgunClient;
}
@Override
public IReplayManager replayManager() {
public ReplayManager replayManager() {
return replayManager;
}
@Override
public ISessionManager sessionManager() {
public SessionManager sessionManager() {
return sessionManager;
}
@Override
public ITableManager tableManager() {
public TableManager tableManager() {
return tableManager;
}
@Override
public IUserManager userManager() {
public UserManager userManager() {
return userManager;
}
@Override
public IConfigSettings configSettings() {
public ConfigSettings configSettings() {
return configSettings;
}
@Override
public IThreadExecutor threadExecutor() {
public ThreadExecutor threadExecutor() {
return threadExecutor;
}
@Override
public ITournamentManager tournamentManager() {
public TournamentManager tournamentManager() {
return tournamentManager;
}
}