From 8be5cb8e60f36e3c434180f06062b2dfa75b4159 Mon Sep 17 00:00:00 2001 From: comp500 Date: Sat, 8 Jun 2019 14:31:52 +0100 Subject: [PATCH] Null safety, better exception handling, check strm --- .../java/link/infra/packwiz/installer/UpdateManager.java | 7 ++++++- .../installer/request/handlers/RequestHandlerGithub.java | 4 ++-- .../installer/request/handlers/RequestHandlerHTTP.java | 2 +- .../link/infra/packwiz/installer/ui/InstallWindow.java | 6 ++++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/link/infra/packwiz/installer/UpdateManager.java b/src/main/java/link/infra/packwiz/installer/UpdateManager.java index 2e616e3..d1eb5f6 100644 --- a/src/main/java/link/infra/packwiz/installer/UpdateManager.java +++ b/src/main/java/link/infra/packwiz/installer/UpdateManager.java @@ -3,6 +3,7 @@ package link.infra.packwiz.installer; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; +import java.io.InputStream; import java.net.URI; import java.nio.file.Paths; @@ -101,7 +102,11 @@ public class UpdateManager { ui.submitProgress(new InstallProgress("Loading pack file...")); HashInputStream packFileStream; try { - packFileStream = new HashInputStream(HandlerManager.getFileInputStream(opts.downloadURI)); + InputStream stream = HandlerManager.getFileInputStream(opts.downloadURI); + if (stream == null) { + throw new Exception("Pack file URI is invalid, is it supported?"); + } + packFileStream = new HashInputStream(stream); } catch (Exception e) { ui.handleExceptionAndExit(e); return; diff --git a/src/main/java/link/infra/packwiz/installer/request/handlers/RequestHandlerGithub.java b/src/main/java/link/infra/packwiz/installer/request/handlers/RequestHandlerGithub.java index 32997ba..15f35dd 100644 --- a/src/main/java/link/infra/packwiz/installer/request/handlers/RequestHandlerGithub.java +++ b/src/main/java/link/infra/packwiz/installer/request/handlers/RequestHandlerGithub.java @@ -70,10 +70,10 @@ public class RequestHandlerGithub extends RequestHandlerZip { @Override public boolean matchesHandler(URI loc) { String scheme = loc.getScheme(); - if (!(scheme.equals("http") || scheme.equals("https"))) { + if (!("http".equals(scheme) || "https".equals(scheme))) { return false; } - if (!loc.getHost().equals("github.com")) { + if (!"github.com".equals(loc.getHost())) { return false; } // TODO: sanity checks, support for more github urls diff --git a/src/main/java/link/infra/packwiz/installer/request/handlers/RequestHandlerHTTP.java b/src/main/java/link/infra/packwiz/installer/request/handlers/RequestHandlerHTTP.java index db6d3da..3a27486 100644 --- a/src/main/java/link/infra/packwiz/installer/request/handlers/RequestHandlerHTTP.java +++ b/src/main/java/link/infra/packwiz/installer/request/handlers/RequestHandlerHTTP.java @@ -11,7 +11,7 @@ public class RequestHandlerHTTP implements IRequestHandler { @Override public boolean matchesHandler(URI loc) { String scheme = loc.getScheme(); - return scheme.equals("http") || scheme.equals("https"); + return "http".equals(scheme) || "https".equals(scheme); } @Override diff --git a/src/main/java/link/infra/packwiz/installer/ui/InstallWindow.java b/src/main/java/link/infra/packwiz/installer/ui/InstallWindow.java index fcc5dce..e9f8546 100644 --- a/src/main/java/link/infra/packwiz/installer/ui/InstallWindow.java +++ b/src/main/java/link/infra/packwiz/installer/ui/InstallWindow.java @@ -100,20 +100,22 @@ public class InstallWindow implements IUserInterface { @Override public void handleException(Exception e) { + e.printStackTrace(); EventQueue.invokeLater(new Runnable() { public void run() { - JOptionPane.showMessageDialog(null, e.getMessage(), title, JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, "An error occurred: \n" + e.getClass().getCanonicalName() + ": " + e.getMessage(), title, JOptionPane.ERROR_MESSAGE); } }); } @Override public void handleExceptionAndExit(Exception e) { + e.printStackTrace(); // Used to prevent the done() handler of SwingWorker executing if the invokeLater hasn't happened yet aboutToCrash.set(true); EventQueue.invokeLater(new Runnable() { public void run() { - JOptionPane.showMessageDialog(null, e.getMessage(), title, JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, "A fatal error occurred: \n" + e.getClass().getCanonicalName() + ": " + e.getMessage(), title, JOptionPane.ERROR_MESSAGE); System.exit(1); } });