Class EnhancerClassAdapter

java.lang.Object
org.datanucleus.enhancer.asm.ClassVisitor
org.datanucleus.enhancer.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 Details

    • 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 Details

    • 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 Details

    • 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