Class DefaultMethodCall.Appender

    • Field Detail

      • implementationTarget

        private final Implementation.Target implementationTarget
        The implementation target of this appender.
      • prioritizedInterfaces

        private final java.util.List<TypeDescription> prioritizedInterfaces
        The relevant prioritized interfaces to be considered by this appender.
      • nonPrioritizedInterfaces

        @ValueHandling(IGNORE)
        private final java.util.Set<TypeDescription> nonPrioritizedInterfaces
        The relevant non-prioritized interfaces to be considered by this appender.
    • Constructor Detail

      • Appender

        protected Appender​(Implementation.Target implementationTarget,
                           java.util.List<TypeDescription> prioritizedInterfaces)
        Creates a new appender for implementing a DefaultMethodCall.
        Parameters:
        implementationTarget - The implementation target of this appender.
        prioritizedInterfaces - The relevant prioritized interfaces to be considered by this appender.
    • Method Detail

      • apply

        public ByteCodeAppender.Size apply​(org.objectweb.asm.MethodVisitor methodVisitor,
                                           Implementation.Context implementationContext,
                                           MethodDescription instrumentedMethod)
        Applies this byte code appender to a type creation process.
        Specified by:
        apply in interface ByteCodeAppender
        Parameters:
        methodVisitor - The method visitor to which the byte code appender writes its code to.
        implementationContext - The implementation context of the current type creation process.
        instrumentedMethod - The method that is the target of the instrumentation.
        Returns:
        The required size for the applied byte code to run.
      • locateDefault

        private StackManipulation locateDefault​(MethodDescription methodDescription)
        Locates a special method invocation to be invoked from a given method.
        Parameters:
        methodDescription - The method that is currently instrumented.
        Returns:
        A potentially illegal stack manipulation representing the default method invocation for the given method.