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 Classes Modifier and Type Class Description protected static classAdvice.Dispatcher.Inlining.Resolved.ForMethodEnter.WithDiscardedEnterTypeImplementation of an advice that does not expose an enter type.protected static classAdvice.Dispatcher.Inlining.Resolved.ForMethodEnter.WithRetainedEnterTypeImplementation 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 Modifier and Type Field Description private java.util.Map<java.lang.String,TypeDefinition>namedTypesA mapping of all available local variables by their name to their type.private booleanprependLineNumbertrueif 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
Constructors Modifier Constructor Description protectedForMethodEnter(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, java.util.Map<java.lang.String,TypeDefinition> namedTypes, java.util.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
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.objectweb.asm.MethodVisitorapply(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.Boundbind(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.MethodVisitordoApply(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)Applies a resolution for a given instrumented method.java.util.Map<java.lang.String,TypeDefinition>getNamedTypes()Returns the named types declared by this enter advice.booleanisPrependLineNumber()Returnstrueif the first discovered line number information should be prepended to the advice code.protected static Advice.Dispatcher.Resolved.ForMethodEnterof(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, java.util.Map<java.lang.String,TypeDefinition> namedTypes, java.util.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 java.util.Map<java.lang.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 Detail
-
namedTypes
private final java.util.Map<java.lang.String,TypeDefinition> namedTypes
A mapping of all available local variables by their name to their type.
-
prependLineNumber
private final boolean prependLineNumber
trueif the first discovered line number information should be prepended to the advice code.
-
-
Constructor Detail
-
ForMethodEnter
protected ForMethodEnter(MethodDescription.InDefinedShape adviceMethod, Advice.PostProcessor postProcessor, java.util.Map<java.lang.String,TypeDefinition> namedTypes, java.util.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 orvoidif no exit type is defined.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, Advice.PostProcessor postProcessor, java.util.Map<java.lang.String,TypeDefinition> namedTypes, java.util.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 orvoidif no exit type is defined.classReader- The class reader for parsing the advice method's class file.methodExit-trueif exit advice is applied.- Returns:
- An appropriate enter handler.
-
resolveInitializationTypes
protected java.util.Map<java.lang.Integer,TypeDefinition> resolveInitializationTypes(Advice.ArgumentHandler argumentHandler)
Description copied from class:Advice.Dispatcher.Inlining.ResolvedResolves the initialization types of this advice method.- Specified by:
resolveInitializationTypesin 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:
bindin 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()
Returnstrueif the first discovered line number information should be prepended to the advice code.- Specified by:
isPrependLineNumberin interfaceAdvice.Dispatcher.Resolved.ForMethodEnter- Returns:
trueif 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:
getNamedTypesin interfaceAdvice.Dispatcher.Resolved.ForMethodEnter- Returns:
- The named types declared by this enter 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)Description copied from class:Advice.Dispatcher.Inlining.ResolvedApplies a resolution for a given instrumented method.- Specified by:
applyin 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.
-
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)Applies a resolution for a given instrumented 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:
- A method visitor for visiting the advice method's byte code.
-
-