Package net.bytebuddy.implementation
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 java.lang.Object implements ByteCodeAppender
The appender being used to implement aMethodCall.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.bytecode.ByteCodeAppender
ByteCodeAppender.Compound, ByteCodeAppender.Simple, ByteCodeAppender.Size
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<MethodCall.ArgumentLoader.ArgumentProvider>argumentProvidersThe argument providers to use.private Implementation.TargetimplementationTargetThe implementation target.private MethodCall.MethodInvokermethodInvokerThe method invoker to use.private MethodCall.MethodLocatormethodLocatorThe method locator to use.private MethodCall.TargetHandlertargetHandlerThe target handler to use.private MethodCall.TerminationHandlerterminationHandlerThe termination handler to use.
-
Constructor Summary
Constructors Modifier Constructor Description protectedAppender(Implementation.Target implementationTarget, MethodCall.TerminationHandler terminationHandler)Creates a new appender.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ByteCodeAppender.Sizeapply(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 Detail
-
implementationTarget
private final Implementation.Target implementationTarget
The implementation target.
-
methodLocator
private final MethodCall.MethodLocator methodLocator
The method locator to use.
-
argumentProviders
private final java.util.List<MethodCall.ArgumentLoader.ArgumentProvider> argumentProviders
The argument providers to use.
-
methodInvoker
private final MethodCall.MethodInvoker methodInvoker
The method invoker to use.
-
targetHandler
private final MethodCall.TargetHandler targetHandler
The target handler to use.
-
terminationHandler
private final MethodCall.TerminationHandler terminationHandler
The termination handler to use.
-
-
Constructor Detail
-
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 Detail
-
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.
-
-