Package net.bytebuddy.utility.visitor
Class MetadataAwareClassVisitor
- java.lang.Object
-
- org.objectweb.asm.ClassVisitor
-
- net.bytebuddy.utility.visitor.MetadataAwareClassVisitor
-
- Direct Known Subclasses:
TypeWriter.Default.ForInlining.WithDecorationOnly.DecorationClassVisitor
,TypeWriter.Default.ForInlining.WithFullProcessing.RedefinitionClassVisitor
public abstract class MetadataAwareClassVisitor extends org.objectweb.asm.ClassVisitor
A class visitor that traces invocations of visitation methods and notifies if a nest host or outer class was not visited.
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
triggerAttributes
true
if the attribute visitation is not yet completed.private boolean
triggerNestHost
true
if the nest host was not yet visited.private boolean
triggerOuterClass
true
if the outer class was not yet visited.private boolean
triggerPermittedSubclasses
true
if the permitted subclass visitation is not yet completed.private boolean
triggerRecordComponents
true
if the record component visitation is not yet triggered.
-
Constructor Summary
Constructors Modifier Constructor Description protected
MetadataAwareClassVisitor(int api, org.objectweb.asm.ClassVisitor classVisitor)
Creates a metadata aware class visitor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
considerTriggerAfterAttributes()
Considers triggering the after attribute visitation.private void
considerTriggerAfterPermittedSubclasses()
Considers triggering the after permitted subclass visitation.private void
considerTriggerAfterRecordComponents()
Considers triggering the after record components visitation.private void
considerTriggerNestHost()
Considers triggering a nest host visitation.private void
considerTriggerOuterClass()
Considers triggering an outer class visitation.protected void
onAfterAttributes()
Invoked if the attribute visitation is about to complete.protected void
onAfterPermittedSubclasses()
Invoked if the permitted subclass visitation is about to complete.protected void
onAfterRecordComponents()
Invoked after all record components are visited or none is found.protected void
onNestHost()
Invoked if the nest host was not visited.protected void
onOuterType()
Invoked if the outer class was not visited.protected org.objectweb.asm.AnnotationVisitor
onVisitAnnotation(java.lang.String descriptor, boolean visible)
An order-sensitive invocation ofClassVisitor.visitAnnotation(String, boolean)
.protected void
onVisitAttribute(org.objectweb.asm.Attribute attribute)
An order-sensitive invocation ofClassVisitor.visitAttribute(Attribute)
.protected void
onVisitEnd()
An order-sensitive invocation ofClassVisitor.visitEnd()
.protected org.objectweb.asm.FieldVisitor
onVisitField(int modifiers, java.lang.String internalName, java.lang.String descriptor, java.lang.String signature, java.lang.Object defaultValue)
An order-sensitive invocation ofClassVisitor.visitField(int, String, String, String, Object)
.protected void
onVisitInnerClass(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int modifiers)
An order-sensitive invocation ofClassVisitor.visitInnerClass(String, String, String, int)
.protected org.objectweb.asm.MethodVisitor
onVisitMethod(int modifiers, java.lang.String internalName, java.lang.String descriptor, java.lang.String signature, java.lang.String[] exception)
An order-sensitive invocation ofClassVisitor.visitMethod(int, String, String, String, String[])
.protected void
onVisitNestHost(java.lang.String nestHost)
An order-sensitive invocation ofClassVisitor.visitNestHost(String)
.protected void
onVisitNestMember(java.lang.String nestMember)
An order-sensitive invocation ofClassVisitor.visitNestMember(String)
.protected void
onVisitOuterClass(java.lang.String owner, java.lang.String name, java.lang.String descriptor)
An order-sensitive invocation ofClassVisitor.visitOuterClass(String, String, String)
.protected void
onVisitPermittedSubclass(java.lang.String permittedSubclass)
An order-sensitive invocation ofClassVisitor#visitPermittedSubclass
.protected org.objectweb.asm.RecordComponentVisitor
onVisitRecordComponent(java.lang.String name, java.lang.String descriptor, java.lang.String signature)
An order-sensitive invocation ofClassVisitor.visitRecordComponent(String, String, String)
.protected org.objectweb.asm.AnnotationVisitor
onVisitTypeAnnotation(int typeReference, org.objectweb.asm.TypePath typePath, java.lang.String descriptor, boolean visible)
An order-sensitive invocation ofClassVisitor.visitTypeAnnotation(int, TypePath, String, boolean)
.org.objectweb.asm.AnnotationVisitor
visitAnnotation(java.lang.String descriptor, boolean visible)
void
visitAttribute(org.objectweb.asm.Attribute attribute)
void
visitEnd()
org.objectweb.asm.FieldVisitor
visitField(int modifiers, java.lang.String internalName, java.lang.String descriptor, java.lang.String signature, java.lang.Object defaultValue)
void
visitInnerClass(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int modifiers)
org.objectweb.asm.MethodVisitor
visitMethod(int modifiers, java.lang.String internalName, java.lang.String descriptor, java.lang.String signature, java.lang.String[] exception)
void
visitNestHost(java.lang.String nestHost)
void
visitNestMember(java.lang.String nestMember)
void
visitOuterClass(java.lang.String owner, java.lang.String name, java.lang.String descriptor)
void
visitPermittedSubclass(java.lang.String permittedSubclass)
org.objectweb.asm.RecordComponentVisitor
visitRecordComponent(java.lang.String name, java.lang.String descriptor, java.lang.String signature)
org.objectweb.asm.AnnotationVisitor
visitTypeAnnotation(int typeReference, org.objectweb.asm.TypePath typePath, java.lang.String descriptor, boolean visible)
-
-
-
Field Detail
-
triggerNestHost
private boolean triggerNestHost
true
if the nest host was not yet visited.
-
triggerPermittedSubclasses
private boolean triggerPermittedSubclasses
true
if the permitted subclass visitation is not yet completed.
-
triggerOuterClass
private boolean triggerOuterClass
true
if the outer class was not yet visited.
-
triggerAttributes
private boolean triggerAttributes
true
if the attribute visitation is not yet completed.
-
triggerRecordComponents
private boolean triggerRecordComponents
true
if the record component visitation is not yet triggered.
-
-
Method Detail
-
onNestHost
protected void onNestHost()
Invoked if the nest host was not visited.
-
onAfterPermittedSubclasses
protected void onAfterPermittedSubclasses()
Invoked if the permitted subclass visitation is about to complete.
-
onOuterType
protected void onOuterType()
Invoked if the outer class was not visited.
-
onAfterAttributes
protected void onAfterAttributes()
Invoked if the attribute visitation is about to complete.
-
onAfterRecordComponents
protected void onAfterRecordComponents()
Invoked after all record components are visited or none is found.
-
considerTriggerNestHost
private void considerTriggerNestHost()
Considers triggering a nest host visitation.
-
considerTriggerOuterClass
private void considerTriggerOuterClass()
Considers triggering an outer class visitation.
-
considerTriggerAfterPermittedSubclasses
private void considerTriggerAfterPermittedSubclasses()
Considers triggering the after permitted subclass visitation.
-
considerTriggerAfterAttributes
private void considerTriggerAfterAttributes()
Considers triggering the after attribute visitation.
-
considerTriggerAfterRecordComponents
private void considerTriggerAfterRecordComponents()
Considers triggering the after record components visitation.
-
visitNestHost
public final void visitNestHost(java.lang.String nestHost)
- Overrides:
visitNestHost
in classorg.objectweb.asm.ClassVisitor
-
onVisitNestHost
protected void onVisitNestHost(java.lang.String nestHost)
An order-sensitive invocation ofClassVisitor.visitNestHost(String)
.- Parameters:
nestHost
- The internal name of the nest host.
-
visitPermittedSubclass
public final void visitPermittedSubclass(java.lang.String permittedSubclass)
- Overrides:
visitPermittedSubclass
in classorg.objectweb.asm.ClassVisitor
-
onVisitPermittedSubclass
protected void onVisitPermittedSubclass(java.lang.String permittedSubclass)
An order-sensitive invocation ofClassVisitor#visitPermittedSubclass
.- Parameters:
permittedSubclass
- The internal name of the permitted subclass.
-
visitOuterClass
public final void visitOuterClass(java.lang.String owner, java.lang.String name, java.lang.String descriptor)
- Overrides:
visitOuterClass
in classorg.objectweb.asm.ClassVisitor
-
onVisitOuterClass
protected void onVisitOuterClass(java.lang.String owner, java.lang.String name, java.lang.String descriptor)
An order-sensitive invocation ofClassVisitor.visitOuterClass(String, String, String)
.- Parameters:
owner
- The outer class's internal name.name
- The outer method's name ornull
if it does not exist.descriptor
- The outer method's descriptor ornull
if it does not exist.
-
visitRecordComponent
public org.objectweb.asm.RecordComponentVisitor visitRecordComponent(java.lang.String name, java.lang.String descriptor, java.lang.String signature)
- Overrides:
visitRecordComponent
in classorg.objectweb.asm.ClassVisitor
-
onVisitRecordComponent
protected org.objectweb.asm.RecordComponentVisitor onVisitRecordComponent(java.lang.String name, java.lang.String descriptor, java.lang.String signature)
An order-sensitive invocation ofClassVisitor.visitRecordComponent(String, String, String)
.- Parameters:
name
- The record component's name.descriptor
- The record component's descriptor.signature
- The record component's generic signature ornull
if the record component's type is non-generic.- Returns:
- The record component visitor or
null
if the component should not be visited.
-
visitAnnotation
public final org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String descriptor, boolean visible)
- Overrides:
visitAnnotation
in classorg.objectweb.asm.ClassVisitor
-
onVisitAnnotation
protected org.objectweb.asm.AnnotationVisitor onVisitAnnotation(java.lang.String descriptor, boolean visible)
An order-sensitive invocation ofClassVisitor.visitAnnotation(String, boolean)
.- Parameters:
descriptor
- The annotation type's descriptor.visible
-true
if the annotation is visible at runtime.- Returns:
- An annotation visitor or
null
if the annotation should be ignored.
-
visitTypeAnnotation
public final org.objectweb.asm.AnnotationVisitor visitTypeAnnotation(int typeReference, org.objectweb.asm.TypePath typePath, java.lang.String descriptor, boolean visible)
- Overrides:
visitTypeAnnotation
in classorg.objectweb.asm.ClassVisitor
-
onVisitTypeAnnotation
protected org.objectweb.asm.AnnotationVisitor onVisitTypeAnnotation(int typeReference, org.objectweb.asm.TypePath typePath, java.lang.String descriptor, boolean visible)
An order-sensitive invocation ofClassVisitor.visitTypeAnnotation(int, TypePath, String, boolean)
.- Parameters:
typeReference
- The type reference of the type annotation.typePath
- The type path of the type annotation.descriptor
- The descriptor of the annotation type.visible
-true
if the annotation is visible at runtime.- Returns:
- An annotation visitor or
null
if the annotation should be ignored.
-
visitAttribute
public final void visitAttribute(org.objectweb.asm.Attribute attribute)
- Overrides:
visitAttribute
in classorg.objectweb.asm.ClassVisitor
-
onVisitAttribute
protected void onVisitAttribute(org.objectweb.asm.Attribute attribute)
An order-sensitive invocation ofClassVisitor.visitAttribute(Attribute)
.- Parameters:
attribute
- The attribute to visit.
-
visitNestMember
public final void visitNestMember(java.lang.String nestMember)
- Overrides:
visitNestMember
in classorg.objectweb.asm.ClassVisitor
-
onVisitNestMember
protected void onVisitNestMember(java.lang.String nestMember)
An order-sensitive invocation ofClassVisitor.visitNestMember(String)
.- Parameters:
nestMember
- The internal name of the nest member.
-
visitInnerClass
public final void visitInnerClass(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int modifiers)
- Overrides:
visitInnerClass
in classorg.objectweb.asm.ClassVisitor
-
onVisitInnerClass
protected void onVisitInnerClass(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int modifiers)
An order-sensitive invocation ofClassVisitor.visitInnerClass(String, String, String, int)
.- Parameters:
name
- The internal name of the inner class.outerName
- The internal name of the outer class.innerName
- The inner class's simple name ornull
for an anonymous class.modifiers
- The inner class's source code modifiers.
-
visitField
public final org.objectweb.asm.FieldVisitor visitField(int modifiers, java.lang.String internalName, java.lang.String descriptor, java.lang.String signature, java.lang.Object defaultValue)
- Overrides:
visitField
in classorg.objectweb.asm.ClassVisitor
-
onVisitField
protected org.objectweb.asm.FieldVisitor onVisitField(int modifiers, java.lang.String internalName, java.lang.String descriptor, java.lang.String signature, java.lang.Object defaultValue)
An order-sensitive invocation ofClassVisitor.visitField(int, String, String, String, Object)
.- Parameters:
modifiers
- The field's modifiers.internalName
- The field's internal name.descriptor
- The field type's descriptor.signature
- The field's generic signature ornull
if the field is not generic.defaultValue
- The field's default value ornull
if no such value exists.- Returns:
- A field visitor to visit the field or
null
to ignore it.
-
visitMethod
public final org.objectweb.asm.MethodVisitor visitMethod(int modifiers, java.lang.String internalName, java.lang.String descriptor, java.lang.String signature, java.lang.String[] exception)
- Overrides:
visitMethod
in classorg.objectweb.asm.ClassVisitor
-
onVisitMethod
protected org.objectweb.asm.MethodVisitor onVisitMethod(int modifiers, java.lang.String internalName, java.lang.String descriptor, java.lang.String signature, java.lang.String[] exception)
An order-sensitive invocation ofClassVisitor.visitMethod(int, String, String, String, String[])
.- Parameters:
modifiers
- The method's modifiers.internalName
- The method's internal name.descriptor
- The field type's descriptor.signature
- The method's generic signature ornull
if the method is not generic.exception
- The method's declared exceptions ornull
if no exceptions are declared.- Returns:
- A method visitor to visit the method or
null
to ignore it.
-
visitEnd
public final void visitEnd()
- Overrides:
visitEnd
in classorg.objectweb.asm.ClassVisitor
-
onVisitEnd
protected void onVisitEnd()
An order-sensitive invocation ofClassVisitor.visitEnd()
.
-
-