Class EnhancerClassAdapter


  • public class EnhancerClassAdapter
    extends ClassVisitor
    Adapter visitor class for providing enhancement of an existing class using ASM. Is created with its own ClassWriter, and is passed to a ClassReader to visit the class. All parts of the class to be enhanced are fed through the different visitXXX methods here allowing intervention to either enhance an existing method, or to add on new fields/methods/interfaces.
    • Field Detail

      • enhancer

        protected ClassEnhancer enhancer
        The underlying enhancer.
      • hasDefaultConstructor

        protected boolean hasDefaultConstructor
        Whether a default constructor is present. Set if found, and then processed in visitEnd.
      • hasSerialVersionUID

        protected boolean hasSerialVersionUID
        Whether the field serialVersionUID is present. Set if found, and processed in visitEnd.
      • hasDetachedState

        protected boolean hasDetachedState
        Whether the field xxxDetachedState is present. Set if found, and processed in visitEnd.
      • hasWriteObject

        protected boolean hasWriteObject
        Whether the method writeObject(ObjectOutputStream) is present. Set if found, and processed in visitEnd.
      • hasStaticInitialisation

        protected boolean hasStaticInitialisation
        Whether the class already has a static init block. Set if found, and processed in visitEnd.
      • needsClone

        protected boolean needsClone
    • Constructor Detail

      • EnhancerClassAdapter

        public EnhancerClassAdapter​(ClassVisitor cv,
                                    ClassEnhancer enhancer)
        Constructor. If the writer is null it means we just have to check the enhancement status
        Parameters:
        cv - The writer visitor
        enhancer - ClassEnhancer
    • Method Detail

      • visit

        public void visit​(int version,
                          int access,
                          String name,
                          String signature,
                          String superName,
                          String[] interfaces)
        Method called to visit the header of the class.
        Overrides:
        visit in class ClassVisitor
        Parameters:
        version - Version of this class
        access - Access for the class
        name - name of the class
        signature - Signature of the class
        superName - Superclass name (if any)
        interfaces - Interface(s) implemented
      • visitField

        public FieldVisitor visitField​(int access,
                                       String name,
                                       String desc,
                                       String signature,
                                       Object value)
        Method called when a field of the class is visited.
        Overrides:
        visitField in class ClassVisitor
        Parameters:
        access - Access type
        name - Name of the field
        desc - Descriptor of the field
        signature - Signature of the field
        value - Value of the field
        Returns:
        FieldVisitor
      • visitMethod

        public MethodVisitor visitMethod​(int access,
                                         String name,
                                         String desc,
                                         String signature,
                                         String[] exceptions)
        Method called when a method of the class is visited.
        Overrides:
        visitMethod in class ClassVisitor
        Parameters:
        access - Access for the method
        name - Name of the method
        desc - Descriptor
        signature - Signature
        exceptions - Exceptions that this method is declared to throw
        Returns:
        Visitor to visit this (or null if not wanting to visit it)
      • visitEnd

        public void visitEnd()
        Method called at the end of the class.
        Overrides:
        visitEnd in class ClassVisitor