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>
argumentProviders
The argument providers to use.private Implementation.Target
implementationTarget
The implementation target.private MethodCall.MethodInvoker
methodInvoker
The method invoker to use.private MethodCall.MethodLocator
methodLocator
The method locator to use.private MethodCall.TargetHandler
targetHandler
The target handler to use.private MethodCall.TerminationHandler
terminationHandler
The termination handler to use.
-
Constructor Summary
Constructors Modifier Constructor Description protected
Appender(Implementation.Target implementationTarget, MethodCall.TerminationHandler terminationHandler)
Creates a new appender.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ByteCodeAppender.Size
apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, MethodDescription instrumentedMethod)
Applies this byte code appender to a type creation process.protected MethodDescription
toInvokedMethod(MethodDescription instrumentedMethod, MethodCall.TargetHandler.Resolved targetHandler)
Resolves this appender to the method being invoked.protected StackManipulation
toStackManipulation(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:
apply
in 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.
-
-