From 865665767baa13a39ba99cf4428bd592cc77e8e1 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 30 Jul 2014 17:30:02 +0200 Subject: [PATCH 1/2] * Client - After reconnect still active game or deck editor of build step gets topmost panel again (because tablesPanel is loaded automatically now after connect to server). --- Mage.Client/src/main/java/mage/client/MageFrame.java | 10 +++++++--- .../main/java/mage/client/dialog/ConnectDialog.java | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index e5de7065e70..8228e0d3746 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -712,7 +712,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { connection.setShowAbilityPickerForced(showAbilityPickerForced); logger.debug("connecting (auto): " + proxyType + " " + proxyServer + " " + proxyPort + " " + proxyUsername); if (MageFrame.connect(connection)) { - showGames(); + showGames(false); return true; } else { showMessage("Unable to connect to server"); @@ -888,7 +888,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { }//GEN-LAST:event_btnDeckEditorActionPerformed private void btnGamesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGamesActionPerformed - this.showGames(); + this.showGames(true); }//GEN-LAST:event_btnGamesActionPerformed private void btnExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExitActionPerformed @@ -970,10 +970,14 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { this.tablesPane.hideTables(); } - public void showGames() { + public void showGames(boolean setActive) { + MagePane topPane = getTopMost(tablesPane); this.tablesPane.setVisible(true); this.tablesPane.showTables(); setActive(tablesPane); + if (!setActive && topPane != null) { + setActive(topPane); + } } public void hideGames() { diff --git a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java index e4b6ffc84cb..0f054ccace7 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java @@ -337,7 +337,7 @@ public class ConnectDialog extends MageDialog { if (result) { lblStatus.setText(""); connected(); - MageFrame.getInstance().showGames(); + MageFrame.getInstance().showGames(false); } else { lblStatus.setText("Could not connect"); } From ccb554dd87f4317a631d895dbd486a8e8a1c123a Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 30 Jul 2014 17:30:21 +0200 Subject: [PATCH 2/2] Some more chages to logging. --- .../main/java/mage/server/ChatManager.java | 19 +++++++++++++++---- .../main/java/mage/server/MageServerImpl.java | 5 ++++- .../src/main/java/mage/server/Session.java | 14 +++++++++++--- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/Mage.Server/src/main/java/mage/server/ChatManager.java b/Mage.Server/src/main/java/mage/server/ChatManager.java index e89abe831c1..e9aefd07282 100644 --- a/Mage.Server/src/main/java/mage/server/ChatManager.java +++ b/Mage.Server/src/main/java/mage/server/ChatManager.java @@ -42,6 +42,8 @@ import org.apache.log4j.Logger; */ public class ChatManager { + private static final Logger logger = Logger.getLogger(ChatManager.class); + private static final ChatManager INSTANCE = new ChatManager(); public static ChatManager getInstance() { @@ -59,19 +61,28 @@ public class ChatManager { } public void joinChat(UUID chatId, UUID userId) { - chatSessions.get(chatId).join(userId); + if (chatSessions.containsKey(chatId)) { + chatSessions.get(chatId).join(userId); + } else { + logger.debug("ChatManager:joinChat - chatId does not exist - chatId: " + chatId +" userId: " + userId); + } + } public void leaveChat(UUID chatId, UUID userId) { if (chatSessions.containsKey(chatId)) { chatSessions.get(chatId).kill(userId, DisconnectReason.CleaningUp); - } + } else { + logger.debug("ChatManager:leaveChat - chatId does not exist - chatId: " + chatId +" userId: " + userId); + } } public void destroyChatSession(UUID chatId) { - if (chatId != null) { + if (chatId != null && chatSessions.containsKey(chatId)) { chatSessions.remove(chatId); - } + } else { + logger.debug("ChatManager:destroy chat - chatId does not exist - chatId: " + chatId); + } } public void broadcast(UUID chatId, String userName, String message, MessageColor color) { diff --git a/Mage.Server/src/main/java/mage/server/MageServerImpl.java b/Mage.Server/src/main/java/mage/server/MageServerImpl.java index 64beecf42a8..b5ae1fbe5c9 100644 --- a/Mage.Server/src/main/java/mage/server/MageServerImpl.java +++ b/Mage.Server/src/main/java/mage/server/MageServerImpl.java @@ -1004,6 +1004,9 @@ public class MageServerImpl implements MageServer { protected void execute(final String actionName, final String sessionId, final Action action) throws MageException { if (SessionManager.getInstance().isValidSession(sessionId)) { try { + if (actionName.equals("joinChat")) { + logger.debug("MageServerImpl.execute sessionId: " + sessionId + " action: " + actionName); + } callExecutor.execute( new Runnable() { @Override @@ -1021,7 +1024,7 @@ public class MageServerImpl implements MageServer { } ); } - catch (Exception ex) { + catch (Exception ex) { handleException(ex); } } else { diff --git a/Mage.Server/src/main/java/mage/server/Session.java b/Mage.Server/src/main/java/mage/server/Session.java index 067c71eddb3..ef5206a002b 100644 --- a/Mage.Server/src/main/java/mage/server/Session.java +++ b/Mage.Server/src/main/java/mage/server/Session.java @@ -28,7 +28,6 @@ package mage.server; -import java.util.ArrayList; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -192,8 +191,17 @@ public class Session { return sessionId; } - public void userLostConnection() { + //synchronized public void userLostConnection() { + public void userLostConnection() { User user = UserManager.getInstance().getUser(userId); + if (user == null) { + logger.error("Session.userLostConnection user for session not found sessionId: " + sessionId + " userId: " +userId); + return; + } + if (user.getSessionId().isEmpty()) { + logger.debug("Session.userLostConnection user was already disconnected sessionId: " + sessionId + " userId: " +userId); + return; + } if (logger.isInfoEnabled()) { StringBuilder sb = new StringBuilder("user "); if (user == null) { @@ -218,7 +226,7 @@ public class Session { call.setMessageId(messageId++); callbackHandler.handleCallbackOneway(new Callback(call)); } catch (HandleCallbackException ex) { - logger.fatal(new StringBuilder("Session of userId ").append(userId).append(" fireCallback error: ").append(ex.getMessage()).toString(), ex); + logger.info(new StringBuilder("Session of userId ").append(userId).append(" callback exception: ").append(ex.getMessage()).toString()); userLostConnection(); } }