Enum Class MethodAttributeAppender.ForInstrumentedMethod
- All Implemented Interfaces:
Serializable
,Comparable<MethodAttributeAppender.ForInstrumentedMethod>
,Constable
,MethodAttributeAppender
,MethodAttributeAppender.Factory
- Enclosing interface:
MethodAttributeAppender
Implementation of a method attribute appender that writes all annotations of the instrumented method to the method that is being created. This includes method and parameter annotations.
Important: This attribute appender does not apply for annotation types within the jdk.internal.
namespace
which are silently ignored. If such annotations should be inherited, they need to be added explicitly.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>>
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.attribute.MethodAttributeAppender
MethodAttributeAppender.Compound, MethodAttributeAppender.Explicit, MethodAttributeAppender.Factory, MethodAttributeAppender.ForInstrumentedMethod, MethodAttributeAppender.ForReceiverType, MethodAttributeAppender.NoOp
Nested classes/interfaces inherited from interface net.bytebuddy.implementation.attribute.MethodAttributeAppender.Factory
MethodAttributeAppender.Factory.Compound
-
Enum Constant Summary
Enum ConstantsEnum ConstantDescriptionAppends all annotations of the instrumented method but not the annotations of the method's receiver type if such a type exists.Appends all annotations of the instrumented method including the annotations of the method's receiver type if such a type exists. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract AnnotationAppender
appendReceiver
(AnnotationAppender annotationAppender, AnnotationValueFilter annotationValueFilter, MethodDescription methodDescription) Appends the annotations of the instrumented method's receiver type if this is enabled and such a type exists.void
apply
(org.objectweb.asm.MethodVisitor methodVisitor, MethodDescription methodDescription, AnnotationValueFilter annotationValueFilter) Applies this attribute appender to a given method visitor.make
(TypeDescription typeDescription) Returns a method attribute appender that is applicable for a given type description.Returns the enum constant of this class with the specified name.values()
Returns an array containing the constants of this enum class, in the order they are declared.
-
Enum Constant Details
-
EXCLUDING_RECEIVER
Appends all annotations of the instrumented method but not the annotations of the method's receiver type if such a type exists. -
INCLUDING_RECEIVER
Appends all annotations of the instrumented method including the annotations of the method's receiver type if such a type exists.
If a method is overridden, the annotations can be misplaced if the overriding class does not expose a similar structure to the method that declared the method, i.e. the same amount of type variables and similar owner types. If this is not the case, type annotations are appended as if the overridden method was declared by the original type. This does not corrupt the resulting class file but it might result in type annotations not being visible via core reflection. This might however confuse other tools that parse the resulting class file manually.
-
-
Constructor Details
-
ForInstrumentedMethod
private ForInstrumentedMethod()
-
-
Method Details
-
values
Returns an array containing the constants of this enum class, in the order they are declared.- Returns:
- an array containing the constants of this enum class, in the order they are declared
-
valueOf
Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException
- if this enum class has no constant with the specified nameNullPointerException
- if the argument is null
-
make
Returns a method attribute appender that is applicable for a given type description.- Specified by:
make
in interfaceMethodAttributeAppender.Factory
- Parameters:
typeDescription
- The type for which a method attribute appender is to be applied for.- Returns:
- The method attribute appender which should be applied for the given type.
-
apply
public void apply(org.objectweb.asm.MethodVisitor methodVisitor, MethodDescription methodDescription, AnnotationValueFilter annotationValueFilter) Applies this attribute appender to a given method visitor.- Specified by:
apply
in interfaceMethodAttributeAppender
- Parameters:
methodVisitor
- The method visitor to which the attributes that are represented by this attribute appender are written to.methodDescription
- The description of the method for which the given method visitor creates an instrumentation for.annotationValueFilter
- The annotation value filter to apply when the annotations are written.
-
appendReceiver
protected abstract AnnotationAppender appendReceiver(AnnotationAppender annotationAppender, AnnotationValueFilter annotationValueFilter, MethodDescription methodDescription) Appends the annotations of the instrumented method's receiver type if this is enabled and such a type exists.- Parameters:
annotationAppender
- The annotation appender to use.annotationValueFilter
- The annotation value filter to apply when the annotations are written.methodDescription
- The instrumented method.- Returns:
- The resulting annotation appender.
-