Class MethodDelegationBinder.MethodBinding.Builder.Build

    • Field Detail

      • target

        private final MethodDescription target
        The target method this binding represents.
      • registeredTargetIndices

        private final java.util.Map<?,​java.lang.Integer> registeredTargetIndices
        A map of identification tokens to the indices of their binding parameters.
      • methodInvocation

        private final StackManipulation methodInvocation
        A stack manipulation that represents the actual method invocation.
      • parameterStackManipulations

        private final java.util.List<StackManipulation> parameterStackManipulations
        A list of manipulations that each represent the loading of a parameter value onto the operand stack.
      • terminatingStackManipulation

        private final StackManipulation terminatingStackManipulation
        The stack manipulation that is applied after the method invocation.
    • Constructor Detail

      • Build

        protected Build​(MethodDescription target,
                        java.util.Map<?,​java.lang.Integer> registeredTargetIndices,
                        StackManipulation methodInvocation,
                        java.util.List<StackManipulation> parameterStackManipulations,
                        StackManipulation terminatingStackManipulation)
        Creates a new method binding.
        Parameters:
        target - The target method this binding represents.
        registeredTargetIndices - A map of identification tokens to the indices of their binding parameters.
        methodInvocation - A stack manipulation that represents the actual method invocation.
        parameterStackManipulations - A list of manipulations that each represent the loading of a parameter value onto the operand stack.
        terminatingStackManipulation - The stack manipulation that is applied after the method invocation.
    • Method Detail

      • isValid

        public boolean isValid()
        Determines if this stack manipulation is valid.
        Specified by:
        isValid in interface StackManipulation
        Returns:
        If false, this manipulation cannot be applied and should throw an exception.
      • getTargetParameterIndex

        public java.lang.Integer getTargetParameterIndex​(java.lang.Object parameterBindingToken)
        Returns the target method's parameter index for a given parameter binding token.

         

        A binding token can be any object that implements valid Object.hashCode() and Object.equals(Object) methods in order to look up a given binding. This way, two bindings can be evaluated of having performed a similar type of binding such that these bindings can be compared and a dominant binding can be identified by an MethodDelegationBinder.AmbiguityResolver. Furthermore, a binding is implicitly required to insure the uniqueness of such a parameter binding.
        Specified by:
        getTargetParameterIndex in interface MethodDelegationBinder.MethodBinding
        Parameters:
        parameterBindingToken - A token which is used to identify a specific unique binding for a given parameter of the target method.
        Returns:
        The target method's parameter index of this binding or null if no such argument binding was applied for this binding.
      • apply

        public StackManipulation.Size apply​(org.objectweb.asm.MethodVisitor methodVisitor,
                                            Implementation.Context implementationContext)
        Applies the stack manipulation that is described by this instance.
        Specified by:
        apply in interface StackManipulation
        Parameters:
        methodVisitor - The method visitor used to write the method implementation to.
        implementationContext - The context of the current implementation.
        Returns:
        The changes to the size of the operand stack that are implied by this stack manipulation.