From 3162d05475e846445c17f5a3c2c2f94f7132c866 Mon Sep 17 00:00:00 2001 From: Deepanshu Gupta Date: Thu, 7 Jan 2016 16:57:36 -0800 Subject: [PATCH 1/2] Upgrade to ASM 5 Change-Id: I5c8bbc67017b7de49a9cb34514c087ed2f536495 --- tools/mkstubs/Android.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/mkstubs/Android.mk b/tools/mkstubs/Android.mk index 3e46a1d05..784f5fd67 100644 --- a/tools/mkstubs/Android.mk +++ b/tools/mkstubs/Android.mk @@ -20,7 +20,7 @@ LOCAL_SRC_FILES := $(call all-java-files-under,src) LOCAL_JAR_MANIFEST := manifest.txt LOCAL_STATIC_JAVA_LIBRARIES := \ - asm-4.0 + asm-5.0 LOCAL_MODULE := mkstubs From b916791be80472d224c642e3c5e44015c8b4bfa6 Mon Sep 17 00:00:00 2001 From: Deepanshu Gupta Date: Fri, 8 Jan 2016 08:48:36 -0800 Subject: [PATCH 2/2] Update mkstubs to Java 8. Also remove eclipse project, add intellij project and start using ASM5 API. Change-Id: I761965fe641879a606d5ec4f0cec0781087e4c20 --- tools/mkstubs/.classpath | 9 --- tools/mkstubs/.gitignore | 1 + tools/mkstubs/.idea/.name | 1 + tools/mkstubs/.idea/codeStyleSettings.xml | 80 +++++++++++++++++++ tools/mkstubs/.idea/compiler.xml | 22 +++++ tools/mkstubs/.idea/copyright/Android.xml | 9 +++ .../.idea/copyright/profiles_settings.xml | 3 + tools/mkstubs/.idea/encodings.xml | 6 ++ .../inspectionProfiles/Project_Default.xml | 14 ++++ .../inspectionProfiles/profiles_settings.xml | 7 ++ tools/mkstubs/.idea/misc.xml | 19 +++++ tools/mkstubs/.idea/modules.xml | 8 ++ tools/mkstubs/.idea/vcs.xml | 6 ++ tools/mkstubs/.project | 17 ---- .../src/com/android/mkstubs/AsmAnalyzer.java | 4 +- .../src/com/android/mkstubs/Filter.java | 8 +- .../android/mkstubs/FilterClassAdapter.java | 2 +- .../mkstubs/src/com/android/mkstubs/Main.java | 5 +- .../com/android/mkstubs/SourceGenerator.java | 6 +- .../com/android/mkstubs/StubGenerator.java | 2 +- .../mkstubs/sourcer/AccessSourcer.java | 2 +- .../mkstubs/sourcer/AnnotationSourcer.java | 5 +- .../android/mkstubs/sourcer/ClassSourcer.java | 4 +- .../android/mkstubs/sourcer/FieldSourcer.java | 5 +- .../mkstubs/sourcer/MethodSourcer.java | 7 +- .../mkstubs/sourcer/SignatureSourcer.java | 7 +- .../android/mkstubs/stubber/ClassStubber.java | 5 +- .../mkstubs/stubber/MethodStubber.java | 9 ++- 28 files changed, 215 insertions(+), 58 deletions(-) delete mode 100644 tools/mkstubs/.classpath create mode 100644 tools/mkstubs/.idea/.name create mode 100644 tools/mkstubs/.idea/codeStyleSettings.xml create mode 100644 tools/mkstubs/.idea/compiler.xml create mode 100644 tools/mkstubs/.idea/copyright/Android.xml create mode 100644 tools/mkstubs/.idea/copyright/profiles_settings.xml create mode 100644 tools/mkstubs/.idea/encodings.xml create mode 100644 tools/mkstubs/.idea/inspectionProfiles/Project_Default.xml create mode 100644 tools/mkstubs/.idea/inspectionProfiles/profiles_settings.xml create mode 100644 tools/mkstubs/.idea/misc.xml create mode 100644 tools/mkstubs/.idea/modules.xml create mode 100644 tools/mkstubs/.idea/vcs.xml delete mode 100644 tools/mkstubs/.project diff --git a/tools/mkstubs/.classpath b/tools/mkstubs/.classpath deleted file mode 100644 index 1b7d34b52..000000000 --- a/tools/mkstubs/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/tools/mkstubs/.gitignore b/tools/mkstubs/.gitignore index fe99505dc..0096b1b3d 100644 --- a/tools/mkstubs/.gitignore +++ b/tools/mkstubs/.gitignore @@ -1,2 +1,3 @@ bin +out diff --git a/tools/mkstubs/.idea/.name b/tools/mkstubs/.idea/.name new file mode 100644 index 000000000..c2f61a9a7 --- /dev/null +++ b/tools/mkstubs/.idea/.name @@ -0,0 +1 @@ +mstubs \ No newline at end of file diff --git a/tools/mkstubs/.idea/codeStyleSettings.xml b/tools/mkstubs/.idea/codeStyleSettings.xml new file mode 100644 index 000000000..89f7b341f --- /dev/null +++ b/tools/mkstubs/.idea/codeStyleSettings.xml @@ -0,0 +1,80 @@ + + + + + + \ No newline at end of file diff --git a/tools/mkstubs/.idea/compiler.xml b/tools/mkstubs/.idea/compiler.xml new file mode 100644 index 000000000..96cc43efa --- /dev/null +++ b/tools/mkstubs/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/mkstubs/.idea/copyright/Android.xml b/tools/mkstubs/.idea/copyright/Android.xml new file mode 100644 index 000000000..d81d75dae --- /dev/null +++ b/tools/mkstubs/.idea/copyright/Android.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/tools/mkstubs/.idea/copyright/profiles_settings.xml b/tools/mkstubs/.idea/copyright/profiles_settings.xml new file mode 100644 index 000000000..20145de48 --- /dev/null +++ b/tools/mkstubs/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/tools/mkstubs/.idea/encodings.xml b/tools/mkstubs/.idea/encodings.xml new file mode 100644 index 000000000..97626ba45 --- /dev/null +++ b/tools/mkstubs/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/tools/mkstubs/.idea/inspectionProfiles/Project_Default.xml b/tools/mkstubs/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 000000000..fd947e643 --- /dev/null +++ b/tools/mkstubs/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,14 @@ + + + + \ No newline at end of file diff --git a/tools/mkstubs/.idea/inspectionProfiles/profiles_settings.xml b/tools/mkstubs/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 000000000..3b312839b --- /dev/null +++ b/tools/mkstubs/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/tools/mkstubs/.idea/misc.xml b/tools/mkstubs/.idea/misc.xml new file mode 100644 index 000000000..97932299e --- /dev/null +++ b/tools/mkstubs/.idea/misc.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/mkstubs/.idea/modules.xml b/tools/mkstubs/.idea/modules.xml new file mode 100644 index 000000000..2f972b2e4 --- /dev/null +++ b/tools/mkstubs/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tools/mkstubs/.idea/vcs.xml b/tools/mkstubs/.idea/vcs.xml new file mode 100644 index 000000000..b2bdec2d7 --- /dev/null +++ b/tools/mkstubs/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/tools/mkstubs/.project b/tools/mkstubs/.project deleted file mode 100644 index 12944f469..000000000 --- a/tools/mkstubs/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - MkStubs - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/tools/mkstubs/src/com/android/mkstubs/AsmAnalyzer.java b/tools/mkstubs/src/com/android/mkstubs/AsmAnalyzer.java index 0b73dc516..1c885f67e 100644 --- a/tools/mkstubs/src/com/android/mkstubs/AsmAnalyzer.java +++ b/tools/mkstubs/src/com/android/mkstubs/AsmAnalyzer.java @@ -33,7 +33,7 @@ import java.util.zip.ZipFile; * Analyzes an input Jar to get all the relevant classes according to the given filter. *

* This is mostly a helper extracted for convenience. Callers will want to use - * {@link #parseInputJar(String)} followed by {@link #filter(Map, Filter)}. + * {@link #parseInputJar(String)} followed by {@link #filter(Map, Filter, Logger)}. */ class AsmAnalyzer { @@ -42,7 +42,7 @@ class AsmAnalyzer { * class name => ASM ClassReader. Class names are in the form "android.view.View". */ Map parseInputJar(String inputJarPath) throws IOException { - TreeMap classes = new TreeMap(); + TreeMap classes = new TreeMap<>(); ZipFile zip = new ZipFile(inputJarPath); Enumeration entries = zip.entries(); diff --git a/tools/mkstubs/src/com/android/mkstubs/Filter.java b/tools/mkstubs/src/com/android/mkstubs/Filter.java index 0dcd8daa0..99e1df9ef 100644 --- a/tools/mkstubs/src/com/android/mkstubs/Filter.java +++ b/tools/mkstubs/src/com/android/mkstubs/Filter.java @@ -30,10 +30,10 @@ import java.util.TreeSet; * pattern to decide if it should be included. */ class Filter { - private TreeSet mIncludePrefix = new TreeSet(); - private TreeSet mIncludeFull = new TreeSet(); - private TreeSet mExcludePrefix = new TreeSet(); - private TreeSet mExcludeFull = new TreeSet(); + private TreeSet mIncludePrefix = new TreeSet<>(); + private TreeSet mIncludeFull = new TreeSet<>(); + private TreeSet mExcludePrefix = new TreeSet<>(); + private TreeSet mExcludeFull = new TreeSet<>(); /** * Returns the set of all full patterns to be included. diff --git a/tools/mkstubs/src/com/android/mkstubs/FilterClassAdapter.java b/tools/mkstubs/src/com/android/mkstubs/FilterClassAdapter.java index e875f10cc..c632a3e9e 100644 --- a/tools/mkstubs/src/com/android/mkstubs/FilterClassAdapter.java +++ b/tools/mkstubs/src/com/android/mkstubs/FilterClassAdapter.java @@ -36,7 +36,7 @@ class FilterClassAdapter extends ClassVisitor { private String mClassName; public FilterClassAdapter(ClassVisitor writer, Filter filter, Logger log) { - super(Opcodes.ASM4, writer); + super(Main.ASM_VERSION, writer); mFilter = filter; mLog = log; } diff --git a/tools/mkstubs/src/com/android/mkstubs/Main.java b/tools/mkstubs/src/com/android/mkstubs/Main.java index 927ff9e10..67d09818d 100644 --- a/tools/mkstubs/src/com/android/mkstubs/Main.java +++ b/tools/mkstubs/src/com/android/mkstubs/Main.java @@ -16,9 +16,8 @@ package com.android.mkstubs; -import com.android.mkstubs.Main.Params; - import org.objectweb.asm.ClassReader; +import org.objectweb.asm.Opcodes; import java.io.BufferedReader; import java.io.File; @@ -34,6 +33,8 @@ import java.util.Map; */ public class Main { + public static final int ASM_VERSION = Opcodes.ASM5; + /** * A struct-like class to hold the various input values (e.g. command-line args) */ diff --git a/tools/mkstubs/src/com/android/mkstubs/SourceGenerator.java b/tools/mkstubs/src/com/android/mkstubs/SourceGenerator.java index 3f7c438c4..9463a3f62 100644 --- a/tools/mkstubs/src/com/android/mkstubs/SourceGenerator.java +++ b/tools/mkstubs/src/com/android/mkstubs/SourceGenerator.java @@ -58,12 +58,8 @@ class SourceGenerator { String name = classNameToJavaPath(cr.getClassName()); - FileWriter fw = null; - try { - fw = createWriter(baseDir, name); + try (FileWriter fw = createWriter(baseDir, name)) { visitClassSource(fw, cr, filter); - } finally { - fw.close(); } } } diff --git a/tools/mkstubs/src/com/android/mkstubs/StubGenerator.java b/tools/mkstubs/src/com/android/mkstubs/StubGenerator.java index 47195fa8a..cf2022dc0 100644 --- a/tools/mkstubs/src/com/android/mkstubs/StubGenerator.java +++ b/tools/mkstubs/src/com/android/mkstubs/StubGenerator.java @@ -55,7 +55,7 @@ class StubGenerator { Map classes, Filter filter) throws IOException { - TreeMap all = new TreeMap(); + TreeMap all = new TreeMap<>(); for (Entry entry : classes.entrySet()) { ClassReader cr = entry.getValue(); diff --git a/tools/mkstubs/src/com/android/mkstubs/sourcer/AccessSourcer.java b/tools/mkstubs/src/com/android/mkstubs/sourcer/AccessSourcer.java index 3b14ea711..090be173b 100644 --- a/tools/mkstubs/src/com/android/mkstubs/sourcer/AccessSourcer.java +++ b/tools/mkstubs/src/com/android/mkstubs/sourcer/AccessSourcer.java @@ -58,7 +58,7 @@ class AccessSourcer { private final int mValue; private final int mFilter; - private Flag(int value, int filter) { + Flag(int value, int filter) { mValue = value; mFilter = filter; } diff --git a/tools/mkstubs/src/com/android/mkstubs/sourcer/AnnotationSourcer.java b/tools/mkstubs/src/com/android/mkstubs/sourcer/AnnotationSourcer.java index ea3ca67c7..56879bbb9 100644 --- a/tools/mkstubs/src/com/android/mkstubs/sourcer/AnnotationSourcer.java +++ b/tools/mkstubs/src/com/android/mkstubs/sourcer/AnnotationSourcer.java @@ -16,8 +16,9 @@ package com.android.mkstubs.sourcer; +import com.android.mkstubs.Main; + import org.objectweb.asm.AnnotationVisitor; -import org.objectweb.asm.Opcodes; /** * An annotation visitor that generates Java source for an annotation. @@ -34,7 +35,7 @@ class AnnotationSourcer extends AnnotationVisitor { } public AnnotationSourcer(Output output, boolean isArray) { - super(Opcodes.ASM4); + super(Main.ASM_VERSION); mOutput = output; mOpenChar = isArray ? "[" : "("; mCloseChar = isArray ? "]" : ")"; diff --git a/tools/mkstubs/src/com/android/mkstubs/sourcer/ClassSourcer.java b/tools/mkstubs/src/com/android/mkstubs/sourcer/ClassSourcer.java index c005b0c4f..85cf48d95 100644 --- a/tools/mkstubs/src/com/android/mkstubs/sourcer/ClassSourcer.java +++ b/tools/mkstubs/src/com/android/mkstubs/sourcer/ClassSourcer.java @@ -16,6 +16,8 @@ package com.android.mkstubs.sourcer; +import com.android.mkstubs.Main; + import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.Attribute; import org.objectweb.asm.ClassVisitor; @@ -34,7 +36,7 @@ public class ClassSourcer extends ClassVisitor { private String mClassName; public ClassSourcer(Output output) { - super(Opcodes.ASM4); + super(Main.ASM_VERSION); mOutput = output; mAccessSourcer = new AccessSourcer(mOutput); } diff --git a/tools/mkstubs/src/com/android/mkstubs/sourcer/FieldSourcer.java b/tools/mkstubs/src/com/android/mkstubs/sourcer/FieldSourcer.java index 68eae7186..428d8e280 100644 --- a/tools/mkstubs/src/com/android/mkstubs/sourcer/FieldSourcer.java +++ b/tools/mkstubs/src/com/android/mkstubs/sourcer/FieldSourcer.java @@ -16,10 +16,11 @@ package com.android.mkstubs.sourcer; +import com.android.mkstubs.Main; + import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.Attribute; import org.objectweb.asm.FieldVisitor; -import org.objectweb.asm.Opcodes; import org.objectweb.asm.Type; import org.objectweb.asm.signature.SignatureReader; @@ -35,7 +36,7 @@ class FieldSourcer extends FieldVisitor { private final String mSignature; public FieldSourcer(Output output, int access, String name, String desc, String signature) { - super(Opcodes.ASM4); + super(Main.ASM_VERSION); mOutput = output; mAccess = access; mName = name; diff --git a/tools/mkstubs/src/com/android/mkstubs/sourcer/MethodSourcer.java b/tools/mkstubs/src/com/android/mkstubs/sourcer/MethodSourcer.java index 26e8870ec..8913b6790 100644 --- a/tools/mkstubs/src/com/android/mkstubs/sourcer/MethodSourcer.java +++ b/tools/mkstubs/src/com/android/mkstubs/sourcer/MethodSourcer.java @@ -16,11 +16,12 @@ package com.android.mkstubs.sourcer; +import com.android.mkstubs.Main; + import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.Attribute; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; import org.objectweb.asm.Type; import org.objectweb.asm.signature.SignatureReader; @@ -43,7 +44,7 @@ class MethodSourcer extends MethodVisitor { public MethodSourcer(Output output, String className, int access, String name, String desc, String signature, String[] exceptions) { - super(Opcodes.ASM4); + super(Main.ASM_VERSION); mOutput = output; mClassName = className; mAccess = access; @@ -223,7 +224,7 @@ class MethodSourcer extends MethodVisitor { } @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { + public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { // pass } diff --git a/tools/mkstubs/src/com/android/mkstubs/sourcer/SignatureSourcer.java b/tools/mkstubs/src/com/android/mkstubs/sourcer/SignatureSourcer.java index ab9094558..e4b2e92da 100644 --- a/tools/mkstubs/src/com/android/mkstubs/sourcer/SignatureSourcer.java +++ b/tools/mkstubs/src/com/android/mkstubs/sourcer/SignatureSourcer.java @@ -16,7 +16,8 @@ package com.android.mkstubs.sourcer; -import org.objectweb.asm.Opcodes; +import com.android.mkstubs.Main; + import org.objectweb.asm.Type; import org.objectweb.asm.signature.SignatureReader; import org.objectweb.asm.signature.SignatureVisitor; @@ -83,7 +84,7 @@ class SignatureSourcer extends SignatureVisitor { * {@link SignatureSourcer}s for each parameters generated when parsing the method parameters * of this signature. Initially empty but not null. */ - private ArrayList mParameters = new ArrayList(); + private ArrayList mParameters = new ArrayList<>(); @@ -91,7 +92,7 @@ class SignatureSourcer extends SignatureVisitor { * Constructs a new {@link SignatureWriter} object. */ public SignatureSourcer() { - super(Opcodes.ASM4); + super(Main.ASM_VERSION); } private StringBuilder getBuf() { diff --git a/tools/mkstubs/src/com/android/mkstubs/stubber/ClassStubber.java b/tools/mkstubs/src/com/android/mkstubs/stubber/ClassStubber.java index f66c7a7f1..bb170cedf 100644 --- a/tools/mkstubs/src/com/android/mkstubs/stubber/ClassStubber.java +++ b/tools/mkstubs/src/com/android/mkstubs/stubber/ClassStubber.java @@ -16,12 +16,13 @@ package com.android.mkstubs.stubber; +import com.android.mkstubs.Main; + import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.Attribute; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.FieldVisitor; import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; /** * A class visitor that generates stubs for all methods of the visited class. @@ -30,7 +31,7 @@ import org.objectweb.asm.Opcodes; public class ClassStubber extends ClassVisitor { public ClassStubber(ClassVisitor cv) { - super(Opcodes.ASM4, cv); + super(Main.ASM_VERSION, cv); } @Override diff --git a/tools/mkstubs/src/com/android/mkstubs/stubber/MethodStubber.java b/tools/mkstubs/src/com/android/mkstubs/stubber/MethodStubber.java index 89aa221ef..e428f7b23 100644 --- a/tools/mkstubs/src/com/android/mkstubs/stubber/MethodStubber.java +++ b/tools/mkstubs/src/com/android/mkstubs/stubber/MethodStubber.java @@ -16,6 +16,8 @@ package com.android.mkstubs.stubber; +import com.android.mkstubs.Main; + import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.Attribute; import org.objectweb.asm.Label; @@ -35,7 +37,7 @@ public class MethodStubber extends MethodVisitor { public MethodStubber(MethodVisitor mw, int access, String name, String desc, String signature, String[] exceptions) { - super(Opcodes.ASM4, mw); + super(Main.ASM_VERSION, mw); } @Override @@ -50,7 +52,8 @@ public class MethodStubber extends MethodVisitor { Opcodes.INVOKESPECIAL, // opcode "java/lang/RuntimeException", // owner "", // name - "(Ljava/lang/String;)V"); // desc + "(Ljava/lang/String;)V", // desc + false); mv.visitInsn(Opcodes.ATHROW); Label l1 = new Label(); mv.visitLabel(l1); @@ -153,7 +156,7 @@ public class MethodStubber extends MethodVisitor { } @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc) { + public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { // skip }