org.springframework.core.type.classreading
Class ClassMetadataReadingVisitor

java.lang.Object
  extended by org.springframework.core.type.classreading.ClassMetadataReadingVisitor
All Implemented Interfaces:
ClassMetadata
Direct Known Subclasses:
AnnotationMetadataReadingVisitor

 class ClassMetadataReadingVisitor
extends java.lang.Object
implements ClassMetadata

ASM class visitor which looks only for the class name and implemented types, exposing them through the ClassMetadata interface.

Since:
2.5
Author:
Rod Johnson, Costin Leau, Mark Fisher, Ramnivas Laddad

Field Summary
private  java.lang.String className
           
private  java.lang.String enclosingClassName
           
private  boolean independentInnerClass
           
private  java.lang.String[] interfaces
           
private  boolean isAbstract
           
private  boolean isFinal
           
private  boolean isInterface
           
private  java.util.Set<java.lang.String> memberClassNames
           
private  java.lang.String superClassName
           
 
Constructor Summary
ClassMetadataReadingVisitor()
           
 
Method Summary
 java.lang.String getClassName()
          Return the name of the underlying class.
 java.lang.String getEnclosingClassName()
          Return the name of the enclosing class of the underlying class, or null if the underlying class is a top-level class.
 java.lang.String[] getInterfaceNames()
          Return the names of all interfaces that the underlying class implements, or an empty array if there are none.
 java.lang.String[] getMemberClassNames()
          Return the names of all classes declared as members of the class represented by this ClassMetadata object.
 java.lang.String getSuperClassName()
          Return the name of the super class of the underlying class, or null if there is no super class defined.
 boolean hasEnclosingClass()
          Return whether the underlying class has an enclosing class (i.e.
 boolean hasSuperClass()
          Return whether the underlying class has a super class.
 boolean isAbstract()
          Return whether the underlying class is marked as abstract.
 boolean isConcrete()
          Return whether the underlying class represents a concrete class, i.e.
 boolean isFinal()
          Return whether the underlying class is marked as 'final'.
 boolean isIndependent()
          Determine whether the underlying class is independent, i.e.
 boolean isInterface()
          Return whether the underlying class represents an interface.
 void visit(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String supername, java.lang.String[] interfaces)
           
 AnnotationVisitor visitAnnotation(java.lang.String desc, boolean visible)
           
 void visitAttribute(Attribute attr)
           
 void visitEnd()
           
 FieldVisitor visitField(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.Object value)
           
 void visitInnerClass(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int access)
           
 MethodVisitor visitMethod(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)
           
 void visitOuterClass(java.lang.String owner, java.lang.String name, java.lang.String desc)
           
 void visitSource(java.lang.String source, java.lang.String debug)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

className

private java.lang.String className

isInterface

private boolean isInterface

isAbstract

private boolean isAbstract

isFinal

private boolean isFinal

enclosingClassName

private java.lang.String enclosingClassName

independentInnerClass

private boolean independentInnerClass

superClassName

private java.lang.String superClassName

interfaces

private java.lang.String[] interfaces

memberClassNames

private java.util.Set<java.lang.String> memberClassNames
Constructor Detail

ClassMetadataReadingVisitor

ClassMetadataReadingVisitor()
Method Detail

visit

public void visit(int version,
                  int access,
                  java.lang.String name,
                  java.lang.String signature,
                  java.lang.String supername,
                  java.lang.String[] interfaces)

visitOuterClass

public void visitOuterClass(java.lang.String owner,
                            java.lang.String name,
                            java.lang.String desc)

visitInnerClass

public void visitInnerClass(java.lang.String name,
                            java.lang.String outerName,
                            java.lang.String innerName,
                            int access)

visitSource

public void visitSource(java.lang.String source,
                        java.lang.String debug)

visitAnnotation

public AnnotationVisitor visitAnnotation(java.lang.String desc,
                                         boolean visible)

visitAttribute

public void visitAttribute(Attribute attr)

visitField

public FieldVisitor visitField(int access,
                               java.lang.String name,
                               java.lang.String desc,
                               java.lang.String signature,
                               java.lang.Object value)

visitMethod

public MethodVisitor visitMethod(int access,
                                 java.lang.String name,
                                 java.lang.String desc,
                                 java.lang.String signature,
                                 java.lang.String[] exceptions)

visitEnd

public void visitEnd()

getClassName

public java.lang.String getClassName()
Description copied from interface: ClassMetadata
Return the name of the underlying class.

Specified by:
getClassName in interface ClassMetadata

isInterface

public boolean isInterface()
Description copied from interface: ClassMetadata
Return whether the underlying class represents an interface.

Specified by:
isInterface in interface ClassMetadata

isAbstract

public boolean isAbstract()
Description copied from interface: ClassMetadata
Return whether the underlying class is marked as abstract.

Specified by:
isAbstract in interface ClassMetadata

isConcrete

public boolean isConcrete()
Description copied from interface: ClassMetadata
Return whether the underlying class represents a concrete class, i.e. neither an interface nor an abstract class.

Specified by:
isConcrete in interface ClassMetadata

isFinal

public boolean isFinal()
Description copied from interface: ClassMetadata
Return whether the underlying class is marked as 'final'.

Specified by:
isFinal in interface ClassMetadata

isIndependent

public boolean isIndependent()
Description copied from interface: ClassMetadata
Determine whether the underlying class is independent, i.e. whether it is a top-level class or a nested class (static inner class) that can be constructed independent from an enclosing class.

Specified by:
isIndependent in interface ClassMetadata

hasEnclosingClass

public boolean hasEnclosingClass()
Description copied from interface: ClassMetadata
Return whether the underlying class has an enclosing class (i.e. the underlying class is an inner/nested class or a local class within a method).

If this method returns false, then the underlying class is a top-level class.

Specified by:
hasEnclosingClass in interface ClassMetadata

getEnclosingClassName

public java.lang.String getEnclosingClassName()
Description copied from interface: ClassMetadata
Return the name of the enclosing class of the underlying class, or null if the underlying class is a top-level class.

Specified by:
getEnclosingClassName in interface ClassMetadata

hasSuperClass

public boolean hasSuperClass()
Description copied from interface: ClassMetadata
Return whether the underlying class has a super class.

Specified by:
hasSuperClass in interface ClassMetadata

getSuperClassName

public java.lang.String getSuperClassName()
Description copied from interface: ClassMetadata
Return the name of the super class of the underlying class, or null if there is no super class defined.

Specified by:
getSuperClassName in interface ClassMetadata

getInterfaceNames

public java.lang.String[] getInterfaceNames()
Description copied from interface: ClassMetadata
Return the names of all interfaces that the underlying class implements, or an empty array if there are none.

Specified by:
getInterfaceNames in interface ClassMetadata

getMemberClassNames

public java.lang.String[] getMemberClassNames()
Description copied from interface: ClassMetadata
Return the names of all classes declared as members of the class represented by this ClassMetadata object. This includes public, protected, default (package) access, and private classes and interfaces declared by the class, but excludes inherited classes and interfaces. An empty array is returned if no member classes or interfaces exist.

Specified by:
getMemberClassNames in interface ClassMetadata