diff --git a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java index 0a7989ba0f2..3759569a6d3 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java @@ -299,7 +299,7 @@ public class TableWaitingDialog extends MageDialog { } class TableWaitModel extends AbstractTableModel { - private String[] columnNames = new String[]{"Seat Num", "Player Name", "Player Type"}; + private final String[] columnNames = new String[]{"Seat Num", "Player Name", "Player Type"}; private SeatView[] seats = new SeatView[0]; public void loadData(TableView table) { @@ -362,10 +362,10 @@ class TableWaitModel extends AbstractTableModel { class UpdateSeatsTask extends SwingWorker { - private Session session; - private UUID roomId; - private UUID tableId; - private TableWaitingDialog dialog; + private final Session session; + private final UUID roomId; + private final UUID tableId; + private final TableWaitingDialog dialog; private int count = 0; private static final Logger logger = Logger.getLogger(TableWaitingDialog.class); diff --git a/Mage.Server/src/main/java/mage/server/ChatManager.java b/Mage.Server/src/main/java/mage/server/ChatManager.java index c3707941a79..2c3cb7c3c3a 100644 --- a/Mage.Server/src/main/java/mage/server/ChatManager.java +++ b/Mage.Server/src/main/java/mage/server/ChatManager.java @@ -69,7 +69,9 @@ public class ChatManager { } public void destroyChatSession(UUID chatId) { - chatSessions.remove(chatId); + if (chatId != null) { + chatSessions.remove(chatId); + } } public void broadcast(UUID chatId, String userName, String message, MessageColor color) { diff --git a/Mage.Server/src/main/java/mage/server/TableManager.java b/Mage.Server/src/main/java/mage/server/TableManager.java index 0a0c3ad755c..0f8e8c8256b 100644 --- a/Mage.Server/src/main/java/mage/server/TableManager.java +++ b/Mage.Server/src/main/java/mage/server/TableManager.java @@ -204,7 +204,8 @@ public class TableManager { public boolean removeTable(UUID userId, UUID tableId) { if (isTableOwner(tableId, userId) || UserManager.getInstance().isAdmin(userId)) { - leaveTable(userId, tableId); + leaveTable(userId, tableId); + ChatManager.getInstance().destroyChatSession(controllers.get(tableId).getChatId()); removeTable(tableId); return true; } @@ -246,6 +247,8 @@ public class TableManager { public void startMatch(UUID userId, UUID roomId, UUID tableId) { if (controllers.containsKey(tableId)) { controllers.get(tableId).startMatch(userId); + // chat of start dialog can be killed + ChatManager.getInstance().destroyChatSession(controllers.get(tableId).getChatId()); } } @@ -264,6 +267,7 @@ public class TableManager { public void startTournament(UUID userId, UUID roomId, UUID tableId) { if (controllers.containsKey(tableId)) { controllers.get(tableId).startTournament(userId); + ChatManager.getInstance().destroyChatSession(controllers.get(tableId).getChatId()); } } @@ -334,9 +338,10 @@ public class TableManager { public void removeTable(UUID tableId) { if (tables.containsKey(tableId)) { Table table = tables.get(tableId); + ChatManager.getInstance().destroyChatSession(controllers.get(tableId).getChatId()); controllers.remove(tableId); tables.remove(tableId); - // If table is not finished, the table has to removed completly (if finished it will be removed in GamesRoomImpl.Update()) + // If table is not finished, the table has to be removed completly (if finished it will be removed in GamesRoomImpl.Update()) if (!table.getState().equals(TableState.FINISHED)) { GamesRoomManager.getInstance().removeTable(tableId); } diff --git a/Mage.Server/src/main/java/mage/server/game/GamesRoomManager.java b/Mage.Server/src/main/java/mage/server/game/GamesRoomManager.java index 6ca6fc5b345..a771eed2cff 100644 --- a/Mage.Server/src/main/java/mage/server/game/GamesRoomManager.java +++ b/Mage.Server/src/main/java/mage/server/game/GamesRoomManager.java @@ -40,8 +40,8 @@ public class GamesRoomManager { private static final GamesRoomManager INSTANCE = new GamesRoomManager(); // private static final Logger logger = Logger.getLogger(GamesRoomManager.class); - private ConcurrentHashMap rooms = new ConcurrentHashMap(); - private UUID mainRoomId; + private final ConcurrentHashMap rooms = new ConcurrentHashMap<>(); + private final UUID mainRoomId; public static GamesRoomManager getInstance() { return INSTANCE; diff --git a/Mage/src/mage/abilities/effects/ContinuousRuleModifiyingEffectImpl.java b/Mage/src/mage/abilities/effects/ContinuousRuleModifiyingEffectImpl.java index c0f5477b569..8606e2bcd10 100644 --- a/Mage/src/mage/abilities/effects/ContinuousRuleModifiyingEffectImpl.java +++ b/Mage/src/mage/abilities/effects/ContinuousRuleModifiyingEffectImpl.java @@ -70,7 +70,7 @@ public abstract class ContinuousRuleModifiyingEffectImpl extends ContinuousEffec @Override public String getInfoMessage(Ability source, Game game) { if (infoMessage == null) { - String message = null; + String message; MageObject object = game.getObject(source.getSourceId()); if (object != null) { message = source.getRule(object.getLogName());