From 236ebe2a12eddc8bf4b5ddb4e3e34813cb4e9a2c Mon Sep 17 00:00:00 2001
From: LevelX2 <ludwig.hirth@online.de>
Date: Wed, 23 Apr 2014 08:12:40 +0200
Subject: [PATCH] Some changes to debug logging messages.

---
 .../mage/client/dialog/TableWaitingDialog.java     |  2 +-
 .../src/main/java/mage/server/ChatManager.java     |  3 +++
 .../src/main/java/mage/server/ChatSession.java     | 14 ++++++++------
 Mage.Server/src/main/java/mage/server/User.java    | 13 +++++++------
 .../src/main/java/mage/server/UserManager.java     |  2 ++
 5 files changed, 21 insertions(+), 13 deletions(-)

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 c57d4fc623..0a7989ba0f 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java
@@ -62,7 +62,7 @@ public class TableWaitingDialog extends MageDialog {
     private UUID roomId;
     private boolean isTournament;
     private Session session;
-    private TableWaitModel tableWaitModel;
+    private final TableWaitModel tableWaitModel;
     private UpdateSeatsTask updateTask;
 
     /** Creates new form TableWaitingDialog */
diff --git a/Mage.Server/src/main/java/mage/server/ChatManager.java b/Mage.Server/src/main/java/mage/server/ChatManager.java
index 19a3225880..04743136f1 100644
--- a/Mage.Server/src/main/java/mage/server/ChatManager.java
+++ b/Mage.Server/src/main/java/mage/server/ChatManager.java
@@ -34,6 +34,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import mage.view.ChatMessage.MessageColor;
 import mage.view.ChatMessage.MessageType;
 import mage.view.ChatMessage.SoundToPlay;
+import org.apache.log4j.Logger;
 
 /**
  *
@@ -158,8 +159,10 @@ public class ChatManager {
     }
 
     public void removeUser(UUID userId, User.DisconnectReason reason) {
+        Logger.getLogger(ChatManager.class).debug("Remove user start");
         for (ChatSession chat: chatSessions.values()) {
             chat.kill(userId, reason);
         }
+        Logger.getLogger(ChatManager.class).debug("Remove user end");
     }
 }
diff --git a/Mage.Server/src/main/java/mage/server/ChatSession.java b/Mage.Server/src/main/java/mage/server/ChatSession.java
index c6790332bf..de6aac5ef0 100644
--- a/Mage.Server/src/main/java/mage/server/ChatSession.java
+++ b/Mage.Server/src/main/java/mage/server/ChatSession.java
@@ -47,9 +47,9 @@ import org.apache.log4j.Logger;
 public class ChatSession {
 
     private static final Logger logger = Logger.getLogger(ChatSession.class);
-    private ConcurrentHashMap<UUID, String> clients = new ConcurrentHashMap<UUID, String>();
-    private UUID chatId;
-    private DateFormat timeFormatter = SimpleDateFormat.getTimeInstance(SimpleDateFormat.SHORT);
+    private final ConcurrentHashMap<UUID, String> clients = new ConcurrentHashMap<>();
+    private final UUID chatId;
+    private final DateFormat timeFormatter = SimpleDateFormat.getTimeInstance(SimpleDateFormat.SHORT);
 
     public ChatSession() {
         chatId = UUID.randomUUID();
@@ -65,11 +65,13 @@ public class ChatSession {
         }
     }
 
-    public void kill(UUID userId, User.DisconnectReason reason) {
+    synchronized public void  kill(UUID userId, User.DisconnectReason reason) {
         if (userId != null && clients.containsKey(userId)) {
+            logger.debug("kill user: Start kill userId " + userId);
             String userName = clients.get(userId);
             String message;
             clients.remove(userId);
+            logger.debug("kill user: After remove " + userId);
             switch (reason) {
                 case Disconnected:
                     message = " has left MAGE";
@@ -81,7 +83,7 @@ public class ChatSession {
                      message = " has left chat";
             }
             broadcast(null, new StringBuilder(userName).append(message).toString(), MessageColor.BLUE, true, MessageType.STATUS);
-            logger.debug(userName + message + " " + chatId);
+            logger.debug("kill user: " + userName + message + " " + chatId);
         }
     }
 
@@ -123,7 +125,7 @@ public class ChatSession {
             final String msg = message;
             final String time = (withTime ? timeFormatter.format(new Date()):"");
             final String username = userName;
-            logger.debug("Broadcasting '" + msg + "' for " + chatId);
+            logger.trace("Broadcasting '" + msg + "' for " + chatId);
             for (UUID userId: clients.keySet()) {
                 User user = UserManager.getInstance().getUser(userId);
                 if (user != null) {
diff --git a/Mage.Server/src/main/java/mage/server/User.java b/Mage.Server/src/main/java/mage/server/User.java
index 397604ceb4..0d92ae3012 100644
--- a/Mage.Server/src/main/java/mage/server/User.java
+++ b/Mage.Server/src/main/java/mage/server/User.java
@@ -237,8 +237,12 @@ public class User {
     }
 
     public boolean isExpired(Date expired) {
+        if (lastActivity.before(expired)) {
+            logger.debug(new StringBuilder(userName).append(" is expired!"));
+            return true;
+        }
         logger.trace(new StringBuilder("isExpired: User ").append(userName).append(" lastActivity: ").append(lastActivity).append(" expired: ").append(expired).toString());
-        return /*userState == UserState.Disconnected && */ lastActivity.before(expired);
+        return false; /*userState == UserState.Disconnected && */ 
     }
 
     private void reconnect() {
@@ -317,24 +321,21 @@ public class User {
     }
 
     public void kill(DisconnectReason reason) {
-        logger.debug("kill: kill game sessions");
         for (GameSession gameSession: gameSessions.values()) {
             gameSession.kill();
         }
-        logger.debug("kill: kill draft sessions");
         for (DraftSession draftSession: draftSessions.values()) {
             draftSession.setKilled();
         }
-        logger.debug("kill: kill tournament sessions");
         for (TournamentSession tournamentSession: tournamentSessions.values()) {
             tournamentSession.setKilled();
         }
-        logger.debug("kill: leave tables");
         for (Entry<UUID, Table> entry: tables.entrySet()) {
             TableManager.getInstance().leaveTable(userId, entry.getValue().getId());
         }
-        logger.debug("kill: remove user from chat");
+        logger.debug("kill: remove user from chat before");
         ChatManager.getInstance().removeUser(userId, reason);
+        logger.debug("kill: remove user from chat after");
     }
 
     public void setUserData(UserData userData) {
diff --git a/Mage.Server/src/main/java/mage/server/UserManager.java b/Mage.Server/src/main/java/mage/server/UserManager.java
index 505609e125..e9f37c7f1a 100644
--- a/Mage.Server/src/main/java/mage/server/UserManager.java
+++ b/Mage.Server/src/main/java/mage/server/UserManager.java
@@ -160,7 +160,9 @@ public class UserManager {
                 logger.info(new StringBuilder(user.getName()).append(" session expired userId: ").append(user.getId())
                         .append(" sessionId: ").append(user.getSessionId()));
                 user.kill(User.DisconnectReason.LostConnection);
+                logger.debug("check Expired: Removing user");
                 users.remove(user.getId());
+                logger.debug("check Expired: user removed");
             }
         }
     }