Class FixedValue

    • Field Detail

      • assigner

        protected final Assigner assigner
        The assigner that is used for assigning the fixed value to a method's return type.
      • typing

        protected final Assigner.Typing typing
        Indicates if dynamic type castings should be attempted for incompatible assignments.
    • Constructor Detail

      • FixedValue

        protected FixedValue​(Assigner assigner,
                             Assigner.Typing typing)
        Creates a new fixed value implementation.
        Parameters:
        assigner - The assigner to use for assigning the fixed value to the return type of the instrumented value.
        typing - Indicates if dynamic type castings should be attempted for incompatible assignments.
    • Method Detail

      • value

        public static FixedValue.AssignerConfigurable value​(java.lang.Object fixedValue)

        Returns a fixed value from any intercepted method. The fixed value is stored in the constant pool if this is possible. Specifically, an argument that is a JavaConstant, TypeDescription, primitive, String or Class value is stored in the constant pool. Since Java 7, MethodHandle as well as MethodType references are also supported. Alternatively, the fixed value is stored in a static field.

        When a value is stored in the class's constant pool, its identity is lost. If an object's identity is important, the reference(Object) method should be used instead.

        Important: When supplying a method handle or a method type, all types that are implied must be visible to the instrumented type or an IllegalAccessException will be thrown at runtime.

        Parameters:
        fixedValue - The fixed value to return from the method.
        Returns:
        An implementation for the given value.
        See Also:
        value(JavaConstant), value(TypeDescription), nullValue()
      • reference

        public static FixedValue.AssignerConfigurable reference​(java.lang.Object fixedValue)
        Other than value(Object), this function will create a fixed value implementation that will always defined a field in the instrumented class. As a result, object identity will be preserved between the given value and the value that is returned by instrumented methods. The field name can be explicitly determined. The field name is generated from the fixed value's hash code.
        Parameters:
        fixedValue - The fixed value to be returned by methods that are instrumented by this implementation.
        Returns:
        An implementation for the given value.
      • reference

        public static FixedValue.AssignerConfigurable reference​(java.lang.Object fixedValue,
                                                                java.lang.String fieldName)
        Other than value(Object), this function will create a fixed value implementation that will always defined a field in the instrumented class. As a result, object identity will be preserved between the given value and the value that is returned by instrumented methods. The field name can be explicitly determined.
        Parameters:
        fixedValue - The fixed value to be returned by methods that are instrumented by this implementation.
        fieldName - The name of the field for storing the fixed value.
        Returns:
        An implementation for the given value.
      • value

        public static FixedValue.AssignerConfigurable value​(TypeDescription fixedValue)
        Returns the given type in form of a loaded type. The value is loaded from the written class's constant pool.
        Parameters:
        fixedValue - The type to return from the method.
        Returns:
        An implementation for the given value.
      • value

        public static FixedValue.AssignerConfigurable value​(JavaConstant fixedValue)
        Returns the loaded version of the given JavaConstant. The value is loaded from the written class's constant pool.
        Parameters:
        fixedValue - The type to return from the method.
        Returns:
        An implementation for the given value.
      • argument

        public static FixedValue.AssignerConfigurable argument​(int index)
        Returns the argument at the specified index.
        Parameters:
        index - The index of the argument to return.
        Returns:
        An implementation of a method that returns the argument at the specified index.
      • self

        public static FixedValue.AssignerConfigurable self()
        Returns this from an instrumented method.
        Returns:
        An implementation that returns this from a method.
      • nullValue

        public static Implementation nullValue()
        Returns a null value from an instrumented method.
        Returns:
        An implementation that returns null from a method.
      • originType

        public static FixedValue.AssignerConfigurable originType()
        Returns the origin type from an instrumented method.
        Returns:
        An implementation that returns the origin type of the current instrumented type.
      • apply

        protected ByteCodeAppender.Size apply​(org.objectweb.asm.MethodVisitor methodVisitor,
                                              Implementation.Context implementationContext,
                                              MethodDescription instrumentedMethod,
                                              TypeDescription.Generic fixedValueType,
                                              StackManipulation valueLoadingInstruction)
        Blueprint method that for applying the actual implementation.
        Parameters:
        methodVisitor - The method visitor to which the implementation is applied to.
        implementationContext - The implementation context for the given implementation.
        instrumentedMethod - The instrumented method that is target of the implementation.
        fixedValueType - A description of the type of the fixed value that is loaded by the valueLoadingInstruction.
        valueLoadingInstruction - A stack manipulation that represents the loading of the fixed value onto the operand stack.
        Returns:
        A representation of the stack and variable array sized that are required for this implementation.