Enum Class MemberSubstitution.Source

java.lang.Object
java.lang.Enum<MemberSubstitution.Source>
net.bytebuddy.asm.MemberSubstitution.Source
All Implemented Interfaces:
Serializable, Comparable<MemberSubstitution.Source>, Constable
Enclosing class:
MemberSubstitution

public static enum MemberSubstitution.Source extends Enum<MemberSubstitution.Source>
Identifies the source of an instruction that might describe a value of the substituted element or the instrumented method.
  • Enum Constant Details

    • SUBSTITUTED_ELEMENT

      public static final MemberSubstitution.Source SUBSTITUTED_ELEMENT
      Indicates that an element should be loaded in context of the substituted method, constructor or field.
    • ENCLOSING_METHOD

      public static final MemberSubstitution.Source ENCLOSING_METHOD
      Indicates that an element should be loaded in context of the instrumented method.
  • Constructor Details

    • Source

      private Source()
  • Method Details

    • values

      public static MemberSubstitution.Source[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static MemberSubstitution.Source valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • element

      protected abstract ByteCodeElement.Member element(ByteCodeElement.Member original, MethodDescription instrumentedMethod)
      Resolves the targeted byte code element.
      Parameters:
      original - The substituted element.
      instrumentedMethod - The instrumented element.
      Returns:
      The byte code element that is represented by this source.
    • self

      @MaybeNull protected abstract MemberSubstitution.Source.Value self(TypeList.Generic parameters, Map<Integer,Integer> offsets, ByteCodeElement.Member original, MethodDescription instrumentedMethod)
      Resolves a value representation of the this reference or null if no such reference is available.
      Parameters:
      parameters - The list of parameters of the substituted element.
      offsets - A mapping of offsets of parameter indices to offsets.
      original - The substituted element.
      instrumentedMethod - The instrumented method.
      Returns:
      A representation of the this reference or null if no such reference is available.
    • argument

      @MaybeNull protected abstract MemberSubstitution.Source.Value argument(int index, TypeList.Generic parameters, Map<Integer,Integer> offsets, ByteCodeElement.Member original, MethodDescription instrumentedMethod)
      Resolves a value representation of the parameter of the specified index or null if no such parameter is available.
      Parameters:
      index - The index of the targeted parameter.
      parameters - The list of parameters of the substituted element.
      offsets - A mapping of offsets of parameter indices to offsets.
      original - The substituted element.
      instrumentedMethod - The instrumented method.
      Returns:
      A representation of the parameter of the specified index or null if no such parameter is available.
    • arguments

      protected abstract List<MemberSubstitution.Source.Value> arguments(boolean includesSelf, TypeList.Generic parameters, Map<Integer,Integer> offsets, ByteCodeElement.Member original, MethodDescription instrumentedMethod)
      Resolves a list of value representation of all parameters.
      Parameters:
      includesSelf - true if the this reference should be included if available.
      parameters - The list of parameters of the substituted element.
      offsets - A mapping of offsets of parameter indices to offsets.
      original - The substituted element.
      instrumentedMethod - The instrumented method.
      Returns:
      A list of representation of all values of all parameters.
    • handle

      protected abstract JavaConstant.MethodHandle handle(JavaConstant.MethodHandle methodHandle, MethodDescription instrumentedMethod)
      Resolves a method handle.
      Parameters:
      methodHandle - A method handle of the substituted element.
      instrumentedMethod - The instrumented method.
      Returns:
      An appropriate method handle.
    • isRepresentable

      protected abstract boolean isRepresentable(MemberSubstitution.Substitution.Chain.Step.ForDelegation.OffsetMapping.ForOrigin.Sort sort, ByteCodeElement.Member original, MethodDescription instrumentedMethod)
      Validates if the supplied origin sort is representable.
      Parameters:
      sort - The sort of origin.
      original - The substituted element.
      instrumentedMethod - The instrumented method.
      Returns:
      true if the supplied sort of origin is representable.
    • resolve

      Resolves a stack manipulation that loads the supplied sort of origin onto the operand stack.
      Parameters:
      sort - The sort of origin.
      original - The substituted element.
      parameters - The parameters to the substituted element.
      result - The type upon which the substituted element is invoked.
      instrumentedMethod - The instrumented method.
      Returns:
      A stack manipulation loading the supplied sort of origin onto the operand stack.