Package net.bytebuddy.asm
Class Advice.Dispatcher.Delegating.Resolved.ForMethodEnter
- java.lang.Object
-
- net.bytebuddy.asm.Advice.Dispatcher.Resolved.AbstractBase
-
- net.bytebuddy.asm.Advice.Dispatcher.Delegating.Resolved
-
- net.bytebuddy.asm.Advice.Dispatcher.Delegating.Resolved.ForMethodEnter
-
- All Implemented Interfaces:
Advice.Dispatcher
,Advice.Dispatcher.Resolved
,Advice.Dispatcher.Resolved.ForMethodEnter
- Direct Known Subclasses:
Advice.Dispatcher.Delegating.Resolved.ForMethodEnter.WithDiscardedEnterType
,Advice.Dispatcher.Delegating.Resolved.ForMethodEnter.WithRetainedEnterType
- Enclosing class:
- Advice.Dispatcher.Delegating.Resolved
@Enhance protected abstract static class Advice.Dispatcher.Delegating.Resolved.ForMethodEnter extends Advice.Dispatcher.Delegating.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.Delegating.Resolved.ForMethodEnter.WithDiscardedEnterType
Implementation of an advice that does not expose an enter type.protected static class
Advice.Dispatcher.Delegating.Resolved.ForMethodEnter.WithRetainedEnterType
Implementation of an advice that does expose an enter type.-
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
Fields Modifier and Type Field Description private boolean
prependLineNumber
true
if the first discovered line number information should be prepended to the advice code.-
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
Constructors Modifier Constructor Description protected
ForMethodEnter(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, java.util.List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition exitType, Advice.Delegator delegator)
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 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)
Binds this dispatcher for resolution to a specific method.java.util.Map<java.lang.String,TypeDefinition>
getNamedTypes()
Returns the named types declared by this enter advice.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, Advice.PostProcessor postProcessor, Advice.Delegator delegator, java.util.List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition exitType, boolean methodExit)
Resolves enter advice that only exposes the enter type if this is necessary.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
-
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
-
Methods inherited from interface net.bytebuddy.asm.Advice.Dispatcher.Resolved
bind
-
-
-
-
Constructor Detail
-
ForMethodEnter
protected ForMethodEnter(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, java.util.List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition exitType, Advice.Delegator delegator)
Creates a new resolved dispatcher for implementing method enter advice.- Parameters:
adviceMethod
- The represented advice method.postProcessor
- The post processor to apply.userFactories
- A list of user-defined factories for offset mappings.exitType
- The exit type orvoid
if no exit type is defined.delegator
- The delegator to use.
-
-
Method Detail
-
of
protected static Advice.Dispatcher.Resolved.ForMethodEnter of(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, Advice.Delegator delegator, java.util.List<? extends Advice.OffsetMapping.Factory<?>> userFactories, TypeDefinition exitType, 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.delegator
- The delegator to use.userFactories
- A list of user-defined factories for offset mappings.exitType
- The exit type orvoid
if no exit type is defined.methodExit
-true
if exit advice is applied.- Returns:
- An appropriate enter handler.
-
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.
-
getNamedTypes
public java.util.Map<java.lang.String,TypeDefinition> getNamedTypes()
Returns the named types declared by this enter advice.- Specified by:
getNamedTypes
in interfaceAdvice.Dispatcher.Resolved.ForMethodEnter
- Returns:
- The named types declared by this enter advice.
-
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
protected 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)
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.- Returns:
- An appropriate bound advice dispatcher.
-
-