Package net.bytebuddy.asm
Class AsmVisitorWrapper.Compound
- java.lang.Object
-
- net.bytebuddy.asm.AsmVisitorWrapper.Compound
-
- All Implemented Interfaces:
AsmVisitorWrapper
- Enclosing interface:
- AsmVisitorWrapper
@Enhance public static class AsmVisitorWrapper.Compound extends java.lang.Object implements AsmVisitorWrapper
An ordered, immutable chain ofAsmVisitorWrapper
s.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface net.bytebuddy.asm.AsmVisitorWrapper
AsmVisitorWrapper.AbstractBase, AsmVisitorWrapper.Compound, AsmVisitorWrapper.ForDeclaredFields, AsmVisitorWrapper.ForDeclaredMethods, AsmVisitorWrapper.NoOp
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<AsmVisitorWrapper>
asmVisitorWrappers
The class visitor wrappers that are represented by this chain in their order.-
Fields inherited from interface net.bytebuddy.asm.AsmVisitorWrapper
NO_FLAGS
-
-
Constructor Summary
Constructors Constructor Description Compound(java.util.List<? extends AsmVisitorWrapper> asmVisitorWrappers)
Creates a new immutable chain based on an existing list ofAsmVisitorWrapper
s where no copy of the received list is made.Compound(AsmVisitorWrapper... asmVisitorWrapper)
Creates a new immutable chain based on an existing list ofAsmVisitorWrapper
s where no copy of the received array is made.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
mergeReader(int flags)
Defines the flags that are provided to anyClassReader
when reading a class if applicable.int
mergeWriter(int flags)
Defines the flags that are provided to anyClassWriter
when writing a class.org.objectweb.asm.ClassVisitor
wrap(TypeDescription instrumentedType, org.objectweb.asm.ClassVisitor classVisitor, Implementation.Context implementationContext, TypePool typePool, FieldList<FieldDescription.InDefinedShape> fields, MethodList<?> methods, int writerFlags, int readerFlags)
Applies aClassVisitorWrapper
to the creation of aDynamicType
.
-
-
-
Field Detail
-
asmVisitorWrappers
private final java.util.List<AsmVisitorWrapper> asmVisitorWrappers
The class visitor wrappers that are represented by this chain in their order. This list must not be mutated.
-
-
Constructor Detail
-
Compound
public Compound(AsmVisitorWrapper... asmVisitorWrapper)
Creates a new immutable chain based on an existing list ofAsmVisitorWrapper
s where no copy of the received array is made.- Parameters:
asmVisitorWrapper
- An array ofAsmVisitorWrapper
s where elements at the beginning of the list are applied first, i.e. will be at the bottom of the generatedClassVisitor
.
-
Compound
public Compound(java.util.List<? extends AsmVisitorWrapper> asmVisitorWrappers)
Creates a new immutable chain based on an existing list ofAsmVisitorWrapper
s where no copy of the received list is made.- Parameters:
asmVisitorWrappers
- A list ofAsmVisitorWrapper
s where elements at the beginning of the list are applied first, i.e. will be at the bottom of the generatedClassVisitor
.
-
-
Method Detail
-
mergeWriter
public int mergeWriter(int flags)
Defines the flags that are provided to anyClassWriter
when writing a class. Typically, this gives opportunity to instruct ASM to compute stack map frames or the size of the local variables array and the operand stack. If no specific flags are required for applying this wrapper, the given value is to be returned.- Specified by:
mergeWriter
in interfaceAsmVisitorWrapper
- Parameters:
flags
- The currently set flags. This value should be combined (e.g.flags | foo
) into the value that is returned by this wrapper.- Returns:
- The flags to be provided to the ASM
ClassWriter
.
-
mergeReader
public int mergeReader(int flags)
Defines the flags that are provided to anyClassReader
when reading a class if applicable. Typically, this gives opportunity to instruct ASM to expand or skip frames and to skip code and debug information. If no specific flags are required for applying this wrapper, the given value is to be returned.- Specified by:
mergeReader
in interfaceAsmVisitorWrapper
- Parameters:
flags
- The currently set flags. This value should be combined (e.g.flags | foo
) into the value that is returned by this wrapper.- Returns:
- The flags to be provided to the ASM
ClassReader
.
-
wrap
public org.objectweb.asm.ClassVisitor wrap(TypeDescription instrumentedType, org.objectweb.asm.ClassVisitor classVisitor, Implementation.Context implementationContext, TypePool typePool, FieldList<FieldDescription.InDefinedShape> fields, MethodList<?> methods, int writerFlags, int readerFlags)
Applies aClassVisitorWrapper
to the creation of aDynamicType
.- Specified by:
wrap
in interfaceAsmVisitorWrapper
- Parameters:
instrumentedType
- The instrumented type.classVisitor
- AClassVisitor
to become the new primary class visitor to which the createdDynamicType
is written to.implementationContext
- The implementation context of the current instrumentation.typePool
- The type pool that was provided for the class creation.fields
- The instrumented type's fields.methods
- The instrumented type's methods non-ignored declared and virtually inherited methods.writerFlags
- The ASMClassWriter
flags to consider.readerFlags
- The ASMClassReader
flags to consider.- Returns:
- A new
ClassVisitor
that usually delegates to theClassVisitor
delivered in the argument.
-
-