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
FieldsModifier and TypeFieldDescriptionprivate boolean
true
if the attribute visitation is not yet completed.private boolean
true
if the nest host was not yet visited.private boolean
true
if the outer class was not yet visited.Fields inherited from class org.objectweb.asm.ClassVisitor
api, cv
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
MetadataAwareClassVisitor
(int api, org.objectweb.asm.ClassVisitor classVisitor) Creates a metadata aware class visitor. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
Considers triggering the after attribute visitation.private void
Considers triggering a nest host visitation.private void
Considers triggering an outer class visitation.protected void
Invoked if the attribute visitation is about to complete.protected void
Invoked if the nest host was not visited.protected void
Invoked if the outer class was not visited.protected org.objectweb.asm.AnnotationVisitor
onVisitAnnotation
(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
An order-sensitive invocation ofClassVisitor.visitEnd()
.protected org.objectweb.asm.FieldVisitor
onVisitField
(int modifiers, String internalName, String descriptor, String signature, Object value) An order-sensitive invocation ofClassVisitor.visitField(int, String, String, String, Object)
.protected void
onVisitInnerClass
(String name, String outerName, String innerName, int modifiers) An order-sensitive invocation ofClassVisitor.visitInnerClass(String, String, String, int)
.protected org.objectweb.asm.MethodVisitor
onVisitMethod
(int modifiers, String internalName, String descriptor, String signature, String[] exception) An order-sensitive invocation ofClassVisitor.visitMethod(int, String, String, String, String[])
.protected void
onVisitNestHost
(String nestHost) An order-sensitive invocation ofClassVisitor.visitNestHost(String)
.protected void
onVisitNestMember
(String nestMember) An order-sensitive invocation ofClassVisitor.visitNestMember(String)
.protected void
onVisitOuterClass
(String owner, String name, String descriptor) An order-sensitive invocation ofClassVisitor.visitOuterClass(String, String, String)
.protected void
onVisitPermittedSubclass
(String permittedSubclass) An order-sensitive invocation ofClassVisitor#visitPermittedSubclass
.protected org.objectweb.asm.RecordComponentVisitor
onVisitRecordComponent
(String name, String descriptor, String signature) An order-sensitive invocation ofClassVisitor.visitRecordComponent(String, String, String)
.protected org.objectweb.asm.AnnotationVisitor
onVisitTypeAnnotation
(int typeReference, org.objectweb.asm.TypePath typePath, String descriptor, boolean visible) An order-sensitive invocation ofClassVisitor.visitTypeAnnotation(int, TypePath, String, boolean)
.final org.objectweb.asm.AnnotationVisitor
visitAnnotation
(String descriptor, boolean visible) final void
visitAttribute
(org.objectweb.asm.Attribute attribute) final void
visitEnd()
final org.objectweb.asm.FieldVisitor
visitField
(int modifiers, String internalName, String descriptor, String signature, Object value) final void
visitInnerClass
(String name, String outerName, String innerName, int modifiers) final org.objectweb.asm.MethodVisitor
visitMethod
(int modifiers, String internalName, String descriptor, String signature, String[] exception) final void
visitNestHost
(String nestHost) final void
visitNestMember
(String nestMember) final void
visitOuterClass
(String owner, String name, String descriptor) final void
visitPermittedSubclass
(String permittedSubclass) org.objectweb.asm.RecordComponentVisitor
visitRecordComponent
(String name, String descriptor, String signature) final org.objectweb.asm.AnnotationVisitor
visitTypeAnnotation
(int typeReference, org.objectweb.asm.TypePath typePath, String descriptor, boolean visible) Methods inherited from class org.objectweb.asm.ClassVisitor
visit, visitModule, visitSource
-
Field Details
-
triggerNestHost
private boolean triggerNestHosttrue
if the nest host was not yet visited. -
triggerOuterClass
private boolean triggerOuterClasstrue
if the outer class was not yet visited. -
triggerAttributes
private boolean triggerAttributestrue
if the attribute visitation is not yet completed.
-
-
Constructor Details
-
MetadataAwareClassVisitor
protected MetadataAwareClassVisitor(int api, org.objectweb.asm.ClassVisitor classVisitor) Creates a metadata aware class visitor.- Parameters:
api
- The API version.classVisitor
- The class visitor to delegate to.
-
-
Method Details
-
onNestHost
protected void onNestHost()Invoked if the nest host was not visited. -
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. -
considerTriggerNestHost
private void considerTriggerNestHost()Considers triggering a nest host visitation. -
considerTriggerOuterClass
private void considerTriggerOuterClass()Considers triggering an outer class visitation. -
considerTriggerAfterAttributes
private void considerTriggerAfterAttributes()Considers triggering the after attribute visitation. -
visitNestHost
- Overrides:
visitNestHost
in classorg.objectweb.asm.ClassVisitor
-
onVisitNestHost
An order-sensitive invocation ofClassVisitor.visitNestHost(String)
.- Parameters:
nestHost
- The internal name of the nest host.
-
visitOuterClass
public final void visitOuterClass(String owner, @MaybeNull String name, @MaybeNull String descriptor) - Overrides:
visitOuterClass
in classorg.objectweb.asm.ClassVisitor
-
onVisitOuterClass
protected void onVisitOuterClass(String owner, @MaybeNull String name, @MaybeNull 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.
-
visitPermittedSubclass
- Overrides:
visitPermittedSubclass
in classorg.objectweb.asm.ClassVisitor
-
onVisitPermittedSubclass
An order-sensitive invocation ofClassVisitor#visitPermittedSubclass
.- Parameters:
permittedSubclass
- The internal name of the permitted subclass.
-
visitRecordComponent
@MaybeNull public org.objectweb.asm.RecordComponentVisitor visitRecordComponent(String name, String descriptor, @MaybeNull String signature) - Overrides:
visitRecordComponent
in classorg.objectweb.asm.ClassVisitor
-
onVisitRecordComponent
@MaybeNull protected org.objectweb.asm.RecordComponentVisitor onVisitRecordComponent(String name, String descriptor, @MaybeNull 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
@MaybeNull public final org.objectweb.asm.AnnotationVisitor visitAnnotation(String descriptor, boolean visible) - Overrides:
visitAnnotation
in classorg.objectweb.asm.ClassVisitor
-
onVisitAnnotation
@MaybeNull protected org.objectweb.asm.AnnotationVisitor onVisitAnnotation(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
@MaybeNull public final org.objectweb.asm.AnnotationVisitor visitTypeAnnotation(int typeReference, org.objectweb.asm.TypePath typePath, String descriptor, boolean visible) - Overrides:
visitTypeAnnotation
in classorg.objectweb.asm.ClassVisitor
-
onVisitTypeAnnotation
@MaybeNull protected org.objectweb.asm.AnnotationVisitor onVisitTypeAnnotation(int typeReference, org.objectweb.asm.TypePath typePath, 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
- Overrides:
visitNestMember
in classorg.objectweb.asm.ClassVisitor
-
onVisitNestMember
An order-sensitive invocation ofClassVisitor.visitNestMember(String)
.- Parameters:
nestMember
- The internal name of the nest member.
-
visitInnerClass
public final void visitInnerClass(String name, @MaybeNull String outerName, @MaybeNull String innerName, int modifiers) - Overrides:
visitInnerClass
in classorg.objectweb.asm.ClassVisitor
-
onVisitInnerClass
protected void onVisitInnerClass(String name, @MaybeNull String outerName, @MaybeNull 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 ornull
for a member class.innerName
- The inner class's simple name ornull
for an anonymous class.modifiers
- The inner class's source code modifiers.
-
visitField
@MaybeNull public final org.objectweb.asm.FieldVisitor visitField(int modifiers, String internalName, String descriptor, @MaybeNull String signature, @MaybeNull Object value) - Overrides:
visitField
in classorg.objectweb.asm.ClassVisitor
-
onVisitField
@MaybeNull protected org.objectweb.asm.FieldVisitor onVisitField(int modifiers, String internalName, String descriptor, @MaybeNull String signature, @MaybeNull Object value) 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.value
- 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
@MaybeNull public final org.objectweb.asm.MethodVisitor visitMethod(int modifiers, String internalName, String descriptor, @MaybeNull String signature, @MaybeNull String[] exception) - Overrides:
visitMethod
in classorg.objectweb.asm.ClassVisitor
-
onVisitMethod
@MaybeNull protected org.objectweb.asm.MethodVisitor onVisitMethod(int modifiers, String internalName, String descriptor, @MaybeNull String signature, @MaybeNull 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()
.
-