Blob Blame History Raw
From e62e47e891b9f14c612b0176d735b2a66b0217dc Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
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 @@
                 <artifactId>xbean-telnet</artifactId>
                 <version>${project.version}</version>
             </dependency>
-            <dependency>
-                <groupId>org.apache.xbean</groupId>
-                <artifactId>xbean-asm-shaded</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.xbean</groupId>
-                <artifactId>xbean-asm5-shaded</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.xbean</groupId>
-                <artifactId>xbean-asm-util</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.xbean</groupId>
-                <artifactId>xbean-finder-shaded</artifactId>
-                <version>${project.version}</version>
-            </dependency>
 
             <!-- external dependencies -->
 
@@ -412,7 +392,6 @@
         <module>xbean-classloader</module>
         <module>xbean-classpath</module>
         <module>xbean-bundleutils</module>
-        <module>xbean-asm-util</module>
         <module>xbean-finder</module>
         <module>xbean-naming</module>
         <module>xbean-reflect</module>
@@ -420,8 +399,6 @@
         <module>xbean-spring</module>
         <module>xbean-telnet</module>
         <module>maven-xbean-plugin</module>
-        <module>xbean-asm5-shaded</module>
-        <module>xbean-finder-shaded</module>
     </modules>
 
     <reporting>
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 @@
             <version>4.3.1</version>
             <scope>provided</scope>
         </dependency>
-        <dependency>
-            <groupId>org.apache.xbean</groupId>
-            <artifactId>xbean-asm-util</artifactId>
-            <version>${project.version}</version>
-        </dependency>
     </dependencies>
     <build>
         <plugins>
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<AnnotationInfo> 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<AnnotationInfo> 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<AnnotationInfo> 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<AnnotationInfo> 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 @@
             <optional>true</optional>
         </dependency>
         <dependency>
-          <groupId>org.apache.xbean</groupId>
-          <artifactId>xbean-asm-util</artifactId>
-          <scope>provided</scope>
-          <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.xbean</groupId>
-            <artifactId>xbean-asm5-shaded</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
             <groupId>log4j</groupId>
             <artifactId>log4j</artifactId>
             <version>1.2.12</version>
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<Constructor,List<String>> constructorParameters = new HashMap<Constructor,List<String>>();
         private final Map<Method,List<String>> methodParameters = new HashMap<Method,List<String>>();
         private final Map<String,Exception> exceptions = new HashMap<String,Exception>();
@@ -220,6 +220,7 @@ public class AsmParameterNameLoader implements ParameterNameLoader {
         private final Map<String,Constructor> constructorMap = new HashMap<String,Constructor>();
 
         public AllParameterNamesDiscoveringVisitor(Class type, String methodName) {
+            super(Opcodes.ASM5);
             this.methodName = methodName;
 
             List<Method> methods = new ArrayList<Method>(Arrays.asList(type.getMethods()));
@@ -232,6 +233,7 @@ public class AsmParameterNameLoader implements ParameterNameLoader {
         }
 
         public AllParameterNamesDiscoveringVisitor(Class type) {
+            super(Opcodes.ASM5);
             this.methodName = "<init>";
 
             List<Constructor> constructors = new ArrayList<Constructor>(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<Constructor,List<String>> constructorParameters = new HashMap<Constructor,List<String>>();
         private final Map<Method,List<String>> methodParameters = new HashMap<Method,List<String>>();
         private final Map<String,Exception> exceptions = new HashMap<String,Exception>();
@@ -220,6 +220,7 @@ public class XbeanAsmParameterNameLoader implements ParameterNameLoader {
         private final Map<String,Constructor> constructorMap = new HashMap<String,Constructor>();
 
         public AllParameterNamesDiscoveringVisitor(Class type, String methodName) {
+            super(Opcodes.ASM5);
             this.methodName = methodName;
 
             List<Method> methods = new ArrayList<Method>(Arrays.asList(type.getMethods()));
@@ -232,6 +233,7 @@ public class XbeanAsmParameterNameLoader implements ParameterNameLoader {
         }
 
         public AllParameterNamesDiscoveringVisitor(Class type) {
+            super(Opcodes.ASM5);
             this.methodName = "<init>";
 
             List<Constructor> constructors = new ArrayList<Constructor>(Arrays.asList(type.getConstructors()));
@@ -312,4 +314,4 @@ public class XbeanAsmParameterNameLoader implements ParameterNameLoader {
             return null;
         }
     }
-}
\ No newline at end of file
+}
-- 
2.1.0