Package net.bytebuddy.asm
Class Advice.Dispatcher.Inlining.Resolved.ForMethodEnter
java.lang.Object
net.bytebuddy.asm.Advice.Dispatcher.Resolved.AbstractBase
net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved
net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.ForMethodEnter
- All Implemented Interfaces:
Advice.Dispatcher
,Advice.Dispatcher.Resolved
,Advice.Dispatcher.Resolved.ForMethodEnter
- Direct Known Subclasses:
Advice.Dispatcher.Inlining.Resolved.ForMethodEnter.WithDiscardedEnterType
,Advice.Dispatcher.Inlining.Resolved.ForMethodEnter.WithRetainedEnterType
- Enclosing class:
Advice.Dispatcher.Inlining.Resolved
@Enhance
protected abstract static class Advice.Dispatcher.Inlining.Resolved.ForMethodEnter
extends Advice.Dispatcher.Inlining.Resolved
implements Advice.Dispatcher.Resolved.ForMethodEnter
A resolved dispatcher for implementing method enter advice.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static class
Implementation of an advice that does not expose an enter type.protected static class
Implementation of an advice that does expose an enter type.Nested classes/interfaces inherited from class net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved
Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner, Advice.Dispatcher.Inlining.Resolved.ForMethodEnter, Advice.Dispatcher.Inlining.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 Map
<String, TypeDefinition> A mapping of all available local variables by their name to their type.private final boolean
true
if the first discovered line number information should be prepended to the advice code.Fields inherited from class net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved
classReader
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
ForMethodEnter
(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, Map<String, TypeDefinition> namedTypes, List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition exitType, org.objectweb.asm.ClassReader classReader) Creates a new resolved dispatcher for implementing method enter advice. -
Method Summary
Modifier and TypeMethodDescriptionprotected org.objectweb.asm.MethodVisitor
apply
(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, Advice.ArgumentHandler.ForInstrumentedMethod argumentHandler, Advice.MethodSizeHandler.ForInstrumentedMethod methodSizeHandler, Advice.StackMapFrameHandler.ForInstrumentedMethod stackMapFrameHandler, TypeDescription instrumentedType, MethodDescription instrumentedMethod, Advice.Dispatcher.SuppressionHandler.Bound suppressionHandler, Advice.Dispatcher.RelocationHandler.Bound relocationHandler, StackManipulation exceptionHandler) Applies a resolution for a given instrumented method.bind
(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.protected org.objectweb.asm.MethodVisitor
doApply
(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, Advice.ArgumentHandler.ForAdvice argumentHandler, Advice.MethodSizeHandler.ForAdvice methodSizeHandler, Advice.StackMapFrameHandler.ForAdvice stackMapFrameHandler, TypeDescription instrumentedType, MethodDescription instrumentedMethod, Advice.Dispatcher.SuppressionHandler.Bound suppressionHandler, Advice.Dispatcher.RelocationHandler.Bound relocationHandler, StackManipulation exceptionHandler) Applies a resolution for a given instrumented method.Returns the actual advice type, even if it is not required post advice processing.Returns the named types defined by this advice.boolean
Returnstrue
if the first discovered line number information should be prepended to the advice code.protected static Advice.Dispatcher.Resolved.ForMethodEnter
of
(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, Map<String, TypeDefinition> namedTypes, List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition exitType, org.objectweb.asm.ClassReader classReader, boolean methodExit) Resolves enter advice that only exposes the enter type if this is necessary.protected Map
<Integer, TypeDefinition> resolveInitializationTypes
(Advice.ArgumentHandler argumentHandler) Resolves the initialization types of this advice method.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
getAdviceType, isAlive
-
Field Details
-
namedTypes
A mapping of all available local variables by their name to their type. -
prependLineNumber
private final boolean prependLineNumbertrue
if the first discovered line number information should be prepended to the advice code.
-
-
Constructor Details
-
ForMethodEnter
protected ForMethodEnter(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, Map<String, TypeDefinition> namedTypes, List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition exitType, org.objectweb.asm.ClassReader classReader) Creates a new resolved dispatcher for implementing method enter 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.exitType
- The exit type orvoid
if no exit type is defined.classReader
- A class reader to query for the class file of the advice method.
-
-
Method Details
-
of
protected static Advice.Dispatcher.Resolved.ForMethodEnter of(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, Map<String, TypeDefinition> namedTypes, List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition exitType, org.objectweb.asm.ClassReader classReader, boolean methodExit) Resolves enter advice that only exposes the enter type if this is necessary.- Parameters:
adviceMethod
- The 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.exitType
- The exit type orvoid
if no exit type is defined.classReader
- The class reader for parsing the advice method's class file.methodExit
-true
if exit advice is applied.- Returns:
- An appropriate enter handler.
-
resolveInitializationTypes
protected Map<Integer,TypeDefinition> resolveInitializationTypes(Advice.ArgumentHandler argumentHandler) Description copied from class:Advice.Dispatcher.Inlining.Resolved
Resolves the initialization types of this advice method.- Specified by:
resolveInitializationTypes
in classAdvice.Dispatcher.Inlining.Resolved
- Parameters:
argumentHandler
- The argument handler to use for resolving the initialization.- Returns:
- A mapping of parameter offsets to the type to initialize.
-
bind
public Advice.Dispatcher.Bound bind(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.- Specified by:
bind
in interfaceAdvice.Dispatcher.Resolved
- Parameters:
instrumentedType
- The instrumented type.instrumentedMethod
- The instrumented method.methodVisitor
- The method visitor for writing 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:
- A dispatcher that is bound to the instrumented method.
-
isPrependLineNumber
public boolean isPrependLineNumber()Returnstrue
if the first discovered line number information should be prepended to the advice code.- Specified by:
isPrependLineNumber
in interfaceAdvice.Dispatcher.Resolved.ForMethodEnter
- Returns:
true
if the first discovered line number information should be prepended to the advice code.
-
getActualAdviceType
Returns the actual advice type, even if it is not required post advice processing.- Specified by:
getActualAdviceType
in interfaceAdvice.Dispatcher.Resolved.ForMethodEnter
- Returns:
- The actual advice type, even if it is not required post advice processing.
-
getNamedTypes
Returns the named types defined by this advice.- Specified by:
getNamedTypes
in interfaceAdvice.Dispatcher.Resolved
- Returns:
- The named types defined by this advice.
-
apply
protected org.objectweb.asm.MethodVisitor apply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, Advice.ArgumentHandler.ForInstrumentedMethod argumentHandler, Advice.MethodSizeHandler.ForInstrumentedMethod methodSizeHandler, Advice.StackMapFrameHandler.ForInstrumentedMethod stackMapFrameHandler, TypeDescription instrumentedType, MethodDescription instrumentedMethod, Advice.Dispatcher.SuppressionHandler.Bound suppressionHandler, Advice.Dispatcher.RelocationHandler.Bound relocationHandler, StackManipulation exceptionHandler) Description copied from class:Advice.Dispatcher.Inlining.Resolved
Applies a resolution for a given instrumented method.- Specified by:
apply
in classAdvice.Dispatcher.Inlining.Resolved
- Parameters:
methodVisitor
- A method visitor for writing byte code 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.instrumentedType
- A description of the instrumented type.instrumentedMethod
- A description of the instrumented method.suppressionHandler
- A bound suppression handler that is used for suppressing exceptions of this advice method.relocationHandler
- A bound relocation handler that is responsible for considering a non-standard control flow.exceptionHandler
- The exception handler that is resolved for the instrumented method.- Returns:
- A method visitor for visiting the advice method's byte code.
-
doApply
protected org.objectweb.asm.MethodVisitor doApply(org.objectweb.asm.MethodVisitor methodVisitor, Implementation.Context implementationContext, Assigner assigner, Advice.ArgumentHandler.ForAdvice argumentHandler, Advice.MethodSizeHandler.ForAdvice methodSizeHandler, Advice.StackMapFrameHandler.ForAdvice stackMapFrameHandler, TypeDescription instrumentedType, MethodDescription instrumentedMethod, Advice.Dispatcher.SuppressionHandler.Bound suppressionHandler, Advice.Dispatcher.RelocationHandler.Bound relocationHandler, StackManipulation exceptionHandler) Applies a resolution for a given instrumented method.- Parameters:
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.instrumentedType
- A description of the instrumented type.instrumentedMethod
- The instrumented method that is being bound.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:
- A method visitor for visiting the advice method's byte code.
-