mirror of
https://github.com/correl/mage.git
synced 2024-11-25 03:00:11 +00:00
Some changes to logged data and a NPE prevention.
This commit is contained in:
parent
3e4c9dc645
commit
41ba4c9540
3 changed files with 19 additions and 14 deletions
|
@ -24,8 +24,7 @@
|
||||||
* The views and conclusions contained in the software and documentation are those of the
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
* authors and should not be interpreted as representing official policies, either expressed
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
* or implied, of BetaSteward_at_googlemail.com.
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package mage.server;
|
package mage.server;
|
||||||
|
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
|
@ -73,16 +72,16 @@ public class ChatSession {
|
||||||
|
|
||||||
public void kill(UUID userId, DisconnectReason reason) {
|
public void kill(UUID userId, DisconnectReason reason) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (reason == null) {
|
if (reason == null) {
|
||||||
logger.fatal("User kill without disconnect reason userId: " + userId);
|
logger.fatal("User kill without disconnect reason userId: " + userId);
|
||||||
reason = DisconnectReason.Undefined;
|
reason = DisconnectReason.Undefined;
|
||||||
}
|
}
|
||||||
if (reason != null && userId != null && clients.containsKey(userId)) {
|
if (reason != null && userId != null && clients.containsKey(userId)) {
|
||||||
String userName = clients.get(userId);
|
String userName = clients.get(userId);
|
||||||
if (!reason.equals(DisconnectReason.LostConnection)) { // for lost connection the user will be reconnected or session expire so no remove of chat yet
|
if (!reason.equals(DisconnectReason.LostConnection)) { // for lost connection the user will be reconnected or session expire so no remove of chat yet
|
||||||
clients.remove(userId);
|
clients.remove(userId);
|
||||||
logger.debug(userName + "(" + reason.toString() + ")" + " removed from chatId " + chatId);
|
logger.debug(userName + "(" + reason.toString() + ")" + " removed from chatId " + chatId);
|
||||||
}
|
}
|
||||||
String message;
|
String message;
|
||||||
switch (reason) {
|
switch (reason) {
|
||||||
|
@ -126,7 +125,7 @@ public class ChatSession {
|
||||||
|
|
||||||
public boolean broadcastWhisperToUser(User fromUser, User toUser, String message) {
|
public boolean broadcastWhisperToUser(User fromUser, User toUser, String message) {
|
||||||
if (clients.containsKey(toUser.getId())) {
|
if (clients.containsKey(toUser.getId())) {
|
||||||
toUser.fireCallback(new ClientCallback("chatMessage", chatId,
|
toUser.fireCallback(new ClientCallback("chatMessage", chatId,
|
||||||
new ChatMessage(new StringBuilder("Whisper from ").append(fromUser.getName()).toString(), message, timeFormatter.format(new Date()), MessageColor.YELLOW, MessageType.WHISPER, SoundToPlay.PlayerWhispered)));
|
new ChatMessage(new StringBuilder("Whisper from ").append(fromUser.getName()).toString(), message, timeFormatter.format(new Date()), MessageColor.YELLOW, MessageType.WHISPER, SoundToPlay.PlayerWhispered)));
|
||||||
if (clients.containsKey(fromUser.getId())) {
|
if (clients.containsKey(fromUser.getId())) {
|
||||||
fromUser.fireCallback(new ClientCallback("chatMessage", chatId,
|
fromUser.fireCallback(new ClientCallback("chatMessage", chatId,
|
||||||
|
@ -153,22 +152,22 @@ public class ChatSession {
|
||||||
if (!message.isEmpty()) {
|
if (!message.isEmpty()) {
|
||||||
boolean remove = false;
|
boolean remove = false;
|
||||||
final String msg = message;
|
final String msg = message;
|
||||||
final String time = (withTime ? timeFormatter.format(new Date()):"");
|
final String time = (withTime ? timeFormatter.format(new Date()) : "");
|
||||||
final String username = userName;
|
final String username = userName;
|
||||||
logger.trace("Broadcasting '" + msg + "' for " + chatId);
|
logger.trace("Broadcasting '" + msg + "' for " + chatId);
|
||||||
for (UUID userId: clients.keySet()) {
|
for (UUID userId : clients.keySet()) {
|
||||||
User user = UserManager.getInstance().getUser(userId);
|
User user = UserManager.getInstance().getUser(userId);
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
user.fireCallback(new ClientCallback("chatMessage", chatId, new ChatMessage(username, msg, time, color, messageType, soundToPlay)));
|
user.fireCallback(new ClientCallback("chatMessage", chatId, new ChatMessage(username, msg, time, color, messageType, soundToPlay)));
|
||||||
}
|
} else {
|
||||||
else {
|
// Happens when a user post to a chat while other users left chat at nearly the same time
|
||||||
logger.error("User not found but connected to chat - userId: " + userId + " chatId: " + chatId);
|
logger.trace("User not found but connected to chat - userId: " + userId + " chatId: " + chatId);
|
||||||
clientsToRemove.add(userId);
|
clientsToRemove.add(userId);
|
||||||
remove = true;
|
remove = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (remove) {
|
if (remove) {
|
||||||
for (UUID userIdToRemove: clientsToRemove) {
|
for (UUID userIdToRemove : clientsToRemove) {
|
||||||
clients.remove(userIdToRemove);
|
clients.remove(userIdToRemove);
|
||||||
}
|
}
|
||||||
clientsToRemove.clear();
|
clientsToRemove.clear();
|
||||||
|
@ -198,5 +197,5 @@ public class ChatSession {
|
||||||
public String getInfo() {
|
public String getInfo() {
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1159,6 +1159,9 @@ public abstract class AbilityImpl implements Ability {
|
||||||
public MageObject getSourceObject(Game game) {
|
public MageObject getSourceObject(Game game) {
|
||||||
if (sourceObject == null) {
|
if (sourceObject == null) {
|
||||||
setSourceObject(null, game);
|
setSourceObject(null, game);
|
||||||
|
if (sourceObject == null) {
|
||||||
|
logger.warn("Source object could not be retrieved: " + this.getRule());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return sourceObject;
|
return sourceObject;
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,7 +106,10 @@ public class ManaPoolItem implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getSourceId() {
|
public UUID getSourceId() {
|
||||||
return sourceObject.getId();
|
if (sourceObject != null) {
|
||||||
|
return sourceObject.getId();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getOriginalId() {
|
public UUID getOriginalId() {
|
||||||
|
|
Loading…
Reference in a new issue