Enum Class MethodAttributeAppender.ForInstrumentedMethod

java.lang.Object
java.lang.Enum<MethodAttributeAppender.ForInstrumentedMethod>
net.bytebuddy.implementation.attribute.MethodAttributeAppender.ForInstrumentedMethod
All Implemented Interfaces:
Serializable, Comparable<MethodAttributeAppender.ForInstrumentedMethod>, Constable, MethodAttributeAppender, MethodAttributeAppender.Factory
Enclosing interface:
MethodAttributeAppender

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.

  • Enum Constant Details

    • EXCLUDING_RECEIVER

      public static final MethodAttributeAppender.ForInstrumentedMethod 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

      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.

  • 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 name
      NullPointerException - if the argument is null
    • make

      public MethodAttributeAppender make(TypeDescription typeDescription)
      Returns a method attribute appender that is applicable for a given type description.
      Specified by:
      make in interface MethodAttributeAppender.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 interface MethodAttributeAppender
      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.