forked from External/mage
add stack trace to error dialog
This commit is contained in:
parent
d387d5afa2
commit
f67aaf80cf
7 changed files with 38 additions and 12 deletions
|
|
@ -190,6 +190,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
|
||||||
connectDialog = new ConnectDialog();
|
connectDialog = new ConnectDialog();
|
||||||
desktopPane.add(connectDialog, JLayeredPane.POPUP_LAYER);
|
desktopPane.add(connectDialog, JLayeredPane.POPUP_LAYER);
|
||||||
errorDialog = new ErrorDialog();
|
errorDialog = new ErrorDialog();
|
||||||
|
errorDialog.setLocation(100, 100);
|
||||||
desktopPane.add(errorDialog, JLayeredPane.POPUP_LAYER);
|
desktopPane.add(errorDialog, JLayeredPane.POPUP_LAYER);
|
||||||
ui.addComponent(MageComponents.DESKTOP_PANE, desktopPane);
|
ui.addComponent(MageComponents.DESKTOP_PANE, desktopPane);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ public class ErrorDialog extends MageDialog {
|
||||||
public void showDialog(String title, String message) {
|
public void showDialog(String title, String message) {
|
||||||
this.setTitle(title);
|
this.setTitle(title);
|
||||||
this.lblMessage.setText(message);
|
this.lblMessage.setText(message);
|
||||||
|
this.lblMessage.setCaretPosition(0);
|
||||||
this.pack();
|
this.pack();
|
||||||
this.revalidate();
|
this.revalidate();
|
||||||
this.repaint();
|
this.repaint();
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,7 @@ public class GameController implements GameCallback {
|
||||||
revealCards(event.getMessage(), event.getCards());
|
revealCards(event.getMessage(), event.getCards());
|
||||||
break;
|
break;
|
||||||
case ERROR:
|
case ERROR:
|
||||||
error(event.getMessage());
|
error(event.getMessage(), event.getException());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} catch (MageException ex) {
|
} catch (MageException ex) {
|
||||||
|
|
@ -505,10 +505,16 @@ public class GameController implements GameCallback {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void error(String message) {
|
private void error(String message, Exception ex) {
|
||||||
String msg = message + "\nServer version: " + Main.getVersion().toString();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append(message).append(ex.toString());
|
||||||
|
sb.append("\nServer version: ").append(Main.getVersion().toString());
|
||||||
|
sb.append("\n");
|
||||||
|
for (StackTraceElement e: ex.getStackTrace()) {
|
||||||
|
sb.append(e.toString()).append("\n");
|
||||||
|
}
|
||||||
for (final Entry<UUID, GameSession> entry: gameSessions.entrySet()) {
|
for (final Entry<UUID, GameSession> entry: gameSessions.entrySet()) {
|
||||||
entry.getValue().gameError(msg);
|
entry.getValue().gameError(sb.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,7 @@ public interface Game extends MageItem, Serializable {
|
||||||
public void fireInformEvent(String message);
|
public void fireInformEvent(String message);
|
||||||
public void fireUpdatePlayersEvent();
|
public void fireUpdatePlayersEvent();
|
||||||
public void informPlayers(String message);
|
public void informPlayers(String message);
|
||||||
public void fireErrorEvent(String message);
|
public void fireErrorEvent(String message, Exception ex);
|
||||||
|
|
||||||
//game event methods
|
//game event methods
|
||||||
public void fireEvent(GameEvent event);
|
public void fireEvent(GameEvent event);
|
||||||
|
|
|
||||||
|
|
@ -555,7 +555,7 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
logger.fatal("Game exception ", ex);
|
logger.fatal("Game exception ", ex);
|
||||||
this.fireErrorEvent("Game exception occurred: " + ex.getMessage() + " - " + ex.getStackTrace()[0]);
|
this.fireErrorEvent("Game exception occurred: ", ex);
|
||||||
restoreState(bookmark);
|
restoreState(bookmark);
|
||||||
bookmark = 0;
|
bookmark = 0;
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -569,7 +569,7 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
logger.fatal("Game exception ", ex);
|
logger.fatal("Game exception ", ex);
|
||||||
this.fireErrorEvent("Game exception occurred: " + ex.getMessage() + " - " + ex.getStackTrace()[0]);
|
this.fireErrorEvent("Game exception occurred: ", ex);
|
||||||
} finally {
|
} finally {
|
||||||
resetLKI();
|
resetLKI();
|
||||||
}
|
}
|
||||||
|
|
@ -890,8 +890,8 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fireErrorEvent(String message) {
|
public void fireErrorEvent(String message, Exception ex) {
|
||||||
tableEventSource.fireTableEvent(EventType.ERROR, message, this);
|
tableEventSource.fireTableEvent(EventType.ERROR, message, ex, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ public class TableEvent extends EventObject implements ExternalEvent, Serializab
|
||||||
private Draft draft;
|
private Draft draft;
|
||||||
private EventType eventType;
|
private EventType eventType;
|
||||||
private String message;
|
private String message;
|
||||||
|
private Exception ex;
|
||||||
private Cards cards;
|
private Cards cards;
|
||||||
private UUID playerId;
|
private UUID playerId;
|
||||||
private Deck deck;
|
private Deck deck;
|
||||||
|
|
@ -64,14 +65,23 @@ public class TableEvent extends EventObject implements ExternalEvent, Serializab
|
||||||
this.eventType = eventType;
|
this.eventType = eventType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TableEvent(EventType eventType, String message, Cards cards, Game game) {
|
public TableEvent(EventType eventType, String message, Game game) {
|
||||||
super(game);
|
super(game);
|
||||||
this.game = game;
|
this.game = game;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
this.cards = cards;
|
|
||||||
this.eventType = eventType;
|
this.eventType = eventType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TableEvent(EventType eventType, String message, Cards cards, Game game) {
|
||||||
|
this(eventType, message, game);
|
||||||
|
this.cards = cards;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TableEvent(EventType eventType, String message, Exception ex, Game game) {
|
||||||
|
this(eventType, message, game);
|
||||||
|
this.ex = ex;
|
||||||
|
}
|
||||||
|
|
||||||
public TableEvent(EventType eventType, UUID playerId, Deck deck, int timeout) {
|
public TableEvent(EventType eventType, UUID playerId, Deck deck, int timeout) {
|
||||||
super(playerId);
|
super(playerId);
|
||||||
this.playerId = playerId;
|
this.playerId = playerId;
|
||||||
|
|
@ -109,6 +119,10 @@ public class TableEvent extends EventObject implements ExternalEvent, Serializab
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Exception getException() {
|
||||||
|
return ex;
|
||||||
|
}
|
||||||
|
|
||||||
public Cards getCards() {
|
public Cards getCards() {
|
||||||
return cards;
|
return cards;
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,11 @@ public class TableEventSource implements EventSource<TableEvent>, Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fireTableEvent(EventType eventType, String message, Game game) {
|
public void fireTableEvent(EventType eventType, String message, Game game) {
|
||||||
dispatcher.fireEvent(new TableEvent(eventType, message, null, game));
|
dispatcher.fireEvent(new TableEvent(eventType, message, game));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fireTableEvent(EventType eventType, String message, Exception ex, Game game) {
|
||||||
|
dispatcher.fireEvent(new TableEvent(eventType, message, ex, game));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fireTableEvent(EventType eventType, String message, Draft draft) {
|
public void fireTableEvent(EventType eventType, String message, Draft draft) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue