From 7fb59f3226eec55f1bc7473b0569b45cba54b918 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 23 Mar 2009 11:29:29 +0000 Subject: [PATCH] implement ASM ClassVisitor interface directly --- .../ClassMetadataReadingVisitor.java | 46 ++++++++++++++----- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/ClassMetadataReadingVisitor.java b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/ClassMetadataReadingVisitor.java index f10786d4c4c..906d85d7dae 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/type/classreading/ClassMetadataReadingVisitor.java +++ b/org.springframework.core/src/main/java/org/springframework/core/type/classreading/ClassMetadataReadingVisitor.java @@ -16,9 +16,13 @@ package org.springframework.core.type.classreading; -import org.springframework.asm.ClassAdapter; +import org.springframework.asm.AnnotationVisitor; +import org.springframework.asm.Attribute; +import org.springframework.asm.ClassVisitor; +import org.springframework.asm.FieldVisitor; +import org.springframework.asm.MethodVisitor; import org.springframework.asm.Opcodes; -import org.springframework.asm.commons.EmptyVisitor; + import org.springframework.core.type.ClassMetadata; import org.springframework.util.ClassUtils; @@ -33,7 +37,7 @@ import org.springframework.util.ClassUtils; * @author Ramnivas Laddad * @since 2.5 */ -class ClassMetadataReadingVisitor extends ClassAdapter implements ClassMetadata { +class ClassMetadataReadingVisitor implements ClassVisitor, ClassMetadata { private String className; @@ -49,12 +53,7 @@ class ClassMetadataReadingVisitor extends ClassAdapter implements ClassMetadata private String[] interfaces; - public ClassMetadataReadingVisitor() - { - super(new EmptyVisitor()); - } - - @Override + public void visit(int version, int access, String name, String signature, String supername, String[] interfaces) { this.className = ClassUtils.convertResourcePathToClassName(name); this.isInterface = ((access & Opcodes.ACC_INTERFACE) != 0); @@ -68,12 +67,10 @@ class ClassMetadataReadingVisitor extends ClassAdapter implements ClassMetadata } } - @Override public void visitOuterClass(String owner, String name, String desc) { this.enclosingClassName = ClassUtils.convertResourcePathToClassName(owner); } - @Override public void visitInnerClass(String name, String outerName, String innerName, int access) { if (outerName != null && this.className.equals(ClassUtils.convertResourcePathToClassName(name))) { this.enclosingClassName = ClassUtils.convertResourcePathToClassName(outerName); @@ -81,6 +78,33 @@ class ClassMetadataReadingVisitor extends ClassAdapter implements ClassMetadata } } + public void visitSource(String source, String debug) { + // no-op + } + + public AnnotationVisitor visitAnnotation(String desc, boolean visible) { + // no-op + return null; + } + + public void visitAttribute(Attribute attr) { + // no-op + } + + public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { + // no-op + return null; + } + + public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { + // no-op + return null; + } + + public void visitEnd() { + // no-op + } + public String getClassName() { return this.className;