Enum MethodAttributeAppender.ForInstrumentedMethod

    • Enum Constant Detail

      • 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 Detail

      • ForInstrumentedMethod

        private ForInstrumentedMethod()
    • Method Detail

      • values

        public static MethodAttributeAppender.ForInstrumentedMethod[] values()
        Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:
        for (MethodAttributeAppender.ForInstrumentedMethod c : MethodAttributeAppender.ForInstrumentedMethod.values())
            System.out.println(c);
        
        Returns:
        an array containing the constants of this enum type, in the order they are declared
      • valueOf

        public static MethodAttributeAppender.ForInstrumentedMethod valueOf​(java.lang.String name)
        Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (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:
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        java.lang.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.