Class MethodDelegationBinder.MethodBinding.Builder.Build

java.lang.Object
net.bytebuddy.implementation.bind.MethodDelegationBinder.MethodBinding.Builder.Build
All Implemented Interfaces:
MethodDelegationBinder.MethodBinding, StackManipulation
Enclosing class:
MethodDelegationBinder.MethodBinding.Builder

@Enhance protected static class MethodDelegationBinder.MethodBinding.Builder.Build extends Object implements MethodDelegationBinder.MethodBinding
A method binding that was created by a MethodDelegationBinder.MethodBinding.Builder.
  • Field Details

    • target

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

      private final Map<?,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 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 Details

    • Build

      protected Build(MethodDescription target, Map<?,Integer> registeredTargetIndices, StackManipulation methodInvocation, 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 Details

    • 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

      @MaybeNull public Integer getTargetParameterIndex(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.
    • getTarget

      public MethodDescription getTarget()
      Returns the target method of the method binding attempt.
      Specified by:
      getTarget in interface MethodDelegationBinder.MethodBinding
      Returns:
      The target method to which the
    • 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.