From 92ebb75e9d1e0b892eb7cbd458d4ea3e9c2220dd Mon Sep 17 00:00:00 2001 From: Markil3 <75867393+Markil3@users.noreply.github.com> Date: Tue, 14 Sep 2021 14:39:38 -0600 Subject: [PATCH] Improves the debugging messages some. There is something up with the browser interface, and these can help me troubleshoot. --- .../browserCommands/CommandConfirmation.java | 23 +++++++++++++------ .../browserCommands/CommandReturn.java | 9 ++++++++ .../browserCommands/MessageHandler.java | 3 ++- .../browserCommands/MessageRunner.java | 12 +++++++++- .../browserCommands/MessageSerializer.java | 17 +++++++++++++- 5 files changed, 54 insertions(+), 10 deletions(-) diff --git a/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/CommandConfirmation.java b/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/CommandConfirmation.java index 53544c0..abba668 100644 --- a/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/CommandConfirmation.java +++ b/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/CommandConfirmation.java @@ -19,7 +19,7 @@ public class CommandConfirmation implements Serializable */ private Throwable errorCode; private String message; - + /** * Confirms a successful command. */ @@ -27,7 +27,7 @@ public class CommandConfirmation implements Serializable { this("Command successful"); } - + /** * Confirms a successful command. * @@ -38,7 +38,7 @@ public class CommandConfirmation implements Serializable this((BrowserError) null); this.message = message; } - + /** * Confirms an unsuccessful command. * @@ -48,7 +48,7 @@ public class CommandConfirmation implements Serializable { this.errorCode = error; } - + /** * Checks to see if the command executed properly. * @@ -58,7 +58,7 @@ public class CommandConfirmation implements Serializable { return this.errorCode == null; } - + /** * Obtains the error returned by the browser. * @@ -68,7 +68,7 @@ public class CommandConfirmation implements Serializable { return this.errorCode; } - + /** * Obtains details as to the nature of the command execution. * @@ -76,6 +76,15 @@ public class CommandConfirmation implements Serializable */ public String getMessage() { - return this.errorCode != null ? this.errorCode.getMessage() : this.message; + return this.errorCode != null ? this.errorCode + .getMessage() : this.message; + } + + @Override + public String toString() + { + return "CommandConfirmation{" + + "message='" + this.getMessage() + '\'' + + '}'; } } diff --git a/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/CommandReturn.java b/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/CommandReturn.java index 4f4b6e2..13ba2eb 100644 --- a/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/CommandReturn.java +++ b/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/CommandReturn.java @@ -58,4 +58,13 @@ public class CommandReturn implements Serializable { return this.confirmation; } + + @Override + public String toString() + { + return "CommandReturn{" + + "returnValue=" + returnValue + + ", confirmation=" + confirmation + + '}'; + } } diff --git a/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageHandler.java b/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageHandler.java index 5ae3457..e050b6b 100644 --- a/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageHandler.java +++ b/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageHandler.java @@ -171,7 +171,8 @@ public class MessageHandler implements Runnable, MessageSerializer } catch (IOException e) { - logger.error("Could not send response message for" + update, e); + logger.error("Could not send response message" + + " for " + update, e); running = false; } } diff --git a/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageRunner.java b/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageRunner.java index 3ec68e8..f2f6bb3 100644 --- a/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageRunner.java +++ b/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageRunner.java @@ -10,6 +10,7 @@ import org.slf4j.LoggerFactory; import java.io.*; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; +import java.util.Arrays; import java.util.HashMap; import java.util.LinkedList; import java.util.concurrent.ExecutionException; @@ -145,7 +146,16 @@ public abstract class MessageRunner implements Runnable, MessageSerializer /* * Not a response, just a generic update. */ - Object ob = deserializeObject(returnMessage[1]); + Object ob; + try + { + ob = deserializeObject(returnMessage[1]); + } + catch (IOException e) + { + throw new IOException("Could not " + + "deserialize " + Arrays.toString(returnMessage[1]), e); + } this.triggerUpdateListeners(ob); logger.debug("Received update {}", ob); } diff --git a/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageSerializer.java b/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageSerializer.java index 05f92ae..8859f28 100644 --- a/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageSerializer.java +++ b/browserCommands/src/main/java/edu/regis/universeplayer/browserCommands/MessageSerializer.java @@ -5,9 +5,11 @@ package edu.regis.universeplayer.browserCommands; import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.*; import java.nio.ByteBuffer; +import java.util.Arrays; public interface MessageSerializer { @@ -43,6 +45,10 @@ public interface MessageSerializer */ default Object deserializeObject(byte[] message) throws IOException, ClassNotFoundException { + if (message == null || message.length == 0) + { + return null; + } try (ByteArrayInputStream byteStream = new ByteArrayInputStream(message)) { try (ObjectInputStream stream = new ObjectInputStream(byteStream)) @@ -125,7 +131,16 @@ public interface MessageSerializer .error("Malformed message, could not get message length."); return null; } - message = new byte[lengthBuffer.getInt()]; + try + { + message = new byte[lengthBuffer.getInt()]; + } + catch (NegativeArraySizeException e) + { + throw new IOException("Invalid array size for message " + Arrays + .toString(messageNum) + , e); + } /* * Writes the message */