Class AgentBuilder.LambdaInstrumentationStrategy.LambdaInstanceFactory

  • Enclosing class:
    AgentBuilder.LambdaInstrumentationStrategy

    @Enhance
    protected static class AgentBuilder.LambdaInstrumentationStrategy.LambdaInstanceFactory
    extends java.lang.Object
    A factory that creates instances that represent lambda expressions.
    • Field Detail

      • LAMBDA_FACTORY

        private static final java.lang.String LAMBDA_FACTORY
        The name of a factory for a lambda expression.
        See Also:
        Constant Field Values
      • FIELD_PREFIX

        private static final java.lang.String FIELD_PREFIX
        A prefix for a field that represents a property of a lambda expression.
        See Also:
        Constant Field Values
      • LAMBDA_TYPE_INFIX

        private static final java.lang.String LAMBDA_TYPE_INFIX
        The infix to use for naming classes that represent lambda expression. The additional prefix is necessary because the subsequent counter is not sufficient to keep names unique compared to the original factory.
        See Also:
        Constant Field Values
      • NOT_PREVIOUSLY_DEFINED

        private static final java.lang.Class<?> NOT_PREVIOUSLY_DEFINED
        A type-safe constant to express that a class is not already loaded when applying a class file transformer.
      • LAMBDA_NAME_COUNTER

        private static final java.util.concurrent.atomic.AtomicInteger LAMBDA_NAME_COUNTER
        A counter for naming lambda expressions randomly.
      • byteBuddy

        private final ByteBuddy byteBuddy
        The Byte Buddy instance to use for creating lambda objects.
    • Constructor Detail

      • LambdaInstanceFactory

        protected LambdaInstanceFactory​(ByteBuddy byteBuddy)
        Creates a new lambda instance factory.
        Parameters:
        byteBuddy - The Byte Buddy instance to use for creating lambda objects.
    • Method Detail

      • make

        public byte[] make​(java.lang.Object targetTypeLookup,
                           java.lang.String lambdaMethodName,
                           java.lang.Object factoryMethodType,
                           java.lang.Object lambdaMethodType,
                           java.lang.Object targetMethodHandle,
                           java.lang.Object specializedLambdaMethodType,
                           boolean serializable,
                           java.util.List<java.lang.Class<?>> markerInterfaces,
                           java.util.List<?> additionalBridges,
                           java.util.Collection<? extends java.lang.instrument.ClassFileTransformer> classFileTransformers)
        Applies this lambda meta factory.
        Parameters:
        targetTypeLookup - A lookup context representing the creating class of this lambda expression.
        lambdaMethodName - The name of the lambda expression's represented method.
        factoryMethodType - The type of the lambda expression's represented method.
        lambdaMethodType - The type of the lambda expression's factory method.
        targetMethodHandle - A handle representing the target of the lambda expression's method.
        specializedLambdaMethodType - A specialization of the type of the lambda expression's represented method.
        serializable - true if the lambda expression should be serializable.
        markerInterfaces - A list of interfaces for the lambda expression to represent.
        additionalBridges - A list of additional bridge methods to be implemented by the lambda expression.
        classFileTransformers - A collection of class file transformers to apply when creating the class.
        Returns:
        A binary representation of the transformed class file.