Package org.datanucleus.enhancer
Class EnhancerClassAdapter
java.lang.Object
org.datanucleus.enhancer.asm.ClassVisitor
org.datanucleus.enhancer.EnhancerClassAdapter
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 Summary
FieldsModifier and TypeFieldDescriptionprotected ClassEnhancer
The underlying enhancer.protected boolean
Whether a default constructor is present.protected boolean
Whether the field xxxDetachedState is present.protected boolean
Whether the field serialVersionUID is present.protected boolean
Whether the class already has a static init block.protected boolean
Whether the method writeObject(ObjectOutputStream) is present.protected boolean
Fields inherited from class org.datanucleus.enhancer.asm.ClassVisitor
api, cv
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
visit
(int version, int access, String name, String signature, String superName, String[] interfaces) Method called to visit the header of the class.void
visitEnd()
Method called at the end of the class.visitField
(int access, String name, String desc, String signature, Object value) Method called when a field of the class is visited.visitMethod
(int access, String name, String desc, String signature, String[] exceptions) Method called when a method of the class is visited.Methods inherited from class org.datanucleus.enhancer.asm.ClassVisitor
getDelegate, visitAnnotation, visitAttribute, visitInnerClass, visitModule, visitNestHost, visitNestMember, visitOuterClass, visitPermittedSubclass, visitRecordComponent, visitSource, visitTypeAnnotation
-
Field Details
-
enhancer
The underlying enhancer. -
hasDefaultConstructor
protected boolean hasDefaultConstructorWhether a default constructor is present. Set if found, and then processed in visitEnd. -
hasSerialVersionUID
protected boolean hasSerialVersionUIDWhether the field serialVersionUID is present. Set if found, and processed in visitEnd. -
hasDetachedState
protected boolean hasDetachedStateWhether the field xxxDetachedState is present. Set if found, and processed in visitEnd. -
hasWriteObject
protected boolean hasWriteObjectWhether the method writeObject(ObjectOutputStream) is present. Set if found, and processed in visitEnd. -
hasStaticInitialisation
protected boolean hasStaticInitialisationWhether the class already has a static init block. Set if found, and processed in visitEnd. -
needsClone
protected boolean needsClone
-
-
Constructor Details
-
EnhancerClassAdapter
Constructor. If the writer is null it means we just have to check the enhancement status- Parameters:
cv
- The writer visitorenhancer
- 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 classClassVisitor
- Parameters:
version
- Version of this classaccess
- Access for the classname
- name of the classsignature
- Signature of the classsuperName
- 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 classClassVisitor
- Parameters:
access
- Access typename
- Name of the fielddesc
- Descriptor of the fieldsignature
- Signature of the fieldvalue
- 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 classClassVisitor
- Parameters:
access
- Access for the methodname
- Name of the methoddesc
- Descriptorsignature
- Signatureexceptions
- 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 classClassVisitor
-