public static enum MethodAttributeAppender.ForInstrumentedMethod extends Enum<MethodAttributeAppender.ForInstrumentedMethod> implements MethodAttributeAppender, MethodAttributeAppender.Factory
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.
MethodAttributeAppender.Compound, MethodAttributeAppender.Explicit, MethodAttributeAppender.Factory, MethodAttributeAppender.ForInstrumentedMethod, MethodAttributeAppender.ForReceiverType, MethodAttributeAppender.NoOp
MethodAttributeAppender.Factory.Compound
Enum Constant and Description |
---|
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.
|
Modifier and Type | Method and Description |
---|---|
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.
|
void |
apply(MethodVisitor methodVisitor,
MethodDescription methodDescription,
AnnotationValueFilter annotationValueFilter)
Applies this attribute appender to a given method visitor.
|
MethodAttributeAppender |
make(TypeDescription typeDescription)
Returns a method attribute appender that is applicable for a given type description.
|
static MethodAttributeAppender.ForInstrumentedMethod |
valueOf(String name)
Returns the enum constant of this type with the specified name.
|
static MethodAttributeAppender.ForInstrumentedMethod[] |
values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
public static final MethodAttributeAppender.ForInstrumentedMethod EXCLUDING_RECEIVER
public static final MethodAttributeAppender.ForInstrumentedMethod 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.
public static MethodAttributeAppender.ForInstrumentedMethod[] values()
for (MethodAttributeAppender.ForInstrumentedMethod c : MethodAttributeAppender.ForInstrumentedMethod.values()) System.out.println(c);
public static MethodAttributeAppender.ForInstrumentedMethod valueOf(String name)
name
- the name of the enum constant to be returned.IllegalArgumentException
- if this enum type has no constant with the specified nameNullPointerException
- if the argument is nullpublic MethodAttributeAppender make(TypeDescription typeDescription)
make
in interface MethodAttributeAppender.Factory
typeDescription
- The type for which a method attribute appender is to be applied for.public void apply(MethodVisitor methodVisitor, MethodDescription methodDescription, AnnotationValueFilter annotationValueFilter)
apply
in interface MethodAttributeAppender
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.protected abstract AnnotationAppender appendReceiver(AnnotationAppender annotationAppender, AnnotationValueFilter annotationValueFilter, MethodDescription methodDescription)
annotationAppender
- The annotation appender to use.annotationValueFilter
- The annotation value filter to apply when the annotations are written.methodDescription
- The instrumented method.Copyright © 2014–2020. All rights reserved.