From b454c85dab486f531994dd2e9541efe4062de6b2 Mon Sep 17 00:00:00 2001 From: Pokechu22 Date: Wed, 24 Jan 2018 22:44:30 -0800 Subject: [PATCH] Use try-with-resources in all other situations that can use it --- src/main/java/net/md_5/specialsource/Jar.java | 10 ++------- .../net/md_5/specialsource/JarMapping.java | 11 +++------- .../net/md_5/specialsource/JarRemapper.java | 16 +++++--------- .../net/md_5/specialsource/SpecialSource.java | 22 ++++++------------- .../provider/ClassLoaderProvider.java | 18 +++++---------- .../transformer/MinecraftCodersPack.java | 14 ++---------- .../md_5/specialsource/util/FileLocator.java | 16 +++----------- .../specialsource/writer/MappingWriter.java | 17 +++++--------- 8 files changed, 33 insertions(+), 91 deletions(-) diff --git a/src/main/java/net/md_5/specialsource/Jar.java b/src/main/java/net/md_5/specialsource/Jar.java index 37b207a..a35d3b8 100644 --- a/src/main/java/net/md_5/specialsource/Jar.java +++ b/src/main/java/net/md_5/specialsource/Jar.java @@ -141,16 +141,10 @@ public class Jar implements Closeable { */ public ClassNode getNode(String clazz) { // No luck, so lets try read it - try { - InputStream is = getClass(clazz); + try (InputStream is = getClass(clazz)) { if (is != null) { - ClassReader cr; + ClassReader cr = new ClassReader(is); // Process it - try { - cr = new ClassReader(is); - } finally { - is.close(); - } ClassNode node = new ClassNode(); cr.accept(node, 0); diff --git a/src/main/java/net/md_5/specialsource/JarMapping.java b/src/main/java/net/md_5/specialsource/JarMapping.java index 5e8dc41..01472b4 100644 --- a/src/main/java/net/md_5/specialsource/JarMapping.java +++ b/src/main/java/net/md_5/specialsource/JarMapping.java @@ -486,13 +486,6 @@ public class JarMapping { this.newJar = newJar; - PrintWriter out; - if (logfile == null) { - out = new PrintWriter(System.out); - } else { - out = new PrintWriter(logfile); - } - MappingWriter srgWriter = (compact) ? new CompactSearge(oldJar.jar.getFilename(), newJar.jar.getFilename()) : new Searge(oldJar.jar.getFilename(), newJar.jar.getFilename()); @@ -528,6 +521,8 @@ public class JarMapping { } } - srgWriter.write(out); + try (PrintWriter out = (logfile != null ? new PrintWriter(System.out) : new PrintWriter(logfile))) { + srgWriter.write(out); + } } } diff --git a/src/main/java/net/md_5/specialsource/JarRemapper.java b/src/main/java/net/md_5/specialsource/JarRemapper.java index ed8d40f..f9242fe 100644 --- a/src/main/java/net/md_5/specialsource/JarRemapper.java +++ b/src/main/java/net/md_5/specialsource/JarRemapper.java @@ -169,18 +169,16 @@ public class JarRemapper extends CustomRemapper { * Remap all the classes in a jar, writing a new jar to the target */ public void remapJar(Jar jar, File target) throws IOException { - JarOutputStream out = new JarOutputStream(new FileOutputStream(target)); + if (jar == null) { + return; + } ClassRepo repo = new JarRepo(jar); - try { - if (jar == null) { - return; - } + try (JarOutputStream out = new JarOutputStream(new FileOutputStream(target))) { for (String name : jar.getEntryNames()) { JarEntry entry; - InputStream is = jar.getResource(name); - try { + try (InputStream is = jar.getResource(name)) { byte[] data; if (name.endsWith(".class")) { // remap classes @@ -211,12 +209,8 @@ public class JarRemapper extends CustomRemapper { } out.putNextEntry(entry); out.write(data); - } finally { - is.close(); } } - } finally { - out.close(); } } diff --git a/src/main/java/net/md_5/specialsource/SpecialSource.java b/src/main/java/net/md_5/specialsource/SpecialSource.java index 7df6c07..3a0c013 100644 --- a/src/main/java/net/md_5/specialsource/SpecialSource.java +++ b/src/main/java/net/md_5/specialsource/SpecialSource.java @@ -278,9 +278,9 @@ public class SpecialSource { InheritanceMap inheritanceMap = new InheritanceMap(); inheritanceMap.generate(inheritanceProviders, jarMapping.classes.values()); - PrintWriter printWriter = new PrintWriter((File) options.valueOf("write-inheritance")); - inheritanceMap.save(printWriter); - printWriter.close(); + try (PrintWriter printWriter = new PrintWriter((File) options.valueOf("write-inheritance"))) { + inheritanceMap.save(printWriter); + } } if (access != null) { @@ -306,18 +306,10 @@ public class SpecialSource { JarComparer visitor2 = visitors.second; ClassReader clazz1, clazz2; - InputStream first = null; - InputStream second = null; - try { - clazz1 = new ClassReader(first = jars.second.getClass(classes.first)); - clazz2 = new ClassReader(second = jars.first.getClass(classes.second)); - } finally { - if (first != null) { - first.close(); - } - if (second != null) { - second.close(); - } + try (InputStream first = jars.second.getClass(classes.first); + InputStream second = jars.first.getClass(classes.second)) { + clazz1 = new ClassReader(first); + clazz2 = new ClassReader(second); } clazz1.accept(visitor1, 0); clazz2.accept(visitor2, 0); diff --git a/src/main/java/net/md_5/specialsource/provider/ClassLoaderProvider.java b/src/main/java/net/md_5/specialsource/provider/ClassLoaderProvider.java index 05b387b..121dc64 100644 --- a/src/main/java/net/md_5/specialsource/provider/ClassLoaderProvider.java +++ b/src/main/java/net/md_5/specialsource/provider/ClassLoaderProvider.java @@ -51,12 +51,12 @@ public class ClassLoaderProvider implements InheritanceProvider { public Collection getParents(String owner) { // TODO: ToInternalName String ownerInternalName = owner.replace('.', '/').concat(".class"); - InputStream input = classLoader.getResourceAsStream(ownerInternalName); - if (input == null) { - return null; - } - try { + try (InputStream input = classLoader.getResourceAsStream(ownerInternalName)) { + if (input == null) { + return null; + } + ClassReader cr = new ClassReader(input); ClassNode node = new ClassNode(); cr.accept(node, 0); @@ -72,14 +72,6 @@ public class ClassLoaderProvider implements InheritanceProvider { return parents; } catch (Exception ex) { // Just ignore this, means that we couldn't get any lookup for the specified class - } finally { - if (input != null) { - try { - input.close(); - } catch (IOException ex) { - // Too bad, can't recover from here - } - } } return null; diff --git a/src/main/java/net/md_5/specialsource/transformer/MinecraftCodersPack.java b/src/main/java/net/md_5/specialsource/transformer/MinecraftCodersPack.java index 76725b5..465bb84 100644 --- a/src/main/java/net/md_5/specialsource/transformer/MinecraftCodersPack.java +++ b/src/main/java/net/md_5/specialsource/transformer/MinecraftCodersPack.java @@ -73,11 +73,8 @@ public class MinecraftCodersPack extends MappingTransformer { } private void readIntoMap(File file, Map map) throws IOException { - FileReader fileReader = null; - CSVReader csvReader = null; - try { - fileReader = new FileReader(file); - csvReader = new CSVReader(fileReader); + try (FileReader fileReader = new FileReader(file); + CSVReader csvReader = new CSVReader(fileReader)) { String[] line; while ((line = csvReader.readNext()) != null) { @@ -87,13 +84,6 @@ public class MinecraftCodersPack extends MappingTransformer { Preconditions.checkArgument(line.length >= 2, "Invalid csv line: %s", (Object) line); map.put(line[0], line[1]); } - } finally { - if (csvReader != null) { - csvReader.close(); - } - if (fileReader != null) { - fileReader.close(); - } } } diff --git a/src/main/java/net/md_5/specialsource/util/FileLocator.java b/src/main/java/net/md_5/specialsource/util/FileLocator.java index 833885a..daebafd 100644 --- a/src/main/java/net/md_5/specialsource/util/FileLocator.java +++ b/src/main/java/net/md_5/specialsource/util/FileLocator.java @@ -64,20 +64,10 @@ public class FileLocator { System.out.println("Downloading " + url); } - ReadableByteChannel rbc = null; - FileOutputStream fos = null; - try { - // TODO: Better solution for cleaning names - this extraneous '\' is introduced by path joining on the mcp dir - rbc = Channels.newChannel(new URL(url.replace('\\', '/')).openStream()); - fos = new FileOutputStream(file); + // TODO: Better solution for cleaning names - this extraneous '\' is introduced by path joining on the mcp dir + try (ReadableByteChannel rbc = Channels.newChannel(new URL(url.replace('\\', '/')).openStream()); + FileOutputStream fos = new FileOutputStream(file)) { fos.getChannel().transferFrom(rbc, 0, 1 << 24); - } finally { - if (rbc != null) { - rbc.close(); - } - if (fos != null) { - fos.close(); - } } // Success! diff --git a/src/main/java/net/md_5/specialsource/writer/MappingWriter.java b/src/main/java/net/md_5/specialsource/writer/MappingWriter.java index 9c4a4a2..173d318 100644 --- a/src/main/java/net/md_5/specialsource/writer/MappingWriter.java +++ b/src/main/java/net/md_5/specialsource/writer/MappingWriter.java @@ -57,18 +57,13 @@ public abstract class MappingWriter { public final void write(PrintWriter out) { // Sort lines for easy finding Collections.sort(lines); - // No try with resources for us! - try { - // Format header - out.println(MessageFormat.format(HEADER, oldJarName, newJarName, new Date())); - // Write out lines - for (String s : lines) { - out.println(s); - } - } finally { - // Make sure we close the outputstream in all cases - out.close(); + // Format header + out.println(MessageFormat.format(HEADER, oldJarName, newJarName, new Date())); + // Write out lines + for (String s : lines) { + out.println(s); } + // Caller is in charge of closes the output stream } protected final void addLine(String line) {