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
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 Classes Modifier and Type Class Description protected static class
Advice.Dispatcher.Inlining.Resolved.ForMethodEnter.WithDiscardedEnterType
Implementation of an advice that does not expose an enter type.protected static class
Advice.Dispatcher.Inlining.Resolved.ForMethodEnter.WithRetainedEnterType
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
-
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, relocationHandler, suppressionHandler
-
Fields inherited from interface net.bytebuddy.asm.Advice.Dispatcher
IGNORE_ANNOTATION, IGNORE_METHOD
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ForMethodEnter(MethodDescription.InDefinedShape adviceMethod, java.util.List<? extends Advice.OffsetMapping.Factory<?>> userFactories, org.objectweb.asm.ClassReader classReader)
Creates a new resolved dispatcher for implementing method enter advice.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description 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)
Applies a resolution for a given instrumented method.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.boolean
equals(java.lang.Object object)
int
hashCode()
boolean
isPrependLineNumber()
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, java.util.List<? extends Advice.OffsetMapping.Factory<?>> userFactories, org.objectweb.asm.ClassReader classReader, boolean methodExit)
Resolves enter advice that only exposes the enter type if this is necessary.-
Methods inherited from class net.bytebuddy.asm.Advice.Dispatcher.Resolved.AbstractBase
isAlive
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, 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.ForMethodEnter
getEnterType
-
-
-
-
Constructor Detail
-
ForMethodEnter
protected ForMethodEnter(MethodDescription.InDefinedShape adviceMethod, java.util.List<? extends Advice.OffsetMapping.Factory<?>> userFactories, org.objectweb.asm.ClassReader classReader)
Creates a new resolved dispatcher for implementing method enter advice.- Parameters:
adviceMethod
- The represented advice method.userFactories
- A list of user-defined factories for offset mappings.classReader
- A class reader to query for the class file of the advice method.
-
-
Method Detail
-
of
protected static Advice.Dispatcher.Resolved.ForMethodEnter of(MethodDescription.InDefinedShape adviceMethod, java.util.List<? extends Advice.OffsetMapping.Factory<?>> userFactories, 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.userFactories
- A list of user-defined factories for offset mappings.classReader
- The class reader for parsing the advice method's class file.methodExit
-true
if exit advice is applied.- Returns:
- An appropriate enter handler.
-
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)
Description copied from interface:Advice.Dispatcher.Resolved
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()
Description copied from interface:Advice.Dispatcher.Resolved.ForMethodEnter
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.
-
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)
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.- Returns:
- A method visitor for visiting the advice method's byte code.
-
equals
public boolean equals(java.lang.Object object)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
-