diff --git a/src/client/Client.java b/src/client/Client.java index 7ecf223..9361fd6 100644 --- a/src/client/Client.java +++ b/src/client/Client.java @@ -81,9 +81,9 @@ public void runClient() { */ public void processMessages() { while(getProtocolManager() == null) { // sometimes accessing getProtocolManager() throws a mysterious null pointer exception. Wait until it can't anymore - try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } } + try { Thread.sleep(1); } catch (InterruptedException e) { logStackTrace(e); } } while(getProtocolManager().getMessagesToProcess() == null) { // sometimes accessing getMessagesToProcess() throws a mysterious null pointer exception. Wait until it can't anymore - try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } } + try { Thread.sleep(1); } catch (InterruptedException e) { logStackTrace(e); } } while(getProtocolManager().getMessagesToProcess().size() > 0) { SBProtocolMessage message = getProtocolManager().getNextMessageToProcessAndStoreIt(); @@ -97,9 +97,9 @@ public void processMessages() { */ public void processAnswers() { while(getProtocolManager() == null) { // sometimes accessing getProtocolManager() throws a mysterious null pointer exception. Wait until it can't anymore - try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } } + try { Thread.sleep(1); } catch (InterruptedException e) { logStackTrace(e); } } while(getProtocolManager().getAnswersToProcess() == null) { // sometimes accessing getAnswersToProcess() throws a mysterious null pointer exception. Wait until it can't anymore - try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } } + try { Thread.sleep(1); } catch (InterruptedException e) { logStackTrace(e); } } while(getProtocolManager().getAnswersToProcess().size() > 0) { SBProtocolMessage answer = getProtocolManager().getAnswersToProcess().poll(); diff --git a/src/client/display/GameCanvas.java b/src/client/display/GameCanvas.java index 5fb9d67..be79c32 100644 --- a/src/client/display/GameCanvas.java +++ b/src/client/display/GameCanvas.java @@ -280,7 +280,7 @@ else if(getPitchMouseLogic().getHoveringPlayerOnBench() != null) } } catch(NullPointerException e) { getClient().log(Level.WARNING, "Received nullpointer in PitchCanvas but continuing anyway."); - e.printStackTrace(); + getGameFrame().getClient().logStackTrace(e); } } diff --git a/src/client/display/GameFrame.java b/src/client/display/GameFrame.java index 0eafd0e..05ad867 100644 --- a/src/client/display/GameFrame.java +++ b/src/client/display/GameFrame.java @@ -307,7 +307,7 @@ public void blitzOrBlock(DrawingPath path, PitchField destination, Player actor) } } catch (NullPointerException e) { getClient().log(Level.WARNING, "Catched nullpointer while blitzing! (But continuing)"); - e.printStackTrace(); + getClient().logStackTrace(e); } } } @@ -323,7 +323,7 @@ public void throwBall(PitchField throwDestination, Player thrower) { getClient().sendGameMessage(new SBProtocolMessage(getClient().getUID(), SBProtocolCommand.ACTIO, params)); } catch (NullPointerException e) { getClient().log(Level.WARNING, "Catched nullpointer while throwing! (But continuing)"); - e.printStackTrace(); + getClient().logStackTrace(e); } } } diff --git a/src/client/display/LoginPanel.java b/src/client/display/LoginPanel.java index 60ba573..6e4b675 100644 --- a/src/client/display/LoginPanel.java +++ b/src/client/display/LoginPanel.java @@ -220,7 +220,7 @@ private void sendLoginForm(String name, String password) { md.update(password.getBytes("UTF-8")); digest = md.digest(password.getBytes("UTF-8")); } catch (Exception e) { - e.printStackTrace(); + parent.getClient().logStackTrace(e); } password = DatatypeConverter.printHexBinary(digest).toLowerCase(); // submit form diff --git a/src/client/logic/ClientMatch.java b/src/client/logic/ClientMatch.java index f066bc4..5870ece 100644 --- a/src/client/logic/ClientMatch.java +++ b/src/client/logic/ClientMatch.java @@ -72,7 +72,7 @@ public void processMessage(SBProtocolMessage message) { break; } }catch(IndexOutOfBoundsException e){ - e.printStackTrace(); + getClient().logStackTrace(e); returnFailureMessage(message, SBProtocolMessage.FAILD_PARAMANIA_HAS_TAKEN_OVER); } } @@ -414,7 +414,7 @@ private void processAnswerFAI(SBProtocolMessage answer, SBProtocolMessage messag try { Thread.sleep(100); } catch (InterruptedException e) { - e.printStackTrace(); + getClient().logStackTrace(e); } } } @@ -623,7 +623,7 @@ private void adjustPlayer(SBProtocolMessage message){ teams[actingUserIndex].getPlayers().get(playerIndex).invokeAdjustPosition(getPitch().getFields()[playerPosX][playerPosY]); } }catch(NullPointerException e){ - e.printStackTrace(); + getClient().logStackTrace(e); } teams[actingUserIndex].getPlayers().get(playerIndex).getPosition().adjustPlayer(teams[actingUserIndex].getPlayers().get(playerIndex)); teams[actingUserIndex].getPlayers().get(playerIndex).invokeSetIsHoldingBall(Boolean.parseBoolean(message.getParameterContent(12))); diff --git a/src/client/logic/PitchMouseLogic.java b/src/client/logic/PitchMouseLogic.java index 465cb05..4ae4bf3 100644 --- a/src/client/logic/PitchMouseLogic.java +++ b/src/client/logic/PitchMouseLogic.java @@ -395,9 +395,9 @@ void calculate(MouseEvent e) { } } catch(IndexOutOfBoundsException ex) { - ex.printStackTrace(); + getGameCanvas().getClient().logStackTrace(ex); } catch(NullPointerException ex) { - ex.printStackTrace(); + getGameCanvas().getClient().logStackTrace(ex); } } diff --git a/src/gameLogic/TeamManager.java b/src/gameLogic/TeamManager.java index 77af6ab..bb68001 100644 --- a/src/gameLogic/TeamManager.java +++ b/src/gameLogic/TeamManager.java @@ -49,7 +49,7 @@ public TeamManager(SBApplication parent, URL teamsURL) { try { teamsStream = new DataInputStream(teamsURL.openStream()); } catch (IOException e) { - e.printStackTrace(); + getParent().logStackTrace(e); } if(teamsStream != null) { // stream was successfully opened @@ -57,7 +57,7 @@ public TeamManager(SBApplication parent, URL teamsURL) { tempFile.delete(); // delete old temp file Files.copy(teamsStream, Paths.get(tempFile.toURI())); } catch (IOException e) { - e.printStackTrace(); + getParent().logStackTrace(e); } } } @@ -164,12 +164,12 @@ private void setUp(File teamsDir) { } } catch (FileNotFoundException e) { - e.printStackTrace(); + getParent().logStackTrace(e); } catch (NullPointerException e) { - e.printStackTrace(); + getParent().logStackTrace(e); } catch (ScriptException e) { getParent().log(Level.SEVERE, "Exception in script " + filename + "."); - e.printStackTrace(); + getParent().logStackTrace(e); System.exit(-1); } @@ -204,14 +204,14 @@ public Object invokeFunction(String functionName, Player actor, Object... params for(Object param : params) getParent().log(Level.SEVERE, param.toString()); } - e.printStackTrace(); + getParent().logStackTrace(e); System.exit(-1); } catch (NoSuchMethodException ignored) { // script didn't contain method // Removed warnings to prevent overflowing the logs // getParent().log(Level.WARNING, "Script of " + actor.getName() + " didn't contain method " + functionName + "."); - // e.printStackTrace(); + // getParent().logStackTrace(e); } catch (NullPointerException e) { // invocable didn't exist - e.printStackTrace(); + getParent().logStackTrace(e); } return null; } diff --git a/src/gameLogic/rules/RuleMove.java b/src/gameLogic/rules/RuleMove.java index 13f62ef..e23bf08 100644 --- a/src/gameLogic/rules/RuleMove.java +++ b/src/gameLogic/rules/RuleMove.java @@ -118,7 +118,7 @@ protected boolean moveOneField(SBProtocolMessage message, int i, PitchField... p try{ Thread.sleep(300); }catch(InterruptedException e){ - e.printStackTrace(); + getMatch().getParent().logStackTrace(e); } } //is the field next to the player? diff --git a/src/network/SBSocket.java b/src/network/SBSocket.java index 83fcd0b..d43014a 100644 --- a/src/network/SBSocket.java +++ b/src/network/SBSocket.java @@ -204,7 +204,7 @@ public void run() { } try { // sleep for a bit after each received message (prevents null from flooding the logs) Thread.sleep(10); - } catch (InterruptedException e) { e.printStackTrace(); } + } catch (InterruptedException e) { getSocketManager().getParent().logStackTrace(e); } } else { break; } diff --git a/src/server/logic/ServerMatch.java b/src/server/logic/ServerMatch.java index 75f78f0..4aedf2f 100644 --- a/src/server/logic/ServerMatch.java +++ b/src/server/logic/ServerMatch.java @@ -78,7 +78,7 @@ public void processMessage(SBProtocolMessage message) { returnFailureMessage(message, SBProtocolMessage.FAILD_NOT_YOUR_TURN); } }catch(IndexOutOfBoundsException e){ - e.printStackTrace(); + getParent().logStackTrace(e); returnFailureMessage(message, SBProtocolMessage.FAILD_PARAMANIA_HAS_TAKEN_OVER); } } @@ -181,7 +181,7 @@ private boolean processAnswerSUC(SBProtocolMessage answer, SBProtocolMessage mes return false; } }catch(IndexOutOfBoundsException e){ - e.printStackTrace(); + getParent().logStackTrace(e); returnFailureMessage(message, SBProtocolMessage.FAILD_PARAMANIA_HAS_TAKEN_OVER); return false; } @@ -285,7 +285,7 @@ private boolean processAnswerFAI(SBProtocolMessage answer, SBProtocolMessage mes try { Thread.sleep(100); } catch (InterruptedException e) { - e.printStackTrace(); + getParent().logStackTrace(e); } } } @@ -550,7 +550,7 @@ private void move(SBProtocolMessage message){ returnFailureMessage(message, SBProtocolMessage.FAILD_GIMME_AN_INT); return; } catch(ArrayIndexOutOfBoundsException e) { - e.printStackTrace(); + getParent().logStackTrace(e); return; } PitchField[] path = new PitchField[x.length]; diff --git a/src/server/logic/ServerMessageProcessor.java b/src/server/logic/ServerMessageProcessor.java index 65aadd1..08585ab 100644 --- a/src/server/logic/ServerMessageProcessor.java +++ b/src/server/logic/ServerMessageProcessor.java @@ -68,7 +68,7 @@ public void processAnswer(SBProtocolMessage answer) { } } catch(ConcurrentModificationException e) { getServer().log(Level.SEVERE, "Catched concurrent modification exception! But continuing anyway."); - e.printStackTrace(); + getServer().logStackTrace(e); } } getProtocolManager().removeUnansweredMessage(message); diff --git a/src/util/SBApplication.java b/src/util/SBApplication.java index b3312f9..d886745 100644 --- a/src/util/SBApplication.java +++ b/src/util/SBApplication.java @@ -72,7 +72,7 @@ public void loadAvailableTeams(String host, String file) { teamsURL = new URL("http", host, 80, file); } catch (MalformedURLException e) { log(Level.SEVERE, "Could not load available teams. Make sure you are connected to the Internet and the URL is correct."); - e.printStackTrace(); + logStackTrace(e); } teamManager = new TeamManager(this, teamsURL); } @@ -142,4 +142,13 @@ public UUID getUID() { public abstract boolean checkIfUserExists(String name); public abstract void log(Level level, String message); + + /** + * Log all elements of a stack trace. + * @param e An Exception whose stack trace to print. + */ + public void logStackTrace(Exception e) { + for(StackTraceElement element: e.getStackTrace()) + log(Level.SEVERE, element.toString()); + } }