Author: mbenson
Date: Thu May 29 21:56:55 2014
New Revision: 1598423

URL: http://svn.apache.org/r1598423
Log:
upgrade to latest asm, xbean-finder

Modified:
    
commons/proper/weaver/trunk/modules/normalizer/weaver/src/main/java/org/apache/commons/weaver/normalizer/Normalizer.java
    
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/ActionGenerator.java
    
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/BlueprintingVisitor.java
    
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/InlineNestedPrivilegedCalls.java
    
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java
    
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerCleaner.java
    
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizingVisitor.java
    commons/proper/weaver/trunk/pom.xml
    
commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java

Modified: 
commons/proper/weaver/trunk/modules/normalizer/weaver/src/main/java/org/apache/commons/weaver/normalizer/Normalizer.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/normalizer/weaver/src/main/java/org/apache/commons/weaver/normalizer/Normalizer.java?rev=1598423&r1=1598422&r2=1598423&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/modules/normalizer/weaver/src/main/java/org/apache/commons/weaver/normalizer/Normalizer.java
 (original)
+++ 
commons/proper/weaver/trunk/modules/normalizer/weaver/src/main/java/org/apache/commons/weaver/normalizer/Normalizer.java
 Thu May 29 21:56:55 2014
@@ -85,15 +85,53 @@ public class Normalizer {
         }
     }
 
+    /**
+     * Necessary to resolve supertypes against WeaveEnvironment ClassLoader
+     */
+    private final class CustomClassWriter extends ClassWriter {
+        CustomClassWriter(int flags) {
+            super(flags);
+        }
+
+        CustomClassWriter(ClassReader classReader, int flags) {
+            super(classReader, flags);
+        }
+
+        @Override
+        protected String getCommonSuperClass(String type1, String type2) {
+            Class<?> c;
+            Class<?> d;
+            try {
+                c = Class.forName(type1.replace('/', '.'), false, 
env.classLoader);
+                d = Class.forName(type2.replace('/', '.'), false, 
env.classLoader);
+            } catch (Exception e) {
+                throw new RuntimeException(e.toString());
+            }
+            if (c.isAssignableFrom(d)) {
+                return type1;
+            }
+            if (d.isAssignableFrom(c)) {
+                return type2;
+            }
+            if (c.isInterface() || d.isInterface()) {
+                return "java/lang/Object";
+            }
+            do {
+                c = c.getSuperclass();
+            } while (!c.isAssignableFrom(d));
+            return c.getName().replace('.', '/');
+        }
+    }
+
     private class WriteClass extends ClassVisitor {
         private String className;
 
         WriteClass() {
-            super(Opcodes.ASM4, new ClassWriter(ClassWriter.COMPUTE_FRAMES | 
ClassWriter.COMPUTE_MAXS));
+            super(Opcodes.ASM5, new 
CustomClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS));
         }
 
         WriteClass(final ClassReader reader) {
-            super(Opcodes.ASM4, new ClassWriter(reader, 0));
+            super(Opcodes.ASM5, new CustomClassWriter(reader, 0));
         }
 
         @Override
@@ -255,10 +293,11 @@ public class Normalizer {
                         final String signature, final String[] exceptions) {
                         final MethodVisitor mv = // NOPMD
                                 super.visitMethod(access, name, desc, 
signature, exceptions);
-                        return new MethodVisitor(Opcodes.ASM4, mv) {
+                        return new MethodVisitor(Opcodes.ASM5, mv) {
+
                             @Override
                             public void visitMethodInsn(final int opcode, 
final String owner, final String name,
-                                final String desc) {
+                                final String desc, boolean itf) {
                                 String useDescriptor = desc;
                                 if (INIT.equals(name)) {
                                     final ClassWrapper wrapper = 
entry.getValue().get(owner);
@@ -269,7 +308,7 @@ public class Normalizer {
                                         useDescriptor = new Method(INIT, 
Type.VOID_TYPE, args).getDescriptor();
                                     }
                                 }
-                                super.visitMethodInsn(opcode, owner, name, 
useDescriptor);
+                                super.visitMethodInsn(opcode, owner, name, 
useDescriptor, itf);
                             }
                         };
                     }
@@ -361,7 +400,7 @@ public class Normalizer {
 
             try {
                 bytecode = env.getClassfile(subtype).getInputStream();
-                new ClassReader(bytecode).accept(new 
ClassVisitor(Opcodes.ASM4) {
+                new ClassReader(bytecode).accept(new 
ClassVisitor(Opcodes.ASM5) {
                     String superName;
 
                     @Override
@@ -392,10 +431,10 @@ public class Normalizer {
                     public MethodVisitor visitMethod(final int access, final 
String name, final String desc,
                         final String signature, final String[] exceptions) {
                         if (INIT.equals(name)) {
-                            return new MethodVisitor(Opcodes.ASM4) {
+                            return new MethodVisitor(Opcodes.ASM5) {
                                 @Override
                                 public void visitMethodInsn(final int opcode, 
final String owner, final String name,
-                                    final String desc) {
+                                    final String desc, final boolean itf) {
                                     if (INIT.equals(name) && 
owner.equals(superName)) {
                                         key.setRight(desc);
                                     } else {
@@ -450,6 +489,7 @@ public class Normalizer {
      */
     private String copy(final Pair<String, String> key, final ClassWrapper 
classWrapper) throws IOException,
         ClassNotFoundException {
+        env.debug("Copying %s to %s", key, targetPackage);
         final MessageDigest md5;
         try {
             md5 = MessageDigest.getInstance("MD5");
@@ -476,7 +516,7 @@ public class Normalizer {
             // we're doing most of this by hand; we only read the original 
class to hijack signature, ctor exceptions,
             // etc.:
 
-            reader.accept(new ClassVisitor(Opcodes.ASM4) {
+            reader.accept(new ClassVisitor(Opcodes.ASM5) {
                 Type supertype;
 
                 @Override

Modified: 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/ActionGenerator.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/ActionGenerator.java?rev=1598423&r1=1598422&r2=1598423&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/ActionGenerator.java
 (original)
+++ 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/ActionGenerator.java
 Thu May 29 21:56:55 2014
@@ -62,7 +62,7 @@ class ActionGenerator extends Privilizer
      * @param owner of the action class
      */
     ActionGenerator(final int access, final Method methd, final String[] 
exceptions, final PrivilizingVisitor owner) {
-        owner.privilizer().super(new ClassWriter(ClassWriter.COMPUTE_MAXS | 
ClassWriter.COMPUTE_FRAMES));
+        owner.privilizer().super(ClassWriter.COMPUTE_MAXS | 
ClassWriter.COMPUTE_FRAMES);
         this.methd = methd;
         this.exc = ArrayUtils.isNotEmpty(exceptions);
         this.exceptions = exc ? new Type[] { Type.getType(Exception.class) } : 
null;

Modified: 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/BlueprintingVisitor.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/BlueprintingVisitor.java?rev=1598423&r1=1598422&r2=1598423&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/BlueprintingVisitor.java
 (original)
+++ 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/BlueprintingVisitor.java
 Thu May 29 21:56:55 2014
@@ -73,7 +73,7 @@ class BlueprintingVisitor extends Privil
     BlueprintingVisitor(final Privilizer privilizer,
         final ClassVisitor cv, //NOPMD
         final Privilizing config) {
-        privilizer.super(new ClassNode(Opcodes.ASM4));
+        privilizer.super(new ClassNode(Opcodes.ASM5));
         this.next = cv;
 
         // load up blueprint methods:
@@ -119,7 +119,7 @@ class BlueprintingVisitor extends Privil
     }
 
     private ClassNode read(final String className) {
-        final ClassNode result = new ClassNode(Opcodes.ASM4);
+        final ClassNode result = new ClassNode(Opcodes.ASM5);
         InputStream bytecode = null;
         try {
             bytecode = 
privilizer().env.getClassfile(className).getInputStream();
@@ -171,7 +171,7 @@ class BlueprintingVisitor extends Privil
         // non-public fields accessed
         final Set<FieldAccess> fieldAccesses = new 
LinkedHashSet<FieldAccess>();
 
-        source.accept(new MethodVisitor(Opcodes.ASM4) {
+        source.accept(new MethodVisitor(Opcodes.ASM5) {
             @Override
             public void visitFieldInsn(final int opcode, final String owner, 
final String name, final String desc) {
                 final FieldAccess fieldAccess = 
fieldAccess(Type.getObjectType(owner), name);
@@ -262,21 +262,22 @@ class BlueprintingVisitor extends Privil
 
     private abstract class MethodInvocationHandler extends MethodVisitor {
         MethodInvocationHandler(final MethodVisitor mvr) {
-            super(Opcodes.ASM4, mvr);
+            super(Opcodes.ASM5, mvr);
         }
 
         @Override
-        public void visitMethodInsn(final int opcode, final String owner, 
final String name, final String desc) {
+        public void visitMethodInsn(final int opcode, final String owner, 
final String name, final String desc,
+            final boolean itf) {
             if (opcode == Opcodes.INVOKESTATIC) {
                 final Method methd = new Method(name, desc);
                 final Pair<Type, Method> methodKey = 
Pair.of(Type.getObjectType(owner), methd);
                 if (shouldImport(methodKey)) {
                     final String importedName = importMethod(methodKey);
-                    super.visitMethodInsn(opcode, className, importedName, 
desc);
+                    super.visitMethodInsn(opcode, className, importedName, 
desc, itf);
                     return;
                 }
             }
-            super.visitMethodInsn(opcode, owner, name, desc);
+            super.visitMethodInsn(opcode, owner, name, desc, itf);
         }
 
         abstract boolean shouldImport(Pair<Type, Method> methodKey);
@@ -331,7 +332,7 @@ class BlueprintingVisitor extends Privil
 
         AccessibleAdvisor(final MethodVisitor mvr, final int access, final 
String name, final String desc,
             final List<FieldAccess> fieldAccesses) {
-            super(ASM4, mvr, access, name, desc);
+            super(ASM5, mvr, access, name, desc);
             this.fieldAccesses = fieldAccesses;
         }
 

Modified: 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/InlineNestedPrivilegedCalls.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/InlineNestedPrivilegedCalls.java?rev=1598423&r1=1598422&r2=1598423&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/InlineNestedPrivilegedCalls.java
 (original)
+++ 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/InlineNestedPrivilegedCalls.java
 Thu May 29 21:56:55 2014
@@ -50,7 +50,7 @@ class InlineNestedPrivilegedCalls extend
      */
     InlineNestedPrivilegedCalls(final Privilizer privilizer, final Map<Method, 
String> privilegedMethods,
         final ClassVisitor next) {
-        super(Opcodes.ASM4);
+        super(Opcodes.ASM5);
         this.privilizer = privilizer;
         this.privilegedMethods = privilegedMethods;
         this.next = next;
@@ -60,7 +60,7 @@ class InlineNestedPrivilegedCalls extend
     public void visitEnd() {
         super.visitEnd();
 
-        accept(new ClassVisitor(Opcodes.ASM4, next) {
+        accept(new ClassVisitor(Opcodes.ASM5, next) {
             @Override
             public MethodVisitor visitMethod(final int access, final String 
name, final String desc,
                 final String signature, final String[] exceptions) {
@@ -69,10 +69,10 @@ class InlineNestedPrivilegedCalls extend
                 if (!privilegedMethods.containsValue(name)) {
                     return orig;
                 }
-                return new MethodVisitor(Opcodes.ASM4, orig) {
+                return new MethodVisitor(Opcodes.ASM5, orig) {
                     @Override
                     public void visitMethodInsn(final int opcode, final String 
owner, final String name,
-                        final String desc) {
+                        final String desc, final boolean itf) {
                         String useName = name;
                         if 
(owner.equals(InlineNestedPrivilegedCalls.this.name)) {
                             final Method methd = new Method(name, desc);
@@ -82,7 +82,7 @@ class InlineNestedPrivilegedCalls extend
                                     useName);
                             }
                         }
-                        super.visitMethodInsn(opcode, owner, useName, desc);
+                        super.visitMethodInsn(opcode, owner, useName, desc, 
itf);
                     }
                 };
             }

Modified: 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java?rev=1598423&r1=1598422&r2=1598423&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java
 (original)
+++ 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/Privilizer.java
 Thu May 29 21:56:55 2014
@@ -57,7 +57,7 @@ public class Privilizer {
         }
 
         protected PrivilizerClassVisitor(final ClassVisitor cv) { //NOPMD
-            super(Opcodes.ASM4, cv);
+            super(Opcodes.ASM5, cv);
         }
 
         protected Privilizer privilizer() {
@@ -74,11 +74,54 @@ public class Privilizer {
     }
 
     /**
+     * Necessary to resolve supertypes against WeaveEnvironment ClassLoader
+     */
+    private final class CustomClassWriter extends ClassWriter {
+        CustomClassWriter(int flags) {
+            super(flags);
+        }
+
+        CustomClassWriter(ClassReader classReader, int flags) {
+            super(classReader, flags);
+        }
+
+        @Override
+        protected String getCommonSuperClass(String type1, String type2) {
+            Class<?> c;
+            Class<?> d;
+            try {
+                c = Class.forName(type1.replace('/', '.'), false, 
env.classLoader);
+                d = Class.forName(type2.replace('/', '.'), false, 
env.classLoader);
+            } catch (Exception e) {
+                throw new RuntimeException(e.toString());
+            }
+            if (c.isAssignableFrom(d)) {
+                return type1;
+            }
+            if (d.isAssignableFrom(c)) {
+                return type2;
+            }
+            if (c.isInterface() || d.isInterface()) {
+                return "java/lang/Object";
+            }
+            do {
+                c = c.getSuperclass();
+            } while (!c.isAssignableFrom(d));
+            return c.getName().replace('.', '/');
+        }
+    }
+    
+    /**
      * Convenient {@link ClassVisitor} layer to write classfiles into the 
{@link WeaveEnvironment}.
      */
     class WriteClass extends PrivilizerClassVisitor {
-        WriteClass(final ClassWriter classWriter) {
-            super(classWriter);
+
+        WriteClass(final ClassReader classReader, int flags) {
+            super(new CustomClassWriter(classReader, flags));
+        }
+
+        WriteClass(int flags) {
+            super(new CustomClassWriter(flags));
         }
 
         @Override
@@ -186,7 +229,7 @@ public class Privilizer {
             final ClassReader classReader = new ClassReader(bytecode);
 
             ClassVisitor cvr;
-            cvr = new WriteClass(new ClassWriter(classReader, 
ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS));
+            cvr = new WriteClass(classReader, ClassWriter.COMPUTE_FRAMES | 
ClassWriter.COMPUTE_MAXS);
             cvr = new PrivilizingVisitor(this, cvr);
             cvr = new BlueprintingVisitor(this, cvr, privilizing);
 
@@ -206,7 +249,7 @@ public class Privilizer {
             bytecode = env.getClassfile(type).getInputStream();
             final ClassReader classReader = new ClassReader(bytecode);
             ClassVisitor cv; //NOPMD
-            cv = new WriteClass(new ClassWriter(classReader, 
ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS));
+            cv = new WriteClass(classReader, ClassWriter.COMPUTE_FRAMES | 
ClassWriter.COMPUTE_MAXS);
             cv = new PrivilizingVisitor(this, cv);
 
             classReader.accept(cv, ClassReader.EXPAND_FRAMES);
@@ -233,7 +276,7 @@ public class Privilizer {
         }
         Validate.validState(StringUtils.isBlank(error), error);
 
-        final ClassVisitor checkInnerClasses = new ClassVisitor(Opcodes.ASM4, 
null) {
+        final ClassVisitor checkInnerClasses = new ClassVisitor(Opcodes.ASM5, 
null) {
             final Set<String> innerNames = new HashSet<String>();
 
             @Override

Modified: 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerCleaner.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerCleaner.java?rev=1598423&r1=1598422&r2=1598423&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerCleaner.java
 (original)
+++ 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizerCleaner.java
 Thu May 29 21:56:55 2014
@@ -60,7 +60,7 @@ public class PrivilizerCleaner implement
             try {
                 bytecode = 
privilizer.env.getClassfile(className).getInputStream();
                 final ClassReader classReader = new ClassReader(bytecode);
-                classReader.accept(new ClassVisitor(Opcodes.ASM4) {
+                classReader.accept(new ClassVisitor(Opcodes.ASM5) {
                     @Override
                     public void visit(final int version, final int access, 
final String name, final String signature,
                         final String superName, final String[] interfaces) {

Modified: 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizingVisitor.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizingVisitor.java?rev=1598423&r1=1598422&r2=1598423&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizingVisitor.java
 (original)
+++ 
commons/proper/weaver/trunk/modules/privilizer/weaver/src/main/java/org/apache/commons/weaver/privilizer/PrivilizingVisitor.java
 Thu May 29 21:56:55 2014
@@ -91,7 +91,7 @@ class PrivilizingVisitor extends Privili
         final MethodVisitor originalMethod = super.visitMethod(access, name, 
desc, signature, exceptions);
         final Method methd = new Method(name, desc);
 
-        return new GeneratorAdapter(Opcodes.ASM4, originalMethod, access, 
name, desc) {
+        return new GeneratorAdapter(Opcodes.ASM5, originalMethod, access, 
name, desc) {
 
             @Override
             public AnnotationVisitor visitAnnotation(final String desc, final 
boolean visible) {

Modified: commons/proper/weaver/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/pom.xml?rev=1598423&r1=1598422&r2=1598423&view=diff
==============================================================================
--- commons/proper/weaver/trunk/pom.xml (original)
+++ commons/proper/weaver/trunk/pom.xml Thu May 29 21:56:55 2014
@@ -57,7 +57,7 @@ under the License.
     <commons.jira.id>WEAVER</commons.jira.id>
     <commons.jira.pid>12315320</commons.jira.pid>
     <commons.site.path>commons-weaver</commons.site.path>
-    <asm.version>4.2</asm.version>
+    <asm.version>5.0.3</asm.version>
     
<commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/${commons.site.path}</commons.scmPubUrl>
 
     <ant.version>1.9.3</ant.version>
@@ -200,12 +200,12 @@ under the License.
       <dependency>
         <groupId>org.apache.xbean</groupId>
         <artifactId>xbean-finder-shaded</artifactId>
-        <version>3.14</version>
+        <version>3.18</version>
       </dependency>
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-lang3</artifactId>
-        <version>3.2</version>
+        <version>3.2.1</version>
       </dependency>
       <dependency>
         <groupId>commons-io</groupId>

Modified: 
commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java
URL: 
http://svn.apache.org/viewvc/commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java?rev=1598423&r1=1598422&r2=1598423&view=diff
==============================================================================
--- 
commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java
 (original)
+++ 
commons/proper/weaver/trunk/processor/src/main/java/org/apache/commons/weaver/Finder.java
 Thu May 29 21:56:55 2014
@@ -25,7 +25,6 @@ import java.lang.reflect.AnnotatedElemen
 import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
-import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -35,19 +34,20 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.Validate;
 import org.apache.commons.weaver.model.ScanRequest;
 import org.apache.commons.weaver.model.ScanResult;
 import org.apache.commons.weaver.model.Scanner;
 import org.apache.commons.weaver.model.WeaveInterest;
 import org.apache.commons.weaver.utils.Annotations;
-import org.apache.xbean.asm4.AnnotationVisitor;
-import org.apache.xbean.asm4.ClassReader;
-import org.apache.xbean.asm4.ClassVisitor;
-import org.apache.xbean.asm4.FieldVisitor;
-import org.apache.xbean.asm4.MethodVisitor;
-import org.apache.xbean.asm4.Opcodes;
-import org.apache.xbean.asm4.Type;
+import org.apache.xbean.asm5.AnnotationVisitor;
+import org.apache.xbean.asm5.ClassReader;
+import org.apache.xbean.asm5.ClassVisitor;
+import org.apache.xbean.asm5.FieldVisitor;
+import org.apache.xbean.asm5.MethodVisitor;
+import org.apache.xbean.asm5.Opcodes;
+import org.apache.xbean.asm5.Type;
 import org.apache.xbean.finder.Annotated;
 import org.apache.xbean.finder.AnnotationFinder;
 import org.apache.xbean.finder.Parameter;
@@ -103,7 +103,7 @@ class Finder extends AnnotationFinder im
 
     private abstract class AnnotationCapturer extends AnnotationVisitor {
         public AnnotationCapturer(final AnnotationVisitor wrapped) {
-            super(Opcodes.ASM4, wrapped);
+            super(Opcodes.ASM5, wrapped);
         }
 
         /**
@@ -200,7 +200,7 @@ class Finder extends AnnotationFinder im
         private final InfoBuildingVisitor wrapped;
 
         public Visitor(final InfoBuildingVisitor wrapped) {
-            super(Opcodes.ASM4, wrapped);
+            super(Opcodes.ASM5, wrapped);
             this.wrapped = wrapped;
         }
 
@@ -209,20 +209,25 @@ class Finder extends AnnotationFinder im
             final Object value) {
             final FieldVisitor toWrap = wrapped.visitField(access, name, desc, 
signature, value);
             final ClassInfo classInfo = (ClassInfo) wrapped.getInfo();
+            final Type fieldType = Type.getType(desc);
             FieldInfo testFieldInfo = null;
             // should be the most recently added field, so iterate backward:
             for (int i = classInfo.getFields().size() - 1; i >= 0; i--) {
                 final FieldInfo atI = classInfo.getFields().get(i);
-                if (atI.getName().equals(name) && atI.getType().equals(desc)) {
-                    testFieldInfo = atI;
-                    break;
+                if (atI.getName().equals(name)) {
+                    final String type = atI.getType();
+                    if (StringUtils.equals(type, fieldType.getClassName())
+                        || StringUtils.equals(type, 
fieldType.getDescriptor())) {
+                        testFieldInfo = atI;
+                        break;
+                    }
                 }
             }
             if (testFieldInfo == null) {
                 return toWrap;
             }
             final FieldInfo fieldInfo = testFieldInfo;
-            return new FieldVisitor(Opcodes.ASM4, toWrap) {
+            return new FieldVisitor(Opcodes.ASM5, toWrap) {
                 @Override
                 public AnnotationVisitor visitAnnotation(final String desc, 
final boolean visible) {
                     final AnnotationVisitor toWrap = 
super.visitAnnotation(desc, visible);
@@ -244,25 +249,19 @@ class Finder extends AnnotationFinder im
                 return toWrap;
             }
             MethodInfo testMethodInfo = null;
-            final Member member;
-            try {
-                member = compareMethodInfo.get();
-                // should be the most recently added method, so iterate 
backward:
-                for (int i = classInfo.getMethods().size() - 1; i >= 0; i--) {
-                    final MethodInfo atI = classInfo.getMethods().get(i);
-                    if (atI.getName().equals(name) && 
atI.get().equals(member)) {
-                        testMethodInfo = atI;
-                        break;
-                    }
+            // should be the most recently added method, so iterate backward:
+            for (int i = classInfo.getMethods().size() - 1; i >= 0; i--) {
+                final MethodInfo atI = classInfo.getMethods().get(i);
+                if (atI.getName().equals(name) && 
StringUtils.equals(atI.getDescriptor(), desc)) {
+                    testMethodInfo = atI;
+                    break;
                 }
-            } catch (final ClassNotFoundException e) {
-                return toWrap;
             }
             if (testMethodInfo == null) {
                 return toWrap;
             }
             final MethodInfo methodInfo = testMethodInfo;
-            return new MethodVisitor(Opcodes.ASM4, toWrap) {
+            return new MethodVisitor(Opcodes.ASM5, toWrap) {
                 @Override
                 public AnnotationVisitor visitAnnotation(final String desc, 
final boolean visible) {
                     final AnnotationVisitor toWrap = 
super.visitAnnotation(desc, visible);
@@ -281,13 +280,9 @@ class Finder extends AnnotationFinder im
                     // should be the most recently added parameter, so iterate 
backward:
                     for (int i = methodInfo.getParameters().size() - 1; i >= 
0; i--) {
                         final ParameterInfo atI = 
methodInfo.getParameters().get(i);
-                        try {
-                            if (atI.get().getIndex() == param) {
-                                parameterInfo = atI;
-                                break;
-                            }
-                        } catch (final ClassNotFoundException e) {
-                            continue;
+                        if (atI.getName().equals(Integer.toString(param))) {
+                            parameterInfo = atI;
+                            break;
                         }
                     }
                     return parameterInfo == null ? toWrap : new 
TopLevelAnnotationInflater(desc, toWrap, parameterInfo);


Reply via email to