Changes to logging and NPE checks.

This commit is contained in:
LevelX2 2014-08-10 10:56:35 +02:00
parent babbd9ff19
commit 80346d44da
3 changed files with 61 additions and 27 deletions

View file

@ -636,8 +636,13 @@ public class MageServerImpl implements MageServer {
return executeWithResult("sendCardPick", sessionId, new ActionWithNullNegativeResult<DraftPickView>() {
@Override
public DraftPickView execute() {
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
return DraftManager.getInstance().sendCardPick(draftId, userId, cardPick);
Session session = SessionManager.getInstance().getSession(sessionId);
if (session != null) {
return DraftManager.getInstance().sendCardPick(draftId, session.getUserId(), cardPick);
} else{
logger.error("Session not found sessionId: "+ sessionId + " draftId:" + draftId);
}
return null;
}
});
}
@ -658,8 +663,12 @@ public class MageServerImpl implements MageServer {
execute("concedeGame", sessionId, new Action() {
@Override
public void execute() {
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
GameManager.getInstance().concedeGame(gameId, userId);
Session session = SessionManager.getInstance().getSession(sessionId);
if (session != null) {
GameManager.getInstance().concedeGame(gameId, session.getUserId());
} else{
logger.error("Session not found sessionId: "+ sessionId + " gameId:" +gameId);
}
}
});
}
@ -669,8 +678,12 @@ public class MageServerImpl implements MageServer {
execute("quitMatch", sessionId, new Action() {
@Override
public void execute() {
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
GameManager.getInstance().quitMatch(gameId, userId);
Session session = SessionManager.getInstance().getSession(sessionId);
if (session != null) {
GameManager.getInstance().quitMatch(gameId, session.getUserId());
} else{
logger.error("Session not found sessionId: "+ sessionId + " gameId:" +gameId);
}
}
});
}
@ -680,8 +693,12 @@ public class MageServerImpl implements MageServer {
execute("quitTournament", sessionId, new Action() {
@Override
public void execute() {
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
TournamentManager.getInstance().quit(tournamentId, userId);
Session session = SessionManager.getInstance().getSession(sessionId);
if (session != null) {
TournamentManager.getInstance().quit(tournamentId, session.getUserId());
}else{
logger.error("Session not found sessionId: "+ sessionId + " tournamentId:" + tournamentId);
}
}
});
}
@ -691,12 +708,16 @@ public class MageServerImpl implements MageServer {
execute("quitDraft", sessionId, new Action() {
@Override
public void execute() {
Session session = SessionManager.getInstance().getSession(sessionId);
if (session == null) {
logger.error("Session not found sessionId: "+ sessionId + " draftId:" + draftId);
return;
}
UUID tableId = DraftManager.getInstance().getControllerByDraftId(draftId).getTableId();
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
Table table = TableManager.getInstance().getTable(tableId);
if (table.isTournament()) {
UUID tournamentId = table.getTournament().getId();
TournamentManager.getInstance().quit(tournamentId, userId);
TournamentManager.getInstance().quit(tournamentId, session.getUserId());
}
}
});
@ -707,8 +728,12 @@ public class MageServerImpl implements MageServer {
execute("undo", sessionId, new Action() {
@Override
public void execute() {
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
GameManager.getInstance().undo(gameId, userId);
Session session = SessionManager.getInstance().getSession(sessionId);
if (session == null) {
logger.error("Session not found sessionId: "+ sessionId + " gameId:" + gameId);
return;
}
GameManager.getInstance().undo(gameId, session.getUserId());
}
});
}
@ -718,8 +743,12 @@ public class MageServerImpl implements MageServer {
execute("passPriorityUntilNextYourTurn", sessionId, new Action() {
@Override
public void execute() {
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
GameManager.getInstance().passPriorityUntilNextYourTurn(gameId, userId);
Session session = SessionManager.getInstance().getSession(sessionId);
if (session == null) {
logger.error("Session not found sessionId: "+ sessionId + " gameId:" + gameId);
return;
}
GameManager.getInstance().passPriorityUntilNextYourTurn(gameId, session.getUserId());
}
});
}
@ -729,8 +758,12 @@ public class MageServerImpl implements MageServer {
execute("passTurnPriority", sessionId, new Action() {
@Override
public void execute() {
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
GameManager.getInstance().passTurnPriority(gameId, userId);
Session session = SessionManager.getInstance().getSession(sessionId);
if (session == null) {
logger.error("Session not found sessionId: "+ sessionId + " gameId:" + gameId);
return;
}
GameManager.getInstance().passTurnPriority(gameId, session.getUserId());
}
});
}
@ -740,8 +773,12 @@ public class MageServerImpl implements MageServer {
execute("restorePriority", sessionId, new Action() {
@Override
public void execute() {
UUID userId = SessionManager.getInstance().getSession(sessionId).getUserId();
GameManager.getInstance().restorePriority(gameId, userId);
Session session = SessionManager.getInstance().getSession(sessionId);
if (session == null) {
logger.error("Session not found sessionId: "+ sessionId + " gameId:" + gameId);
return;
}
GameManager.getInstance().restorePriority(gameId, session.getUserId());
}
});
}

View file

@ -195,20 +195,16 @@ public class Session {
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);
logger.error("User for session not found sessionId: " + sessionId + " userId: " +userId);
// can happen if user from same host sign in multiple time with multiple clients, after he disconnects with one client
return;
}
if (user.getSessionId().isEmpty()) {
logger.debug("Session.userLostConnection user was already disconnected sessionId: " + sessionId + " userId: " +userId);
logger.debug("User was already disconnected sessionId: " + sessionId + " userId: " +userId);
return;
}
if (logger.isInfoEnabled()) {
StringBuilder sb = new StringBuilder("user ");
if (user == null) {
sb.append("[user not found]");
} else {
sb.append(user.getName());
}
StringBuilder sb = new StringBuilder(user.getName());
sb.append(" lost connection - userId: ").append(userId);
sb.append(" sessionId: ").append(sessionId);
logger.info(sb);

View file

@ -57,7 +57,8 @@ public class SessionManager {
}
Session session = sessions.get(sessionId);
if (session != null && session.getUserId() != null && UserManager.getInstance().getUser(session.getUserId()) == null) {
logger.error("User for session " + sessionId + " with userId " + session.getUserId() + " is missing. Session removed. Cause for this still unclear.");
logger.error("User for session " + sessionId + " with userId " + session.getUserId() + " is missing. Session removed.");
// can happen if user from same host signs in multiple time with multiple clients, after he disconnects with one client
disconnect(sessionId, DisconnectReason.LostConnection);
return null;
}