Class InvocationHandlerAdapter

    • Field Detail

      • fieldName

        protected final String fieldName
        The name of the field for storing an invocation handler.
      • assigner

        protected final Assigner assigner
        The assigner that is used for assigning the return invocation handler's return value to the intercepted method's return value.
      • cached

        protected final boolean cached
        Determines if the Method instances that are handed to the intercepted methods are cached in static fields.
      • privileged

        protected final boolean privileged
        Determines if the Method instances are retrieved by using an AccessController.
    • Constructor Detail

      • InvocationHandlerAdapter

        protected InvocationHandlerAdapter​(String fieldName,
                                           boolean cached,
                                           boolean privileged,
                                           Assigner assigner)
        Creates a new invocation handler for a given field.
        Parameters:
        fieldName - The name of the field.
        cached - Determines if the Method instances that are handed to the intercepted methods are cached in static fields.
        privileged - Determines if the Method instances are retrieved by using an AccessController.
        assigner - The assigner to apply when defining this implementation.
    • Method Detail

      • of

        public static InvocationHandlerAdapter of​(InvocationHandler invocationHandler)
        Creates an implementation for any instance of an InvocationHandler that delegates all method interceptions to the given instance which will be stored in a static field.
        Parameters:
        invocationHandler - The invocation handler to which all method calls are delegated.
        Returns:
        An implementation that delegates all method interceptions to the given invocation handler.
      • of

        public static InvocationHandlerAdapter of​(InvocationHandler invocationHandler,
                                                  String fieldName)
        Creates an implementation for any instance of an InvocationHandler that delegates all method interceptions to the given instance which will be stored in a static field.
        Parameters:
        invocationHandler - The invocation handler to which all method calls are delegated.
        fieldName - The name of the field.
        Returns:
        An implementation that delegates all method interceptions to the given invocation handler.
      • toField

        public static InvocationHandlerAdapter toField​(String name)
        Creates an implementation for any InvocationHandler that delegates all method interceptions to a field with the given name. This field has to be of a subtype of invocation handler and needs to be set before any invocations are intercepted. Otherwise, a NullPointerException will be thrown.
        Parameters:
        name - The name of the field.
        Returns:
        An implementation that delegates all method interceptions to an instance field of the given name.
      • toField

        public static InvocationHandlerAdapter toField​(String name,
                                                       FieldLocator.Factory fieldLocatorFactory)
        Creates an implementation for any InvocationHandler that delegates all method interceptions to a field with the given name. This field has to be of a subtype of invocation handler and needs to be set before any invocations are intercepted. Otherwise, a NullPointerException will be thrown.
        Parameters:
        name - The name of the field.
        fieldLocatorFactory - The field locator factory
        Returns:
        An implementation that delegates all method interceptions to an instance field of the given name.
      • withAssigner

        public abstract Implementation withAssigner​(Assigner assigner)
        Configures an assigner to use with this invocation handler adapter.
        Parameters:
        assigner - The assigner to apply when defining this implementation.
        Returns:
        This instrumentation with the given assigner configured.
      • apply

        protected ByteCodeAppender.Size apply​(org.objectweb.asm.MethodVisitor methodVisitor,
                                              Implementation.Context implementationContext,
                                              MethodDescription instrumentedMethod,
                                              StackManipulation preparingManipulation,
                                              FieldDescription fieldDescription)
        Applies an implementation that delegates to a invocation handler.
        Parameters:
        methodVisitor - The method visitor for writing the byte code to.
        implementationContext - The implementation context for the current implementation.
        instrumentedMethod - The method that is instrumented.
        preparingManipulation - A stack manipulation that applies any preparation to the operand stack.
        fieldDescription - The field that contains the value for the invocation handler.
        Returns:
        The size of the applied assignment.