From 91548897aa89d5e224fd6ec0ec2eed7c6b32672b Mon Sep 17 00:00:00 2001 From: Simon Date: Fri, 21 Jul 2023 17:57:21 +0200 Subject: [PATCH] Log: prevent exception in log for missing MegaMek.jar and improve game options load logging --- megamek/src/megamek/MegaMek.java | 5 +++++ megamek/src/megamek/common/options/GameOptions.java | 12 +++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/megamek/src/megamek/MegaMek.java b/megamek/src/megamek/MegaMek.java index 9dd26544463..8f73eac5dbf 100644 --- a/megamek/src/megamek/MegaMek.java +++ b/megamek/src/megamek/MegaMek.java @@ -178,6 +178,11 @@ public static MMOptions getMMOptions() { filename = "MegaMek.app/Contents/Resources/Java/" + filename; } + if (!new File(filename).exists()) { + LogManager.getLogger().warn("MegaMek.jar not found. Returning null checksum."); + return null; + } + MessageDigest md; // Calculate the digest for the given file. try { diff --git a/megamek/src/megamek/common/options/GameOptions.java b/megamek/src/megamek/common/options/GameOptions.java index d581f6db9cc..e385635afe4 100755 --- a/megamek/src/megamek/common/options/GameOptions.java +++ b/megamek/src/megamek/common/options/GameOptions.java @@ -333,9 +333,11 @@ public synchronized Vector loadOptions(File file, boolean print) { InputStream is = new FileInputStream(file); GameOptionsXML opts = (GameOptionsXML) um.unmarshal(MMXMLUtility.createSafeXmlSource(is)); + StringBuilder logMessages = new StringBuilder("\n"); for (IBasicOption bo : opts.getOptions()) { - changedOptions.add(parseOptionNode(bo, print)); + changedOptions.add(parseOptionNode(bo, print, logMessages)); } + LogManager.getLogger().info(logMessages.toString()); } catch (Exception e) { LogManager.getLogger().error("Error loading XML for game options: " + e.getMessage(), e); } @@ -343,7 +345,7 @@ public synchronized Vector loadOptions(File file, boolean print) { return changedOptions; } - private IOption parseOptionNode(final IBasicOption node, final boolean print) { + private IOption parseOptionNode(final IBasicOption node, final boolean print, final StringBuilder logMessages) { IOption option = null; String name = node.getName(); @@ -372,17 +374,17 @@ private IOption parseOptionNode(final IBasicOption node, final boolean print) { } if (print) { - LogManager.getLogger().info(String.format("Set option '%s' to '%s'.", name, value)); + logMessages.append(String.format("\tSet option '%s' to '%s'\n", name, value)); } option = tempOption; } catch (Exception ex) { LogManager.getLogger().error(String.format( - "Error trying to load option '%s' with a value of '%s'.", name, value)); + "Error trying to load option '%s' with a value of '%s'!", name, value)); } } } else { - LogManager.getLogger().warn("Invalid option '" + name + "' when trying to load options file."); + LogManager.getLogger().warn("Invalid option '" + name + "' when trying to load options file!"); } }