From 03ae5d07c9acae327ee31ecb97561ab927584f98 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 9 Dec 2012 10:29:04 +1100 Subject: [PATCH] Java 6 support. --- pom.xml | 4 +-- src/main/java/net/md_5/specialsource/Jar.java | 4 +-- .../net/md_5/specialsource/JarComparer.java | 6 ++-- .../net/md_5/specialsource/JarRemapper.java | 29 +++++++++++++------ .../net/md_5/specialsource/NoDupeList.java | 4 +-- .../java/net/md_5/specialsource/Pair.java | 9 +++--- .../net/md_5/specialsource/SpecialSource.java | 10 +++---- 7 files changed, 37 insertions(+), 29 deletions(-) diff --git a/pom.xml b/pom.xml index 5edba8d..ad926f0 100644 --- a/pom.xml +++ b/pom.xml @@ -88,8 +88,8 @@ maven-compiler-plugin 3.0 - 1.7 - 1.7 + 1.6 + 1.6 diff --git a/src/main/java/net/md_5/specialsource/Jar.java b/src/main/java/net/md_5/specialsource/Jar.java index bbca14c..e6cd865 100644 --- a/src/main/java/net/md_5/specialsource/Jar.java +++ b/src/main/java/net/md_5/specialsource/Jar.java @@ -56,8 +56,8 @@ public class Jar { public final JarFile file; public final String main; - private final Set contains = new HashSet<>(); - private final Map classes = new HashMap<>(); + private final Set contains = new HashSet(); + private final Map classes = new HashMap(); public boolean containsClass(String clazz) { return contains.contains(clazz) ? true : getClass(clazz) != null; diff --git a/src/main/java/net/md_5/specialsource/JarComparer.java b/src/main/java/net/md_5/specialsource/JarComparer.java index eaa7f96..70cc040 100644 --- a/src/main/java/net/md_5/specialsource/JarComparer.java +++ b/src/main/java/net/md_5/specialsource/JarComparer.java @@ -40,9 +40,9 @@ public class JarComparer extends ClassVisitor { public final Jar jar; private String myName; public int iterDepth; - public NoDupeList classes = new NoDupeList<>(); - public NoDupeList fields = new NoDupeList<>(); - public NoDupeList methods = new NoDupeList<>(); + public NoDupeList classes = new NoDupeList(); + public NoDupeList fields = new NoDupeList(); + public NoDupeList methods = new NoDupeList(); private void visitType(Type type) { // FIXME: Scan arrays too! diff --git a/src/main/java/net/md_5/specialsource/JarRemapper.java b/src/main/java/net/md_5/specialsource/JarRemapper.java index 39a9d28..f8328e9 100644 --- a/src/main/java/net/md_5/specialsource/JarRemapper.java +++ b/src/main/java/net/md_5/specialsource/JarRemapper.java @@ -57,13 +57,13 @@ public class JarRemapper extends Remapper { private static final String HEADER = "" + "# THESE ARE AUTOMATICALLY GENERATED MAPPINGS BETWEEN {0} and {1}\n" + "# THEY WERE GENERATED ON {2} USING Special Source (c) md_5 2012.\n" - + "# PLEASE DO NOT REMOVE THIS HEADER OR DISTRIBUTE THIS FILE WITHOUT PERMISSION!\n"; + + "# PLEASE DO NOT REMOVE THIS HEADER!\n"; private final JarComparer oldJar; private final JarComparer newJar; private final Jar self; - private final Map classes = new HashMap<>(); - private final Map fields = new HashMap<>(); - private final Map methods = new HashMap<>(); + private final Map classes = new HashMap(); + private final Map fields = new HashMap(); + private final Map methods = new HashMap(); private JarRemapper(JarComparer oldJar, JarComparer newJar, Jar self, File logfile) throws IOException { SpecialSource.validate(oldJar, newJar); @@ -71,7 +71,7 @@ public class JarRemapper extends Remapper { this.newJar = newJar; this.self = self; - List searge = new ArrayList<>(); + List searge = new ArrayList(); for (int i = 0; i < oldJar.classes.size(); i++) { String oldClass = oldJar.classes.get(i); @@ -99,11 +99,15 @@ public class JarRemapper extends Remapper { } Collections.sort(searge); - try (PrintWriter out = new PrintWriter(logfile)) { + // No try with resources for us! + PrintWriter out = new PrintWriter(logfile); + try { out.println(MessageFormat.format(HEADER, oldJar.jar.file.getName(), newJar.jar.file.getName(), new Date())); for (String s : searge) { out.println(s); } + } finally { + out.close(); } } @@ -148,11 +152,14 @@ public class JarRemapper extends Remapper { } public static void renameJar(Jar jar, File target, JarComparer oldNames, JarComparer newNames) throws IOException { - try (JarOutputStream out = new JarOutputStream(new FileOutputStream(target))) { + JarOutputStream out = new JarOutputStream(new FileOutputStream(target)); + try { JarRemapper self = new JarRemapper(oldNames, newNames, jar, new File(target.getPath() + ".srg")); for (Enumeration entr = jar.file.entries(); entr.hasMoreElements();) { JarEntry entry = entr.nextElement(); - try (InputStream is = jar.file.getInputStream(entry)) { + + InputStream is = jar.file.getInputStream(entry); + try { String name = entry.getName(); byte[] data; if (name.endsWith(".class")) { @@ -170,7 +177,7 @@ public class JarRemapper extends Remapper { } else { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); int n; - byte[] b = new byte[1 << 15]; // Max class file size, arbritrary number + byte[] b = new byte[1 << 15]; // Max class file size while ((n = is.read(b, 0, b.length)) != -1) { buffer.write(b, 0, n); } @@ -180,8 +187,12 @@ public class JarRemapper extends Remapper { entry.setTime(0); out.putNextEntry(entry); out.write(data); + } finally { + is.close(); } } + } finally { + out.close(); } } } diff --git a/src/main/java/net/md_5/specialsource/NoDupeList.java b/src/main/java/net/md_5/specialsource/NoDupeList.java index 27bb720..e9896d9 100644 --- a/src/main/java/net/md_5/specialsource/NoDupeList.java +++ b/src/main/java/net/md_5/specialsource/NoDupeList.java @@ -43,8 +43,8 @@ import java.util.Set; */ public class NoDupeList implements Iterable { - private final Set set = new HashSet<>(); - private final List backing = new ArrayList<>(); + private final Set set = new HashSet(); + private final List backing = new ArrayList(); public boolean add(E e) { if (set.contains(e)) { diff --git a/src/main/java/net/md_5/specialsource/Pair.java b/src/main/java/net/md_5/specialsource/Pair.java index 6b62e59..da0465b 100644 --- a/src/main/java/net/md_5/specialsource/Pair.java +++ b/src/main/java/net/md_5/specialsource/Pair.java @@ -35,14 +35,13 @@ import lombok.ToString; /** * A class representing a set of 2 objects as defined by the type parameters. * - * @param First type - * @param Second type + * @param type of element */ @ToString @EqualsAndHashCode @RequiredArgsConstructor -public class Pair { +public class Pair { - public final T1 first; - public final T2 second; + public final E first; + public final E second; } diff --git a/src/main/java/net/md_5/specialsource/SpecialSource.java b/src/main/java/net/md_5/specialsource/SpecialSource.java index bdaa97f..f319d2b 100644 --- a/src/main/java/net/md_5/specialsource/SpecialSource.java +++ b/src/main/java/net/md_5/specialsource/SpecialSource.java @@ -30,16 +30,15 @@ package net.md_5.specialsource; import java.io.File; import java.io.IOException; -import java.util.jar.JarFile; import org.objectweb.asm.ClassReader; public class SpecialSource { public static void main(String[] args) throws Exception { - args = new String[]{"jars/1.4.5/bukkit.jar", "jars/1.4.5/vanilla.jar", "jars/1.4.5/craftbukkit-1.4.5-R0.3-SNAPSHOT.jar"}; if (args.length != 3) { System.err.println("SpecialSource takes 3 arguments. It will take 2 jars to generate a difference between, and a 3rd jar based on the first jar to rename to the second jar."); System.err.println("Usage: java -jar SpecialSource.jar "); + System.err.println("It is currently tuned to only accept a Minecraft v1.4.5 server jar as the 2 jars to compare"); return; } @@ -50,7 +49,7 @@ public class SpecialSource { System.out.println("Creating jar compare"); JarComparer visitor1 = new JarComparer(jar1); JarComparer visitor2 = new JarComparer(jar2); - visit(new Pair<>(jar1, jar2), new Pair<>(visitor1, visitor2), new Pair<>(jar1.main, jar2.main)); + visit(new Pair(jar1, jar2), new Pair(visitor1, visitor2), new Pair(jar1.main, jar2.main)); System.out.println("Checking vailidity"); if (visitor1.classes.size() != 1004 || visitor2.classes.size() != 1004) { @@ -67,7 +66,7 @@ public class SpecialSource { JarRemapper.renameJar(Jar.init(args[2]), new File("out.jar"), visitor1, visitor2); } - private static void visit(Pair jars, Pair visitors, Pair classes) throws IOException { + private static void visit(Pair jars, Pair visitors, Pair classes) throws IOException { JarComparer visitor1 = visitors.first; JarComparer visitor2 = visitors.second; @@ -81,7 +80,7 @@ public class SpecialSource { while (visitor1.iterDepth < visitor1.classes.size()) { String className1 = visitor1.classes.get(visitor1.iterDepth); String className2 = visitor2.classes.get(visitor1.iterDepth); - Pair pair = new Pair<>(className1, className2); + Pair pair = new Pair(className1, className2); visitor1.iterDepth++; visit(jars, visitors, pair); } @@ -97,6 +96,5 @@ public class SpecialSource { if (visitor1.methods.size() != visitor2.methods.size()) { throw new IllegalStateException("methods"); } - } }