Class Advice.WithCustomMapping

  • Enclosing class:
    Advice

    @Enhance
    public static class Advice.WithCustomMapping
    extends Object
    A builder step for creating an Advice that uses custom mappings of annotations to constant pool values.
    • Constructor Detail

      • WithCustomMapping

        protected WithCustomMapping()
        Creates a new custom mapping builder step without including any custom mappings.
      • WithCustomMapping

        protected WithCustomMapping​(Advice.PostProcessor.Factory postProcessorFactory,
                                    Map<Class<? extends Annotation>,​Advice.OffsetMapping.Factory<?>> offsetMappings,
                                    Advice.Delegator delegator)
        Creates a new custom mapping builder step with the given custom mappings.
        Parameters:
        postProcessorFactory - The post processor factory to apply.
        offsetMappings - A map containing dynamically computed constant pool values that are mapped by their triggering annotation type.
        delegator - The delegator to use.
    • Method Detail

      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    Object value)
        Binds the supplied annotation to a type constant of the supplied value. Constants can be strings, method handles, method types and any primitive or the value null.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        value - The value to bind to the annotation.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    Field field)
        Binds the supplied annotation to the value of the supplied field. The field must be visible by the instrumented type and must be declared by a super type of the instrumented field.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        field - The field to bind to this annotation.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    FieldDescription fieldDescription)
        Binds the supplied annotation to the value of the supplied field. The field must be visible by the instrumented type and must be declared by a super type of the instrumented field. The binding is defined as read-only and applied static typing.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        fieldDescription - The field to bind to this annotation.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    Method method,
                                                                    int index)
        Binds the supplied annotation to the supplied parameter's argument.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        method - The method that defines the parameter.
        index - The index of the parameter.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    Constructor<?> constructor,
                                                                    int index)
        Binds the supplied annotation to the supplied parameter's argument.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        constructor - The constructor that defines the parameter.
        index - The index of the parameter.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    ParameterDescription parameterDescription)
        Binds the supplied annotation to the supplied parameter's argument. The binding is declared read-only and applies static typing.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        parameterDescription - The parameter for which to bind an argument.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    Class<?> value)
        Binds the supplied annotation to the supplied type constant.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        value - The type constant to bind.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    TypeDescription value)
        Binds the supplied annotation to the supplied type constant.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        value - The type constant to bind.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    Enum<?> value)
        Binds the supplied annotation to the supplied enumeration constant.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        value - The enumeration constant to bind.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    EnumerationDescription value)
        Binds the supplied annotation to the supplied enumeration constant.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        value - The enumeration constant to bind.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bindSerialized

        public <T extends AnnotationAdvice.WithCustomMapping bindSerialized​(Class<T> type,
                                                                              Serializable value)
        Binds the supplied annotation to the supplied fixed value.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        value - The value to bind to this annotation.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bindSerialized

        public <T extends Annotation,​S extends SerializableAdvice.WithCustomMapping bindSerialized​(Class<T> type,
                                                                                                           S value,
                                                                                                           Class<? super S> targetType)
        Binds the supplied annotation to the supplied fixed value.
        Type Parameters:
        T - The annotation type.
        S - The type of the serialized instance.
        Parameters:
        type - The type of the annotation being bound.
        value - The value to bind to this annotation.
        targetType - The type of value as which the instance should be treated.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bindProperty

        public <T extends AnnotationAdvice.WithCustomMapping bindProperty​(Class<T> type,
                                                                            String property)
        Binds the supplied annotation to the annotation's property of the specified name.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        property - The name of the annotation property to be bound.
        Returns:
        A new builder for an advice that considers the supplied annotation during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    StackManipulation stackManipulation,
                                                                    Type targetType)
        Binds the supplied annotation to the annotation's property of the specified name.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        stackManipulation - The stack manipulation loading the bound value.
        targetType - The type of the loaded value.
        Returns:
        A new builder for an advice that considers the supplied annotation during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    StackManipulation stackManipulation,
                                                                    TypeDescription.Generic targetType)
        Binds the supplied annotation to the annotation's property of the specified name.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        stackManipulation - The stack manipulation loading the bound value.
        targetType - The type of the loaded value.
        Returns:
        A new builder for an advice that considers the supplied annotation during binding.
      • bind

        public <T extends AnnotationAdvice.WithCustomMapping bind​(Class<T> type,
                                                                    Advice.OffsetMapping offsetMapping)
        Binds the supplied annotation to the annotation's property of the specified name.
        Type Parameters:
        T - The annotation type.
        Parameters:
        type - The type of the annotation being bound.
        offsetMapping - The offset mapping being bound.
        Returns:
        A new builder for an advice that considers the supplied annotation during binding.
      • bind

        public Advice.WithCustomMapping bind​(Advice.OffsetMapping.Factory<?> offsetMapping)
        Binds an annotation to a dynamically computed value. Whenever the Advice component discovers the given annotation on a parameter of an advice method, the dynamic value is asked to provide a value that is then assigned to the parameter in question.
        Parameters:
        offsetMapping - The dynamic value that is computed for binding the parameter to a value.
        Returns:
        A new builder for an advice that considers the supplied annotation type during binding.
      • bootstrap

        public Advice.WithCustomMapping bootstrap​(Constructor<?> constructor)
        Defines the supplied constructor as an dynamic invocation bootstrap target for delegating advice methods. The bootstrap method arguments are:
        • A java.lang.invoke.MethodHandles.Lookup representing the source method.
        • A String representing the constructor's internal name <init>.
        • A java.lang.invoke.MethodType representing the type that is requested for binding.
        • A String of the binary target class name.
        • A int with value 0 for an enter advice and {code 1} for an exist advice.
        • A Class representing the class implementing the instrumented method.
        • A String with the name of the instrumented method.
        • A java.lang.invoke.MethodHandle representing the instrumented method unless the target is the type's static initializer.
        Parameters:
        constructor - The bootstrap constructor.
        Returns:
        A new builder for an advice that uses the supplied constructor for bootstrapping.
      • bootstrap

        public Advice.WithCustomMapping bootstrap​(Method method)
        Defines the supplied method as an dynamic invocation bootstrap target for delegating advice methods. The bootstrap method arguments are:
        • A java.lang.invoke.MethodHandles.Lookup representing the source method.
        • A String representing the method's name.
        • A java.lang.invoke.MethodType representing the type that is requested for binding.
        • A String of the binary target class name.
        • A int with value 0 for an enter advice and {code 1} for an exist advice.
        • A Class representing the class implementing the instrumented method.
        • A String with the name of the instrumented method.
        • A java.lang.invoke.MethodHandle representing the instrumented method unless the target is the type's static initializer.
        Parameters:
        method - The bootstrap method.
        Returns:
        A new builder for an advice that uses the supplied method for bootstrapping.
      • bootstrap

        public Advice.WithCustomMapping bootstrap​(MethodDescription.InDefinedShape bootstrap)
        Defines the supplied method or constructor as an dynamic invocation bootstrap target for delegating advice methods. The bootstrap method arguments are:
        • A java.lang.invoke.MethodHandles.Lookup representing the source method.
        • A String representing the method's name or constructor's internal name <init>.
        • A java.lang.invoke.MethodType representing the type that is requested for binding.
        • A String of the binary target class name.
        • A int with value 0 for an enter advice and {code 1} for an exist advice.
        • A Class representing the class implementing the instrumented method.
        • A String with the name of the instrumented method.
        • A java.lang.invoke.MethodHandle representing the instrumented method unless the target is the type's static initializer.
        Parameters:
        bootstrap - The bootstrap method or constructor.
        Returns:
        A new builder for an advice that uses the supplied method or constructor for bootstrapping.
      • with

        public Advice.WithCustomMapping with​(Advice.PostProcessor.Factory postProcessorFactory)
        Adds the supplied post processor factory for advice method post processing.
        Parameters:
        postProcessorFactory - The post processor factory to add.
        Returns:
        A new builder for an advice that applies the supplied post processor factory.
      • to

        public Advice to​(Class<?> advice)
        Implements advice where every matched method is advised by the given type's advisory methods. The advices binary representation is accessed by querying the class loader of the supplied class for a class file.
        Parameters:
        advice - The type declaring the advice.
        Returns:
        A method visitor wrapper representing the supplied advice.
      • to

        public Advice to​(Class<?> advice,
                         ClassFileLocator classFileLocator)
        Implements advice where every matched method is advised by the given type's advisory methods.
        Parameters:
        advice - The type declaring the advice.
        classFileLocator - The class file locator for locating the advisory class's class file.
        Returns:
        A method visitor wrapper representing the supplied advice.
      • to

        public Advice to​(TypeDescription advice,
                         ClassFileLocator classFileLocator)
        Implements advice where every matched method is advised by the given type's advisory methods.
        Parameters:
        advice - A description of the type declaring the advice.
        classFileLocator - The class file locator for locating the advisory class's class file.
        Returns:
        A method visitor wrapper representing the supplied advice.
      • to

        public Advice to​(Class<?> enterAdvice,
                         Class<?> exitAdvice)
        Implements advice where every matched method is advised by the given type's advisory methods. The advices binary representation is accessed by querying the class loader of the supplied class for a class file.
        Parameters:
        enterAdvice - The type declaring the enter advice.
        exitAdvice - The type declaring the exit advice.
        Returns:
        A method visitor wrapper representing the supplied advice.
      • to

        public Advice to​(Class<?> enterAdvice,
                         Class<?> exitAdvice,
                         ClassFileLocator classFileLocator)
        Implements advice where every matched method is advised by the given type's advisory methods.
        Parameters:
        enterAdvice - The type declaring the enter advice.
        exitAdvice - The type declaring the exit advice.
        classFileLocator - The class file locator for locating the advisory class's class file.
        Returns:
        A method visitor wrapper representing the supplied advice.
      • to

        public Advice to​(TypeDescription enterAdvice,
                         TypeDescription exitAdvice)
        Implements advice where every matched method is advised by the given type's advisory methods. Using this method, a non-operational class file locator is specified for the advice target. This implies that only advice targets with the inline target set to false are resolvable by the returned instance.
        Parameters:
        enterAdvice - The type declaring the enter advice.
        exitAdvice - The type declaring the exit advice.
        Returns:
        A method visitor wrapper representing the supplied advice.
      • to

        public Advice to​(TypeDescription enterAdvice,
                         TypeDescription exitAdvice,
                         ClassFileLocator classFileLocator)
        Implements advice where every matched method is advised by the given type's advisory methods.
        Parameters:
        enterAdvice - The type declaring the enter advice.
        exitAdvice - The type declaring the exit advice.
        classFileLocator - The class file locator for locating the advisory class's class file.
        Returns:
        A method visitor wrapper representing the supplied advice.