Class MethodCall.Appender
java.lang.Object
net.bytebuddy.implementation.MethodCall.Appender
- All Implemented Interfaces:
ByteCodeAppender
- Enclosing class:
MethodCall
@Enhance(includeSyntheticFields=true)
protected class MethodCall.Appender
extends Object
implements ByteCodeAppender
The appender being used to implement a
MethodCall.-
Nested Class Summary
Nested classes/interfaces inherited from interface ByteCodeAppender
ByteCodeAppender.Compound, ByteCodeAppender.Simple, ByteCodeAppender.Size -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final List<MethodCall.ArgumentLoader.ArgumentProvider> The argument providers to use.private final Implementation.TargetThe implementation target.private final MethodCall.MethodInvokerThe method invoker to use.private final MethodCall.MethodLocatorThe method locator to use.private final MethodCall.TargetHandlerThe target handler to use.private final MethodCall.TerminationHandlerThe termination handler to use. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAppender(Implementation.Target implementationTarget, MethodCall.TerminationHandler terminationHandler) Creates a new appender. -
Method Summary
Modifier and TypeMethodDescriptionapply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, MethodDescription instrumentedMethod) Applies this byte code appender to a type creation process.protected MethodDescriptiontoInvokedMethod(MethodDescription instrumentedMethod, MethodCall.TargetHandler.Resolved targetHandler) Resolves this appender to the method being invoked.protected StackManipulationtoStackManipulation(MethodDescription instrumentedMethod, MethodDescription invokedMethod, MethodCall.TargetHandler.Resolved targetHandler) Resolves this appender to a stack manipulation.
-
Field Details
-
implementationTarget
The implementation target. -
methodLocator
The method locator to use. -
argumentProviders
The argument providers to use. -
methodInvoker
The method invoker to use. -
targetHandler
The target handler to use. -
terminationHandler
The termination handler to use.
-
-
Constructor Details
-
Appender
protected Appender(Implementation.Target implementationTarget, MethodCall.TerminationHandler terminationHandler) Creates a new appender.- Parameters:
implementationTarget- The implementation target.terminationHandler- The termination handler to use.
-
-
Method Details
-
apply
public ByteCodeAppender.Size apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, MethodDescription instrumentedMethod) Applies this byte code appender to a type creation process.- Specified by:
applyin interfaceByteCodeAppender- Parameters:
methodVisitor- The method visitor to which the byte code appender writes its code to.implementationContext- The implementation context of the current type creation process.instrumentedMethod- The method that is the target of the instrumentation.- Returns:
- The required size for the applied byte code to run.
-
toInvokedMethod
protected MethodDescription toInvokedMethod(MethodDescription instrumentedMethod, MethodCall.TargetHandler.Resolved targetHandler) Resolves this appender to the method being invoked.- Parameters:
instrumentedMethod- The instrumented method.targetHandler- The resolved target handler to base the stack manipulation upon.- Returns:
- The invoked method.
-
toStackManipulation
protected StackManipulation toStackManipulation(MethodDescription instrumentedMethod, MethodDescription invokedMethod, MethodCall.TargetHandler.Resolved targetHandler) Resolves this appender to a stack manipulation.- Parameters:
instrumentedMethod- The instrumented method.invokedMethod- The invoked method.targetHandler- The resolved target handler to base the stack manipulation upon.- Returns:
- A stack manipulation that represents this method call.
-