From e62e47e891b9f14c612b0176d735b2a66b0217dc Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Fri, 21 Nov 2014 09:39:00 +0100 Subject: [PATCH 1/4] Unshade ASM --- pom.xml | 23 ------------ xbean-finder/pom.xml | 5 --- .../org/apache/xbean/finder/AbstractFinder.java | 31 ++++++++-------- .../org/apache/xbean/finder/AnnotationFinder.java | 43 +++++++++++----------- xbean-reflect/pom.xml | 13 ------- .../xbean/recipe/AsmParameterNameLoader.java | 6 ++- .../org/apache/xbean/recipe/ReflectionUtil.java | 8 +--- .../xbean/recipe/XbeanAsmParameterNameLoader.java | 18 +++++---- 8 files changed, 53 insertions(+), 94 deletions(-) diff --git a/pom.xml b/pom.xml index dd4d7ee..0c17645 100644 --- a/pom.xml +++ b/pom.xml @@ -217,26 +217,6 @@ xbean-telnet ${project.version} - - org.apache.xbean - xbean-asm-shaded - ${project.version} - - - org.apache.xbean - xbean-asm5-shaded - ${project.version} - - - org.apache.xbean - xbean-asm-util - ${project.version} - - - org.apache.xbean - xbean-finder-shaded - ${project.version} - @@ -412,7 +392,6 @@ xbean-classloader xbean-classpath xbean-bundleutils - xbean-asm-util xbean-finder xbean-naming xbean-reflect @@ -420,8 +399,6 @@ xbean-spring xbean-telnet maven-xbean-plugin - xbean-asm5-shaded - xbean-finder-shaded diff --git a/xbean-finder/pom.xml b/xbean-finder/pom.xml index 6048ac3..4f20b5f 100644 --- a/xbean-finder/pom.xml +++ b/xbean-finder/pom.xml @@ -58,11 +58,6 @@ 4.3.1 provided - - org.apache.xbean - xbean-asm-util - ${project.version} - diff --git a/xbean-finder/src/main/java/org/apache/xbean/finder/AbstractFinder.java b/xbean-finder/src/main/java/org/apache/xbean/finder/AbstractFinder.java index 8beb72b..3639bee 100644 --- a/xbean-finder/src/main/java/org/apache/xbean/finder/AbstractFinder.java +++ b/xbean-finder/src/main/java/org/apache/xbean/finder/AbstractFinder.java @@ -34,10 +34,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.xbean.asm5.original.commons.EmptyVisitor; import org.apache.xbean.finder.util.SingleLinkedList; import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.ClassReader; +import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.FieldVisitor; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; @@ -908,15 +908,17 @@ public abstract class AbstractFinder implements IAnnotationFinder { } } - public class InfoBuildingVisitor extends EmptyVisitor { + public class InfoBuildingVisitor extends ClassVisitor { private Info info; private String path; public InfoBuildingVisitor(String path) { + super(Opcodes.ASM5); this.path = path; } public InfoBuildingVisitor(Info info) { + super(Opcodes.ASM5); this.info = info; } @@ -949,7 +951,7 @@ public abstract class AbstractFinder implements IAnnotationFinder { AnnotationInfo annotationInfo = new AnnotationInfo(desc); info.getAnnotations().add(annotationInfo); getAnnotationInfos(annotationInfo.getName()).add(info); - return new InfoBuildingVisitor(annotationInfo).annotationVisitor(); + return null; } @Override @@ -957,24 +959,23 @@ public abstract class AbstractFinder implements IAnnotationFinder { ClassInfo classInfo = ((ClassInfo) info); FieldInfo fieldInfo = new FieldInfo(classInfo, name, desc); classInfo.getFields().add(fieldInfo); - return new InfoBuildingVisitor(fieldInfo).fieldVisitor(); + return null; } @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { ClassInfo classInfo = ((ClassInfo) info); - MethodInfo methodInfo = new MethodInfo(classInfo, name, desc); + final MethodInfo methodInfo = new MethodInfo(classInfo, name, desc); classInfo.getMethods().add(methodInfo); - return new InfoBuildingVisitor(methodInfo).methodVisitor(); - } - - @Override - public AnnotationVisitor visitMethodParameterAnnotation(int param, String desc, boolean visible) { - MethodInfo methodInfo = ((MethodInfo) info); - List annotationInfos = methodInfo.getParameterAnnotations(param); - AnnotationInfo annotationInfo = new AnnotationInfo(desc); - annotationInfos.add(annotationInfo); - return new InfoBuildingVisitor(annotationInfo).annotationVisitor(); + return new MethodVisitor(Opcodes.ASM5) { + @Override + public AnnotationVisitor visitParameterAnnotation(int param, String desc, boolean visible) { + List annotationInfos = methodInfo.getParameterAnnotations(param); + AnnotationInfo annotationInfo = new AnnotationInfo(desc); + annotationInfos.add(annotationInfo); + return null; + } + }; } } diff --git a/xbean-finder/src/main/java/org/apache/xbean/finder/AnnotationFinder.java b/xbean-finder/src/main/java/org/apache/xbean/finder/AnnotationFinder.java index ea96d78..48b2262 100644 --- a/xbean-finder/src/main/java/org/apache/xbean/finder/AnnotationFinder.java +++ b/xbean-finder/src/main/java/org/apache/xbean/finder/AnnotationFinder.java @@ -20,13 +20,13 @@ package org.apache.xbean.finder; -import org.apache.xbean.asm5.original.commons.EmptyVisitor; import org.apache.xbean.finder.archive.Archive; import org.apache.xbean.finder.util.Classes; import org.apache.xbean.finder.util.SingleLinkedList; import org.objectweb.asm.AnnotationVisitor; import org.objectweb.asm.Attribute; import org.objectweb.asm.ClassReader; +import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.FieldVisitor; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; @@ -1755,13 +1755,15 @@ public class AnnotationFinder implements IAnnotationFinder { initAnnotationInfos(annotationInfo.getName()).add(info); } - public class InfoBuildingVisitor extends EmptyVisitor { + public class InfoBuildingVisitor extends ClassVisitor { private Info info; public InfoBuildingVisitor() { + super(Opcodes.ASM5); } public InfoBuildingVisitor(Info info) { + super(Opcodes.ASM5); this.info = info; } @@ -1809,7 +1811,7 @@ public class AnnotationFinder implements IAnnotationFinder { AnnotationInfo annotationInfo = new AnnotationInfo(desc); info.getAnnotations().add(annotationInfo); index(annotationInfo, info); - return new InfoBuildingVisitor(annotationInfo).annotationVisitor(); + return null; } @Override @@ -1817,32 +1819,31 @@ public class AnnotationFinder implements IAnnotationFinder { ClassInfo classInfo = ((ClassInfo) info); FieldInfo fieldInfo = new FieldInfo(classInfo, name, desc); classInfo.getFields().add(fieldInfo); - return new InfoBuildingVisitor(fieldInfo).fieldVisitor(); + return null; } @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { ClassInfo classInfo = ((ClassInfo) info); - MethodInfo methodInfo = new MethodInfo(classInfo, name, desc); + final MethodInfo methodInfo = new MethodInfo(classInfo, name, desc); classInfo.getMethods().add(methodInfo); - return new InfoBuildingVisitor(methodInfo).methodVisitor(); + return new MethodVisitor(Opcodes.ASM5) { + @Override + public AnnotationVisitor visitParameterAnnotation(int param, String desc, boolean visible) { + List annotationInfos = methodInfo.getParameterAnnotations(param); + AnnotationInfo annotationInfo = new AnnotationInfo(desc); + annotationInfos.add(annotationInfo); + + ParameterInfo parameterInfo = new ParameterInfo(methodInfo, param); + methodInfo.getParameters().add(parameterInfo); + index(annotationInfo, parameterInfo); + + return null; + } + }; } - - @Override - public AnnotationVisitor visitMethodParameterAnnotation(int param, String desc, boolean visible) { - MethodInfo methodInfo = ((MethodInfo) info); - List annotationInfos = methodInfo.getParameterAnnotations(param); - AnnotationInfo annotationInfo = new AnnotationInfo(desc); - annotationInfos.add(annotationInfo); - - ParameterInfo parameterInfo = new ParameterInfo(methodInfo, param); - methodInfo.getParameters().add(parameterInfo); - index(annotationInfo, parameterInfo); - - return new InfoBuildingVisitor(annotationInfo).annotationVisitor(); - } } public static class GenericAwareInfoBuildingVisitor extends SignatureVisitor { @@ -2007,4 +2008,4 @@ public class AnnotationFinder implements IAnnotationFinder { } -} \ No newline at end of file +} diff --git a/xbean-reflect/pom.xml b/xbean-reflect/pom.xml index e9e51c7..0b80389 100644 --- a/xbean-reflect/pom.xml +++ b/xbean-reflect/pom.xml @@ -47,19 +47,6 @@ true - org.apache.xbean - xbean-asm-util - provided - true - - - org.apache.xbean - xbean-asm5-shaded - ${project.version} - provided - true - - log4j log4j 1.2.12 diff --git a/xbean-reflect/src/main/java/org/apache/xbean/recipe/AsmParameterNameLoader.java b/xbean-reflect/src/main/java/org/apache/xbean/recipe/AsmParameterNameLoader.java index 6859cad..f513b77 100644 --- a/xbean-reflect/src/main/java/org/apache/xbean/recipe/AsmParameterNameLoader.java +++ b/xbean-reflect/src/main/java/org/apache/xbean/recipe/AsmParameterNameLoader.java @@ -17,8 +17,8 @@ */ package org.apache.xbean.recipe; -import org.apache.xbean.asm5.original.commons.EmptyVisitor; import org.objectweb.asm.ClassReader; +import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; @@ -211,7 +211,7 @@ public class AsmParameterNameLoader implements ParameterNameLoader { } } - private static class AllParameterNamesDiscoveringVisitor extends EmptyVisitor { + private static class AllParameterNamesDiscoveringVisitor extends ClassVisitor { private final Map> constructorParameters = new HashMap>(); private final Map> methodParameters = new HashMap>(); private final Map exceptions = new HashMap(); @@ -220,6 +220,7 @@ public class AsmParameterNameLoader implements ParameterNameLoader { private final Map constructorMap = new HashMap(); public AllParameterNamesDiscoveringVisitor(Class type, String methodName) { + super(Opcodes.ASM5); this.methodName = methodName; List methods = new ArrayList(Arrays.asList(type.getMethods())); @@ -232,6 +233,7 @@ public class AsmParameterNameLoader implements ParameterNameLoader { } public AllParameterNamesDiscoveringVisitor(Class type) { + super(Opcodes.ASM5); this.methodName = ""; List constructors = new ArrayList(Arrays.asList(type.getConstructors())); diff --git a/xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java b/xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java index 84ded16..39dfd58 100644 --- a/xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java +++ b/xbean-reflect/src/main/java/org/apache/xbean/recipe/ReflectionUtil.java @@ -41,13 +41,7 @@ public final class ReflectionUtil { private static ParameterNameLoader parameterNamesLoader; static { - if (isClassAvailable("org.apache.xbean.asm5.ClassReader")) { - parameterNamesLoader = new XbeanAsmParameterNameLoader(); - } else if (isClassAvailable("org.objectweb.asm.ClassReader")) { - parameterNamesLoader = new AsmParameterNameLoader(); - } else if (isClassAvailable("org.apache.xbean.asm.ClassReader") || isClassAvailable("org.apache.xbean.asm4.ClassReader")) { - throw new RuntimeException("Your xbean-asm-shade is too old, please upgrade to xbean-asm5-shade"); - } + parameterNamesLoader = new XbeanAsmParameterNameLoader(); } private ReflectionUtil() { diff --git a/xbean-reflect/src/main/java/org/apache/xbean/recipe/XbeanAsmParameterNameLoader.java b/xbean-reflect/src/main/java/org/apache/xbean/recipe/XbeanAsmParameterNameLoader.java index 4a89c44..6242dd3 100644 --- a/xbean-reflect/src/main/java/org/apache/xbean/recipe/XbeanAsmParameterNameLoader.java +++ b/xbean-reflect/src/main/java/org/apache/xbean/recipe/XbeanAsmParameterNameLoader.java @@ -17,12 +17,12 @@ */ package org.apache.xbean.recipe; -import org.apache.xbean.asm5.shade.commons.EmptyVisitor; -import org.apache.xbean.asm5.ClassReader; -import org.apache.xbean.asm5.Label; -import org.apache.xbean.asm5.MethodVisitor; -import org.apache.xbean.asm5.Opcodes; -import org.apache.xbean.asm5.Type; +import org.objectweb.asm.ClassReader; +import org.objectweb.asm.ClassVisitor; +import org.objectweb.asm.Label; +import org.objectweb.asm.MethodVisitor; +import org.objectweb.asm.Opcodes; +import org.objectweb.asm.Type; import java.io.IOException; import java.io.InputStream; @@ -211,7 +211,7 @@ public class XbeanAsmParameterNameLoader implements ParameterNameLoader { } } - private static class AllParameterNamesDiscoveringVisitor extends EmptyVisitor { + private static class AllParameterNamesDiscoveringVisitor extends ClassVisitor { private final Map> constructorParameters = new HashMap>(); private final Map> methodParameters = new HashMap>(); private final Map exceptions = new HashMap(); @@ -220,6 +220,7 @@ public class XbeanAsmParameterNameLoader implements ParameterNameLoader { private final Map constructorMap = new HashMap(); public AllParameterNamesDiscoveringVisitor(Class type, String methodName) { + super(Opcodes.ASM5); this.methodName = methodName; List methods = new ArrayList(Arrays.asList(type.getMethods())); @@ -232,6 +233,7 @@ public class XbeanAsmParameterNameLoader implements ParameterNameLoader { } public AllParameterNamesDiscoveringVisitor(Class type) { + super(Opcodes.ASM5); this.methodName = ""; List constructors = new ArrayList(Arrays.asList(type.getConstructors())); @@ -312,4 +314,4 @@ public class XbeanAsmParameterNameLoader implements ParameterNameLoader { return null; } } -} \ No newline at end of file +} -- 2.1.0