Package net.bytebuddy.asm
Class Advice.Dispatcher.Delegating.Resolved.ForMethodExit
java.lang.Object
net.bytebuddy.asm.Advice.Dispatcher.Resolved.AbstractBase
net.bytebuddy.asm.Advice.Dispatcher.Delegating.Resolved
net.bytebuddy.asm.Advice.Dispatcher.Delegating.Resolved.ForMethodExit
- All Implemented Interfaces:
Advice.Dispatcher
,Advice.Dispatcher.Resolved
,Advice.Dispatcher.Resolved.ForMethodExit
- Direct Known Subclasses:
Advice.Dispatcher.Delegating.Resolved.ForMethodExit.WithExceptionHandler
,Advice.Dispatcher.Delegating.Resolved.ForMethodExit.WithoutExceptionHandler
- Enclosing class:
- Advice.Dispatcher.Delegating.Resolved
@Enhance
protected abstract static class Advice.Dispatcher.Delegating.Resolved.ForMethodExit
extends Advice.Dispatcher.Delegating.Resolved
implements Advice.Dispatcher.Resolved.ForMethodExit
A resolved dispatcher for implementing method exit advice.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static class
Implementation of exit advice that handles exceptions.protected static class
Implementation of exit advice that ignores exceptions.Nested classes/interfaces inherited from class net.bytebuddy.asm.Advice.Dispatcher.Delegating.Resolved
Advice.Dispatcher.Delegating.Resolved.AdviceMethodWriter, Advice.Dispatcher.Delegating.Resolved.ForMethodEnter, Advice.Dispatcher.Delegating.Resolved.ForMethodExit
Nested classes/interfaces inherited from interface net.bytebuddy.asm.Advice.Dispatcher
Advice.Dispatcher.Bound, Advice.Dispatcher.Delegating, Advice.Dispatcher.Inactive, Advice.Dispatcher.Inlining, Advice.Dispatcher.RelocationHandler, Advice.Dispatcher.Resolved, Advice.Dispatcher.SuppressionHandler, Advice.Dispatcher.Unresolved
Nested classes/interfaces inherited from interface net.bytebuddy.asm.Advice.Dispatcher.Resolved
Advice.Dispatcher.Resolved.AbstractBase, Advice.Dispatcher.Resolved.ForMethodEnter, Advice.Dispatcher.Resolved.ForMethodExit
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final boolean
true
if the arguments of the instrumented method should be copied prior to execution.Fields inherited from class net.bytebuddy.asm.Advice.Dispatcher.Delegating.Resolved
delegator
Fields inherited from class net.bytebuddy.asm.Advice.Dispatcher.Resolved.AbstractBase
adviceMethod, offsetMappings, postProcessor, relocationHandler, suppressionHandler
Fields inherited from interface net.bytebuddy.asm.Advice.Dispatcher
IGNORE_ANNOTATION, IGNORE_METHOD
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
ForMethodExit
(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, Map<String, TypeDefinition> namedTypes, List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition enterType, Advice.Delegator delegator) Creates a new resolved dispatcher for implementing method exit advice. -
Method Summary
Modifier and TypeMethodDescriptionprivate Advice.Dispatcher.Bound
doResolve
(TypeDescription instrumentedType, MethodDescription instrumentedMethod, org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, Advice.ArgumentHandler.ForAdvice argumentHandler, Advice.MethodSizeHandler.ForAdvice methodSizeHandler, Advice.StackMapFrameHandler.ForAdvice stackMapFrameHandler, Advice.Dispatcher.SuppressionHandler.Bound suppressionHandler, Advice.Dispatcher.RelocationHandler.Bound relocationHandler, StackManipulation exceptionHandler) Binds this dispatcher for resolution to a specific method.The type that is produced as a result of executing this advice method.Returns a factory for creating anAdvice.ArgumentHandler
.protected static Advice.Dispatcher.Resolved.ForMethodExit
of
(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, Advice.Delegator delegator, Map<String, TypeDefinition> namedTypes, List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition enterType) Resolves exit advice that handles exceptions depending on the specification of the exit advice.protected Advice.Dispatcher.Bound
resolve
(TypeDescription instrumentedType, MethodDescription instrumentedMethod, org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, Advice.ArgumentHandler.ForInstrumentedMethod argumentHandler, Advice.MethodSizeHandler.ForInstrumentedMethod methodSizeHandler, Advice.StackMapFrameHandler.ForInstrumentedMethod stackMapFrameHandler, StackManipulation exceptionHandler, Advice.Dispatcher.RelocationHandler.Relocation relocation) Binds this dispatcher for resolution to a specific method.Methods inherited from class net.bytebuddy.asm.Advice.Dispatcher.Delegating.Resolved
bind, getNamedTypes
Methods inherited from class net.bytebuddy.asm.Advice.Dispatcher.Resolved.AbstractBase
isAlive
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.bytebuddy.asm.Advice.Dispatcher
isAlive
Methods inherited from interface net.bytebuddy.asm.Advice.Dispatcher.Resolved
bind, getNamedTypes
Methods inherited from interface net.bytebuddy.asm.Advice.Dispatcher.Resolved.ForMethodExit
getThrowable
-
Field Details
-
backupArguments
private final boolean backupArgumentstrue
if the arguments of the instrumented method should be copied prior to execution.
-
-
Constructor Details
-
ForMethodExit
protected ForMethodExit(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, Map<String, TypeDefinition> namedTypes, List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition enterType, Advice.Delegator delegator) Creates a new resolved dispatcher for implementing method exit advice.- Parameters:
adviceMethod
- The represented advice method.postProcessor
- The post processor to apply.namedTypes
- A mapping of all available local variables by their name to their type.userFactories
- A list of user-defined factories for offset mappings.enterType
- The type of the value supplied by the enter advice method orvoid
if no such value exists.delegator
- The delegator to use.
-
-
Method Details
-
of
protected static Advice.Dispatcher.Resolved.ForMethodExit of(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, Advice.Delegator delegator, Map<String, TypeDefinition> namedTypes, List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition enterType) Resolves exit advice that handles exceptions depending on the specification of the exit advice.- Parameters:
adviceMethod
- The advice method.postProcessor
- The post processor to apply.delegator
- The delegator to use.namedTypes
- A mapping of all available local variables by their name to their type.userFactories
- A list of user-defined factories for offset mappings.enterType
- The type of the value supplied by the enter advice method orvoid
if no such value exists.- Returns:
- An appropriate exit handler.
-
resolve
protected Advice.Dispatcher.Bound resolve(TypeDescription instrumentedType, MethodDescription instrumentedMethod, org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, Advice.ArgumentHandler.ForInstrumentedMethod argumentHandler, Advice.MethodSizeHandler.ForInstrumentedMethod methodSizeHandler, Advice.StackMapFrameHandler.ForInstrumentedMethod stackMapFrameHandler, StackManipulation exceptionHandler, Advice.Dispatcher.RelocationHandler.Relocation relocation) Description copied from class:Advice.Dispatcher.Delegating.Resolved
Binds this dispatcher for resolution to a specific method.- Specified by:
resolve
in classAdvice.Dispatcher.Delegating.Resolved
- Parameters:
instrumentedType
- A description of the instrumented type.instrumentedMethod
- The instrumented method that is being bound.methodVisitor
- The method visitor for writing to the instrumented method.implementationContext
- The implementation context to use.assigner
- The assigner to use.argumentHandler
- A handler for accessing values on the local variable array.methodSizeHandler
- A handler for computing the method size requirements.stackMapFrameHandler
- A handler for translating and injecting stack map frames.exceptionHandler
- The stack manipulation to apply within a suppression handler.relocation
- A relocation to use with a relocation handler.- Returns:
- An appropriate bound advice dispatcher.
-
doResolve
private Advice.Dispatcher.Bound doResolve(TypeDescription instrumentedType, MethodDescription instrumentedMethod, org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, Advice.ArgumentHandler.ForAdvice argumentHandler, Advice.MethodSizeHandler.ForAdvice methodSizeHandler, Advice.StackMapFrameHandler.ForAdvice stackMapFrameHandler, Advice.Dispatcher.SuppressionHandler.Bound suppressionHandler, Advice.Dispatcher.RelocationHandler.Bound relocationHandler, StackManipulation exceptionHandler) Binds this dispatcher for resolution to a specific method.- Parameters:
instrumentedType
- A description of the instrumented type.instrumentedMethod
- The instrumented method that is being bound.methodVisitor
- The method visitor for writing to the instrumented method.implementationContext
- The implementation context to use.assigner
- The assigner to use.argumentHandler
- A handler for accessing values on the local variable array.methodSizeHandler
- A handler for computing the method size requirements.stackMapFrameHandler
- A handler for translating and injecting stack map frames.suppressionHandler
- The bound suppression handler to use.relocationHandler
- The bound relocation handler to use.exceptionHandler
- The exception handler that is resolved for the instrumented method.- Returns:
- An appropriate bound advice dispatcher.
-
getArgumentHandlerFactory
Returns a factory for creating anAdvice.ArgumentHandler
.- Specified by:
getArgumentHandlerFactory
in interfaceAdvice.Dispatcher.Resolved.ForMethodExit
- Returns:
- A factory for creating an
Advice.ArgumentHandler
.
-
getAdviceType
The type that is produced as a result of executing this advice method.- Specified by:
getAdviceType
in interfaceAdvice.Dispatcher
- Returns:
- A description of the type that is produced by this advice method.
-