Class AbstractClassFileWriter

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected static java.util.regex.Pattern ARRAY_PATTERN  
      protected static java.lang.String CONSTRUCTOR_NAME  
      protected static int DEFAULT_MAX_STACK  
      protected static java.lang.String DESCRIPTOR_DEFAULT_CONSTRUCTOR  
      protected static org.objectweb.asm.commons.Method METHOD_CREATE_ARGUMENT_SIMPLE  
      protected static org.objectweb.asm.commons.Method METHOD_CREATE_TYPE_VARIABLE_SIMPLE  
      protected static org.objectweb.asm.commons.Method METHOD_DEFAULT_CONSTRUCTOR  
      protected static org.objectweb.asm.commons.Method METHOD_GENERIC_PLACEHOLDER_SIMPLE  
      protected OriginatingElements originatingElements  
      protected static org.objectweb.asm.Type TYPE_ARGUMENT  
      protected static org.objectweb.asm.Type TYPE_ARGUMENT_ARRAY  
      protected static org.objectweb.asm.Type TYPE_CLASS  
      protected static org.objectweb.asm.Type TYPE_GENERATED  
      protected static org.objectweb.asm.Type TYPE_OBJECT  
      protected static java.lang.String ZERO_ARGUMENTS_CONSTANT  
      • Fields inherited from interface org.objectweb.asm.Opcodes

        AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V9
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addOriginatingElement​(Element element)
      Add another element that should be included in the originating elements.
      protected static void buildArgument​(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, java.lang.String argumentName, ClassElement objectType)
      Builds an argument instance.
      protected static void buildArgument​(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, java.lang.String argumentName, org.objectweb.asm.Type objectType)
      Builds an argument instance.
      protected static void buildArgumentWithGenerics​(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, org.objectweb.asm.Type type, AnnotationMetadataReference annotationMetadata, ClassElement[] generics)
      Builds generic type arguments recursively.
      protected static void buildArgumentWithGenerics​(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter owningClassWriter, org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, java.lang.String argumentName, org.objectweb.asm.Type typeReference, ClassElement classElement, java.util.Map<java.lang.String,​ClassElement> typeArguments, java.util.Set<java.lang.String> visitedTypes, java.util.Map<java.lang.String,​java.lang.Integer> defaults, java.util.Map<java.lang.String,​org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
      Builds generic type arguments recursively.
      protected void generateServiceDescriptor​(java.lang.String className, GeneratedFile generatedFile)
      Generates a service discovery for the given class name and file.
      protected java.lang.String getClassFileName​(java.lang.String className)  
      protected static java.lang.String getConstructorDescriptor​(java.lang.Class<?>... argumentTypes)  
      protected static java.lang.String getConstructorDescriptor​(java.util.Collection<ParameterElement> argList)  
      protected static java.lang.String getConstructorDescriptor​(org.objectweb.asm.Type[] argumentTypes)  
      protected static java.lang.String getInternalName​(java.lang.String className)  
      protected static java.lang.String getInternalNameForCast​(TypedElement type)  
      protected static java.lang.String getInternalNameForCast​(java.lang.Class<?> typeClass)  
      protected static java.lang.String getInternalNameForCast​(org.objectweb.asm.Type type)  
      protected static java.lang.String getMethodDescriptor​(TypedElement returnType, java.util.Collection<? extends TypedElement> argumentTypes)  
      protected static java.lang.String getMethodDescriptor​(java.lang.Class<?> returnType, java.util.Collection<java.lang.Class<?>> argumentTypes)  
      protected static java.lang.String getMethodDescriptor​(java.lang.String returnType, java.lang.String... argumentTypes)  
      protected static java.lang.String getMethodDescriptor​(org.objectweb.asm.Type returnType, java.util.Collection<org.objectweb.asm.Type> argumentTypes)  
      protected static java.lang.String getMethodDescriptorForReturnType​(org.objectweb.asm.Type returnType, java.util.Collection<? extends TypedElement> argumentTypes)  
      protected static java.lang.String getMethodSignature​(java.lang.String returnTypeReference, java.lang.String... argReferenceTypes)  
      protected static org.objectweb.asm.Type getObjectType​(java.lang.Object type)  
      Element getOriginatingElement()  
      Element[] getOriginatingElements()  
      protected static java.lang.String getTypeDescriptor​(TypedElement type)
      Returns the descriptor corresponding to the given class.
      protected static java.lang.String getTypeDescriptor​(java.lang.Class<?> type)
      Returns the descriptor corresponding to the given class.
      protected static java.lang.String getTypeDescriptor​(java.lang.String type)
      Returns the descriptor corresponding to the given class.
      protected static java.lang.String getTypeDescriptor​(java.lang.String className, java.lang.String... genericTypes)  
      protected static org.objectweb.asm.Type getTypeReference​(TypedElement type)
      Return the type reference for a class.
      protected static org.objectweb.asm.Type getTypeReferenceForName​(java.lang.String className, java.lang.String... genericTypes)
      Returns the Type reference corresponding to the given class.
      protected org.objectweb.asm.Type[] getTypes​(java.util.Collection<ClassElement> types)  
      protected void implementInterceptedTypeMethod​(org.objectweb.asm.Type interceptedType, org.objectweb.asm.ClassWriter classWriter)
      Implements a method called "getInterceptedType" for the given type and class writer.
      protected void invokeConstructor​(org.objectweb.asm.MethodVisitor cv, java.lang.Class superClass, java.lang.Class... argumentTypes)  
      protected static void invokeInterfaceStaticMethod​(org.objectweb.asm.MethodVisitor visitor, java.lang.Class targetType, org.objectweb.asm.commons.Method method)  
      protected ClassElement invokeMethod​(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, MethodElement method)
      Invokes the given method.
      protected ClassWriterOutputVisitor newClassWriterOutputVisitor​(java.io.File compilationDir)  
      protected static void pushBoxPrimitiveIfNecessary​(TypedElement fieldType, org.objectweb.asm.MethodVisitor injectMethodVisitor)  
      protected static void pushBoxPrimitiveIfNecessary​(java.lang.Class<?> fieldType, org.objectweb.asm.MethodVisitor injectMethodVisitor)  
      protected static void pushBoxPrimitiveIfNecessary​(org.objectweb.asm.Type fieldType, org.objectweb.asm.MethodVisitor injectMethodVisitor)  
      protected static void pushBuildArgumentsForMethod​(java.lang.String declaringElementName, org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter declaringClassWriter, org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, java.util.Collection<ParameterElement> argumentTypes, java.util.Map<java.lang.String,​java.lang.Integer> defaults, java.util.Map<java.lang.String,​org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)  
      protected static void pushCastToType​(org.objectweb.asm.MethodVisitor methodVisitor, TypedElement type)  
      protected static void pushCastToType​(org.objectweb.asm.MethodVisitor methodVisitor, java.lang.Class<?> type)  
      protected static void pushCastToType​(org.objectweb.asm.MethodVisitor methodVisitor, org.objectweb.asm.Type type)  
      protected static void pushCreateArgument​(java.lang.String declaringTypeName, org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter declaringClassWriter, org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, java.lang.String argumentName, TypedElement typedElement, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, java.util.Map<java.lang.String,​ClassElement> typeArguments, java.util.Map<java.lang.String,​java.lang.Integer> defaults, java.util.Map<java.lang.String,​org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
      Pushes a new Argument creation.
      protected static void pushMethodNameAndTypesArguments​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor, java.lang.String methodName, java.util.Collection<ClassElement> argumentTypes)  
      protected static void pushNewArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor, java.lang.Class<?> arrayType, int size)  
      protected static void pushNewArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor, org.objectweb.asm.Type arrayType, int size)  
      protected void pushNewInstance​(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, org.objectweb.asm.Type typeToInstantiate)
      Push the instantiation of the given type.
      protected void pushReturnTypeArgument​(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter classWriter, org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, java.lang.String declaringTypeName, ClassElement argument, java.util.Map<java.lang.String,​java.lang.Integer> defaults, java.util.Map<java.lang.String,​org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
      Pushes an argument.
      protected static void pushReturnValue​(org.objectweb.asm.MethodVisitor methodVisitor, TypedElement type)  
      protected static void pushStoreInArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor, int index, int size, java.lang.Runnable runnable)  
      protected static void pushStoreInArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor, org.objectweb.asm.Type type, int index, int size, java.lang.Runnable runnable)  
      protected static void pushStoreStringInArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor, int index, int size, java.lang.String string)  
      protected static void pushStoreTypeInArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor, int index, int size, ClassElement type)  
      static <T> void pushStringMapOf​(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, java.util.Map<? extends java.lang.CharSequence,​T> annotationData, boolean skipEmpty, T empty, java.util.function.Consumer<T> pushValue)  
      protected static void pushTypeArgumentElements​(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter owningTypeWriter, org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, java.lang.String declaringElementName, java.util.Map<java.lang.String,​ClassElement> types, java.util.Map<java.lang.String,​java.lang.Integer> defaults, java.util.Map<java.lang.String,​org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
      Pushes type arguments onto the stack.
      protected void returnVoid​(org.objectweb.asm.commons.GeneratorAdapter overriddenMethodGenerator)  
      protected void startClass​(org.objectweb.asm.ClassVisitor classWriter, java.lang.String className, org.objectweb.asm.Type superType)  
      protected void startClass​(org.objectweb.asm.ClassWriter classWriter, java.lang.String className, org.objectweb.asm.Type superType, java.lang.String genericSignature)  
      protected org.objectweb.asm.commons.GeneratorAdapter startConstructor​(org.objectweb.asm.ClassVisitor classWriter)  
      protected org.objectweb.asm.commons.GeneratorAdapter startConstructor​(org.objectweb.asm.ClassVisitor classWriter, java.lang.Class<?>... argumentTypes)  
      protected void startFinalClass​(org.objectweb.asm.ClassVisitor classWriter, java.lang.String className, org.objectweb.asm.Type superType)  
      protected org.objectweb.asm.commons.GeneratorAdapter startProtectedMethod​(org.objectweb.asm.ClassWriter writer, java.lang.String methodName, java.lang.String returnType, java.lang.String... argumentTypes)  
      protected void startPublicClass​(org.objectweb.asm.ClassVisitor classWriter, java.lang.String className, org.objectweb.asm.Type superType)  
      protected void startPublicFinalClass​(org.objectweb.asm.ClassVisitor classWriter, java.lang.String className, org.objectweb.asm.Type superType)
      Starts a public final class.
      protected org.objectweb.asm.commons.GeneratorAdapter startPublicFinalMethodZeroArgs​(org.objectweb.asm.ClassWriter classWriter, java.lang.Class returnType, java.lang.String methodName)  
      protected org.objectweb.asm.commons.GeneratorAdapter startPublicMethod​(org.objectweb.asm.ClassWriter writer, java.lang.String methodName, java.lang.String returnType, java.lang.String... argumentTypes)  
      protected org.objectweb.asm.commons.GeneratorAdapter startPublicMethod​(org.objectweb.asm.ClassWriter writer, org.objectweb.asm.commons.Method asmMethod)  
      protected org.objectweb.asm.commons.GeneratorAdapter startPublicMethodZeroArgs​(org.objectweb.asm.ClassWriter classWriter, java.lang.Class returnType, java.lang.String methodName)  
      protected void startService​(org.objectweb.asm.ClassVisitor classWriter, java.lang.Class<?> serviceType, java.lang.String internalClassName, org.objectweb.asm.Type superType)  
      protected void startService​(org.objectweb.asm.ClassVisitor classWriter, java.lang.String serviceName, java.lang.String internalClassName, org.objectweb.asm.Type superType, java.lang.String... interfaces)  
      protected org.objectweb.asm.commons.GeneratorAdapter visitStaticInitializer​(org.objectweb.asm.ClassVisitor classWriter)  
      protected void writeBooleanMethod​(org.objectweb.asm.ClassWriter classWriter, java.lang.String methodName, java.util.function.Supplier<java.lang.Boolean> valueSupplier)
      Writes a method that returns a boolean value with the value supplied by the given supplier.
      protected void writeClassToDisk​(java.io.File targetDir, org.objectweb.asm.ClassWriter classWriter, java.lang.String className)
      Writes the class file to disk in the given directory.
      protected void writeClassToDisk​(java.io.OutputStream out, org.objectweb.asm.ClassWriter classWriter)  
      void writeTo​(java.io.File targetDir)
      Write the class to the target directory.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • TYPE_ARGUMENT

        protected static final org.objectweb.asm.Type TYPE_ARGUMENT
      • TYPE_ARGUMENT_ARRAY

        protected static final org.objectweb.asm.Type TYPE_ARGUMENT_ARRAY
      • ZERO_ARGUMENTS_CONSTANT

        protected static final java.lang.String ZERO_ARGUMENTS_CONSTANT
        See Also:
        Constant Field Values
      • CONSTRUCTOR_NAME

        protected static final java.lang.String CONSTRUCTOR_NAME
        See Also:
        Constant Field Values
      • DESCRIPTOR_DEFAULT_CONSTRUCTOR

        protected static final java.lang.String DESCRIPTOR_DEFAULT_CONSTRUCTOR
        See Also:
        Constant Field Values
      • METHOD_DEFAULT_CONSTRUCTOR

        protected static final org.objectweb.asm.commons.Method METHOD_DEFAULT_CONSTRUCTOR
      • TYPE_OBJECT

        protected static final org.objectweb.asm.Type TYPE_OBJECT
      • TYPE_CLASS

        protected static final org.objectweb.asm.Type TYPE_CLASS
      • TYPE_GENERATED

        protected static final org.objectweb.asm.Type TYPE_GENERATED
      • ARRAY_PATTERN

        protected static final java.util.regex.Pattern ARRAY_PATTERN
      • METHOD_CREATE_ARGUMENT_SIMPLE

        protected static final org.objectweb.asm.commons.Method METHOD_CREATE_ARGUMENT_SIMPLE
      • METHOD_GENERIC_PLACEHOLDER_SIMPLE

        protected static final org.objectweb.asm.commons.Method METHOD_GENERIC_PLACEHOLDER_SIMPLE
      • METHOD_CREATE_TYPE_VARIABLE_SIMPLE

        protected static final org.objectweb.asm.commons.Method METHOD_CREATE_TYPE_VARIABLE_SIMPLE
    • Constructor Detail

      • AbstractClassFileWriter

        @Deprecated
        protected AbstractClassFileWriter​(Element originatingElement)
        Deprecated.
        Parameters:
        originatingElement - The originating element
      • AbstractClassFileWriter

        protected AbstractClassFileWriter​(Element... originatingElements)
        Parameters:
        originatingElements - The originating elements
      • AbstractClassFileWriter

        protected AbstractClassFileWriter​(OriginatingElements originatingElements)
        Parameters:
        originatingElements - The originating elements
    • Method Detail

      • addOriginatingElement

        public void addOriginatingElement​(@NonNull
                                          Element element)
        Description copied from interface: OriginatingElements
        Add another element that should be included in the originating elements.
        Specified by:
        addOriginatingElement in interface OriginatingElements
        Parameters:
        element - The element to add
      • pushTypeArgumentElements

        protected static void pushTypeArgumentElements​(org.objectweb.asm.Type owningType,
                                                       org.objectweb.asm.ClassWriter owningTypeWriter,
                                                       org.objectweb.asm.commons.GeneratorAdapter generatorAdapter,
                                                       java.lang.String declaringElementName,
                                                       java.util.Map<java.lang.String,​ClassElement> types,
                                                       java.util.Map<java.lang.String,​java.lang.Integer> defaults,
                                                       java.util.Map<java.lang.String,​org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
        Pushes type arguments onto the stack.
        Parameters:
        owningType - The owning type
        owningTypeWriter - The declaring class writer
        generatorAdapter - The generator adapter
        declaringElementName - The declaring class element of the generics
        types - The type references
        defaults - The annotation defaults
        loadTypeMethods - The load type methods
      • buildArgument

        protected static void buildArgument​(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter,
                                            java.lang.String argumentName,
                                            org.objectweb.asm.Type objectType)
        Builds an argument instance.
        Parameters:
        generatorAdapter - The generator adapter.
        argumentName - The argument name
        objectType - The object type
      • buildArgument

        protected static void buildArgument​(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter,
                                            java.lang.String argumentName,
                                            ClassElement objectType)
        Builds an argument instance.
        Parameters:
        generatorAdapter - The generator adapter.
        argumentName - The argument name
        objectType - The object type
      • buildArgumentWithGenerics

        protected static void buildArgumentWithGenerics​(org.objectweb.asm.Type owningType,
                                                        org.objectweb.asm.ClassWriter owningClassWriter,
                                                        org.objectweb.asm.commons.GeneratorAdapter generatorAdapter,
                                                        java.lang.String argumentName,
                                                        org.objectweb.asm.Type typeReference,
                                                        ClassElement classElement,
                                                        java.util.Map<java.lang.String,​ClassElement> typeArguments,
                                                        java.util.Set<java.lang.String> visitedTypes,
                                                        java.util.Map<java.lang.String,​java.lang.Integer> defaults,
                                                        java.util.Map<java.lang.String,​org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
        Builds generic type arguments recursively.
        Parameters:
        owningType - The owning type
        owningClassWriter - The declaring writer
        generatorAdapter - The generator adapter to use
        argumentName - The argument name
        typeReference - The type name
        classElement - The class element that declares the generics
        typeArguments - The nested type arguments
        visitedTypes - The visited types
        defaults - The annotation defaults
        loadTypeMethods - The load type methods
      • buildArgumentWithGenerics

        protected static void buildArgumentWithGenerics​(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter,
                                                        org.objectweb.asm.Type type,
                                                        AnnotationMetadataReference annotationMetadata,
                                                        ClassElement[] generics)
        Builds generic type arguments recursively.
        Parameters:
        generatorAdapter - The generator adapter to use
        type - The type that declares the generics
        annotationMetadata - The annotation metadata reference
        generics - The generics
        Since:
        3.0.0
      • pushBuildArgumentsForMethod

        protected static void pushBuildArgumentsForMethod​(java.lang.String declaringElementName,
                                                          org.objectweb.asm.Type owningType,
                                                          org.objectweb.asm.ClassWriter declaringClassWriter,
                                                          org.objectweb.asm.commons.GeneratorAdapter generatorAdapter,
                                                          java.util.Collection<ParameterElement> argumentTypes,
                                                          java.util.Map<java.lang.String,​java.lang.Integer> defaults,
                                                          java.util.Map<java.lang.String,​org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
        Parameters:
        declaringElementName - The declaring element name
        owningType - The owning type
        declaringClassWriter - The declaring class writer
        generatorAdapter - The GeneratorAdapter
        argumentTypes - The argument types
        defaults - The annotation defaults
        loadTypeMethods - The load type methods
      • pushReturnTypeArgument

        protected void pushReturnTypeArgument​(org.objectweb.asm.Type owningType,
                                              org.objectweb.asm.ClassWriter classWriter,
                                              org.objectweb.asm.commons.GeneratorAdapter generatorAdapter,
                                              java.lang.String declaringTypeName,
                                              ClassElement argument,
                                              java.util.Map<java.lang.String,​java.lang.Integer> defaults,
                                              java.util.Map<java.lang.String,​org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
        Pushes an argument.
        Parameters:
        owningType - The owning type
        classWriter - The declaring class writer
        generatorAdapter - The generator adapter
        declaringTypeName - The declaring type name
        argument - The argument
        defaults - The annotation defaults
        loadTypeMethods - The load type methods
      • pushCreateArgument

        protected static void pushCreateArgument​(java.lang.String declaringTypeName,
                                                 org.objectweb.asm.Type owningType,
                                                 org.objectweb.asm.ClassWriter declaringClassWriter,
                                                 org.objectweb.asm.commons.GeneratorAdapter generatorAdapter,
                                                 java.lang.String argumentName,
                                                 TypedElement typedElement,
                                                 io.micronaut.core.annotation.AnnotationMetadata annotationMetadata,
                                                 java.util.Map<java.lang.String,​ClassElement> typeArguments,
                                                 java.util.Map<java.lang.String,​java.lang.Integer> defaults,
                                                 java.util.Map<java.lang.String,​org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
        Pushes a new Argument creation.
        Parameters:
        declaringTypeName - The declaring type name
        owningType - The owning type
        declaringClassWriter - The declaring class writer
        generatorAdapter - The generator adapter
        argumentName - The argument name
        typedElement - The typed element
        annotationMetadata - The annotation metadata
        typeArguments - The type arguments
        defaults - The annotation defaults
        loadTypeMethods - The load type methods
      • writeTo

        public void writeTo​(java.io.File targetDir)
                     throws java.io.IOException
        Write the class to the target directory.
        Parameters:
        targetDir - The target directory
        Throws:
        java.io.IOException - if there is an error writing the file
      • writeBooleanMethod

        protected void writeBooleanMethod​(org.objectweb.asm.ClassWriter classWriter,
                                          java.lang.String methodName,
                                          java.util.function.Supplier<java.lang.Boolean> valueSupplier)
        Writes a method that returns a boolean value with the value supplied by the given supplier.
        Parameters:
        classWriter - The class writer
        methodName - The method name
        valueSupplier - The supplier
      • getOriginatingElement

        @Nullable
        public Element getOriginatingElement()
        Returns:
        The originating element
      • implementInterceptedTypeMethod

        protected void implementInterceptedTypeMethod​(org.objectweb.asm.Type interceptedType,
                                                      org.objectweb.asm.ClassWriter classWriter)
        Implements a method called "getInterceptedType" for the given type and class writer.
        Parameters:
        interceptedType - The intercepted type
        classWriter - The class writer
      • getTypeDescriptor

        protected static java.lang.String getTypeDescriptor​(TypedElement type)
        Returns the descriptor corresponding to the given class.
        Parameters:
        type - The type
        Returns:
        The descriptor for the class
      • getTypeDescriptor

        protected static java.lang.String getTypeDescriptor​(java.lang.Class<?> type)
        Returns the descriptor corresponding to the given class.
        Parameters:
        type - The type
        Returns:
        The descriptor for the class
      • getTypeDescriptor

        protected static java.lang.String getTypeDescriptor​(java.lang.String type)
        Returns the descriptor corresponding to the given class.
        Parameters:
        type - The type
        Returns:
        The descriptor for the class
      • getTypeReferenceForName

        protected static org.objectweb.asm.Type getTypeReferenceForName​(java.lang.String className,
                                                                        java.lang.String... genericTypes)
        Returns the Type reference corresponding to the given class.
        Parameters:
        className - The class name
        genericTypes - The generic types
        Returns:
        The Type
      • getTypeReference

        protected static org.objectweb.asm.Type getTypeReference​(TypedElement type)
        Return the type reference for a class.
        Parameters:
        type - The type
        Returns:
        The Type
      • pushBoxPrimitiveIfNecessary

        protected static void pushBoxPrimitiveIfNecessary​(org.objectweb.asm.Type fieldType,
                                                          org.objectweb.asm.MethodVisitor injectMethodVisitor)
        Parameters:
        fieldType - The field type
        injectMethodVisitor - The MethodVisitor
      • pushBoxPrimitiveIfNecessary

        protected static void pushBoxPrimitiveIfNecessary​(java.lang.Class<?> fieldType,
                                                          org.objectweb.asm.MethodVisitor injectMethodVisitor)
        Parameters:
        fieldType - The field type
        injectMethodVisitor - The MethodVisitor
      • pushBoxPrimitiveIfNecessary

        protected static void pushBoxPrimitiveIfNecessary​(TypedElement fieldType,
                                                          org.objectweb.asm.MethodVisitor injectMethodVisitor)
        Parameters:
        fieldType - The field type
        injectMethodVisitor - The MethodVisitor
      • pushCastToType

        protected static void pushCastToType​(org.objectweb.asm.MethodVisitor methodVisitor,
                                             org.objectweb.asm.Type type)
        Parameters:
        methodVisitor - The MethodVisitor
        type - The type
      • pushCastToType

        protected static void pushCastToType​(org.objectweb.asm.MethodVisitor methodVisitor,
                                             TypedElement type)
        Parameters:
        methodVisitor - The MethodVisitor
        type - The type
      • pushCastToType

        protected static void pushCastToType​(org.objectweb.asm.MethodVisitor methodVisitor,
                                             java.lang.Class<?> type)
        Parameters:
        methodVisitor - The MethodVisitor
        type - The type
      • pushReturnValue

        protected static void pushReturnValue​(org.objectweb.asm.MethodVisitor methodVisitor,
                                              TypedElement type)
        Parameters:
        methodVisitor - The MethodVisitor
        type - The type
      • pushMethodNameAndTypesArguments

        protected static void pushMethodNameAndTypesArguments​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor,
                                                              java.lang.String methodName,
                                                              java.util.Collection<ClassElement> argumentTypes)
        Parameters:
        methodVisitor - The method visitor as GeneratorAdapter
        methodName - The method name
        argumentTypes - The argument types
      • pushNewArray

        protected static void pushNewArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor,
                                           java.lang.Class<?> arrayType,
                                           int size)
        Parameters:
        methodVisitor - The method visitor as GeneratorAdapter
        arrayType - The array class
        size - The size
      • pushNewArray

        protected static void pushNewArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor,
                                           org.objectweb.asm.Type arrayType,
                                           int size)
        Parameters:
        methodVisitor - The method visitor as GeneratorAdapter
        arrayType - The array class
        size - The size
      • pushStoreStringInArray

        protected static void pushStoreStringInArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor,
                                                     int index,
                                                     int size,
                                                     java.lang.String string)
        Parameters:
        methodVisitor - The method visitor as GeneratorAdapter
        index - The index
        size - The size
        string - The string
      • pushStoreInArray

        protected static void pushStoreInArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor,
                                               int index,
                                               int size,
                                               java.lang.Runnable runnable)
        Parameters:
        methodVisitor - The method visitor as GeneratorAdapter
        index - The index
        size - The size
        runnable - The runnable
      • pushStoreInArray

        protected static void pushStoreInArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor,
                                               org.objectweb.asm.Type type,
                                               int index,
                                               int size,
                                               java.lang.Runnable runnable)
        Parameters:
        methodVisitor - The method visitor as GeneratorAdapter
        type - The type of the array
        index - The index
        size - The size
        runnable - The runnable
      • pushStoreTypeInArray

        protected static void pushStoreTypeInArray​(org.objectweb.asm.commons.GeneratorAdapter methodVisitor,
                                                   int index,
                                                   int size,
                                                   ClassElement type)
        Parameters:
        methodVisitor - The method visitor as GeneratorAdapter
        index - The index
        size - The size
        type - The type
      • getTypes

        protected org.objectweb.asm.Type[] getTypes​(java.util.Collection<ClassElement> types)
        Parameters:
        types - The types
        Returns:
        An array with the Type of the objects
      • getObjectType

        protected static org.objectweb.asm.Type getObjectType​(java.lang.Object type)
        Parameters:
        type - The type
        Returns:
        The Type for the object type
      • getTypeDescriptor

        protected static java.lang.String getTypeDescriptor​(java.lang.String className,
                                                            java.lang.String... genericTypes)
        Parameters:
        className - The class name
        genericTypes - The generic types
        Returns:
        The type descriptor as String
      • getMethodDescriptor

        protected static java.lang.String getMethodDescriptor​(java.lang.String returnType,
                                                              java.lang.String... argumentTypes)
        Parameters:
        returnType - The return type
        argumentTypes - The argument types
        Returns:
        The method descriptor
      • getMethodDescriptor

        protected static java.lang.String getMethodDescriptor​(TypedElement returnType,
                                                              java.util.Collection<? extends TypedElement> argumentTypes)
        Parameters:
        returnType - The return type
        argumentTypes - The argument types
        Returns:
        The method descriptor
      • getMethodDescriptorForReturnType

        protected static java.lang.String getMethodDescriptorForReturnType​(org.objectweb.asm.Type returnType,
                                                                           java.util.Collection<? extends TypedElement> argumentTypes)
        Parameters:
        returnType - The return type
        argumentTypes - The argument types
        Returns:
        The method descriptor
      • getMethodDescriptor

        protected static java.lang.String getMethodDescriptor​(java.lang.Class<?> returnType,
                                                              java.util.Collection<java.lang.Class<?>> argumentTypes)
        Parameters:
        returnType - The return type
        argumentTypes - The argument types
        Returns:
        The method descriptor
      • getMethodDescriptor

        protected static java.lang.String getMethodDescriptor​(org.objectweb.asm.Type returnType,
                                                              java.util.Collection<org.objectweb.asm.Type> argumentTypes)
        Parameters:
        returnType - The return type
        argumentTypes - The argument types
        Returns:
        The method descriptor
      • getMethodSignature

        protected static java.lang.String getMethodSignature​(java.lang.String returnTypeReference,
                                                             java.lang.String... argReferenceTypes)
        Parameters:
        returnTypeReference - The return type reference
        argReferenceTypes - The argument reference types
        Returns:
        The method signature
      • getConstructorDescriptor

        protected static java.lang.String getConstructorDescriptor​(java.lang.Class<?>... argumentTypes)
        Parameters:
        argumentTypes - The argument types
        Returns:
        The constructor descriptor
      • getConstructorDescriptor

        protected static java.lang.String getConstructorDescriptor​(org.objectweb.asm.Type[] argumentTypes)
        Parameters:
        argumentTypes - The argument types
        Returns:
        The constructor descriptor
      • getConstructorDescriptor

        protected static java.lang.String getConstructorDescriptor​(java.util.Collection<ParameterElement> argList)
        Parameters:
        argList - The argument list
        Returns:
        The constructor descriptor
      • writeClassToDisk

        protected void writeClassToDisk​(java.io.File targetDir,
                                        org.objectweb.asm.ClassWriter classWriter,
                                        java.lang.String className)
                                 throws java.io.IOException
        Writes the class file to disk in the given directory.
        Parameters:
        targetDir - The target directory
        classWriter - The current class writer
        className - The class name
        Throws:
        java.io.IOException - if there is a problem writing the class to disk
      • writeClassToDisk

        protected void writeClassToDisk​(java.io.OutputStream out,
                                        org.objectweb.asm.ClassWriter classWriter)
                                 throws java.io.IOException
        Parameters:
        out - The output stream
        classWriter - The current class writer
        Throws:
        java.io.IOException - if there is a problem writing the class to disk
      • startConstructor

        protected org.objectweb.asm.commons.GeneratorAdapter startConstructor​(org.objectweb.asm.ClassVisitor classWriter)
        Parameters:
        classWriter - The current class writer
        Returns:
        The GeneratorAdapter for the constructor
      • startConstructor

        protected org.objectweb.asm.commons.GeneratorAdapter startConstructor​(org.objectweb.asm.ClassVisitor classWriter,
                                                                              java.lang.Class<?>... argumentTypes)
        Parameters:
        classWriter - The current class writer
        argumentTypes - The argument types
        Returns:
        The GeneratorAdapter for the constructor
      • startClass

        protected void startClass​(org.objectweb.asm.ClassVisitor classWriter,
                                  java.lang.String className,
                                  org.objectweb.asm.Type superType)
        Parameters:
        classWriter - The current class writer
        className - The class name
        superType - The super type
      • startPublicClass

        protected void startPublicClass​(org.objectweb.asm.ClassVisitor classWriter,
                                        java.lang.String className,
                                        org.objectweb.asm.Type superType)
        Parameters:
        classWriter - The current class writer
        className - The class name
        superType - The super type
      • startService

        protected void startService​(org.objectweb.asm.ClassVisitor classWriter,
                                    java.lang.Class<?> serviceType,
                                    java.lang.String internalClassName,
                                    org.objectweb.asm.Type superType)
        Parameters:
        classWriter - The current class writer
        serviceType - The service type
        internalClassName - The class name
        superType - The super type
      • startService

        protected void startService​(org.objectweb.asm.ClassVisitor classWriter,
                                    java.lang.String serviceName,
                                    java.lang.String internalClassName,
                                    org.objectweb.asm.Type superType,
                                    java.lang.String... interfaces)
        Parameters:
        classWriter - The current class writer
        serviceName - The service name
        internalClassName - The class name
        superType - The super type
        interfaces - The interfaces
      • startFinalClass

        protected void startFinalClass​(org.objectweb.asm.ClassVisitor classWriter,
                                       java.lang.String className,
                                       org.objectweb.asm.Type superType)
        Parameters:
        classWriter - The current class writer
        className - The class name
        superType - The super type
      • startPublicFinalClass

        protected void startPublicFinalClass​(org.objectweb.asm.ClassVisitor classWriter,
                                             java.lang.String className,
                                             org.objectweb.asm.Type superType)
        Starts a public final class.
        Parameters:
        classWriter - The current class writer
        className - The class name
        superType - The super type
      • startClass

        protected void startClass​(org.objectweb.asm.ClassWriter classWriter,
                                  java.lang.String className,
                                  org.objectweb.asm.Type superType,
                                  java.lang.String genericSignature)
        Parameters:
        classWriter - The current class writer
        className - The class name
        superType - The super type
        genericSignature - The generic signature
      • invokeConstructor

        protected void invokeConstructor​(org.objectweb.asm.MethodVisitor cv,
                                         java.lang.Class superClass,
                                         java.lang.Class... argumentTypes)
        Parameters:
        cv - The constructor visitor
        superClass - The super class
        argumentTypes - The argument types
      • invokeInterfaceStaticMethod

        protected static void invokeInterfaceStaticMethod​(org.objectweb.asm.MethodVisitor visitor,
                                                          java.lang.Class targetType,
                                                          org.objectweb.asm.commons.Method method)
        Parameters:
        visitor - The interface visitor
        targetType - The target type
        method - The method
      • startPublicMethodZeroArgs

        protected org.objectweb.asm.commons.GeneratorAdapter startPublicMethodZeroArgs​(org.objectweb.asm.ClassWriter classWriter,
                                                                                       java.lang.Class returnType,
                                                                                       java.lang.String methodName)
        Parameters:
        classWriter - The current class writer
        returnType - The return type
        methodName - The method name
        Returns:
        TheThe GeneratorAdapter for the method
      • startPublicFinalMethodZeroArgs

        protected org.objectweb.asm.commons.GeneratorAdapter startPublicFinalMethodZeroArgs​(org.objectweb.asm.ClassWriter classWriter,
                                                                                            java.lang.Class returnType,
                                                                                            java.lang.String methodName)
        Parameters:
        classWriter - The current class writer
        returnType - The return type
        methodName - The method name
        Returns:
        TheThe GeneratorAdapter for the method
      • getInternalName

        protected static java.lang.String getInternalName​(java.lang.String className)
        Parameters:
        className - The class name
        Returns:
        The internal name
      • getInternalNameForCast

        protected static java.lang.String getInternalNameForCast​(TypedElement type)
        Parameters:
        type - The type
        Returns:
        the internal name for cast
      • getInternalNameForCast

        protected static java.lang.String getInternalNameForCast​(java.lang.Class<?> typeClass)
        Parameters:
        typeClass - The type
        Returns:
        the internal name for cast
      • getInternalNameForCast

        protected static java.lang.String getInternalNameForCast​(org.objectweb.asm.Type type)
        Parameters:
        type - The type
        Returns:
        the internal name for cast
      • getClassFileName

        protected java.lang.String getClassFileName​(java.lang.String className)
        Parameters:
        className - The class name
        Returns:
        The class file name
      • newClassWriterOutputVisitor

        protected ClassWriterOutputVisitor newClassWriterOutputVisitor​(java.io.File compilationDir)
        Parameters:
        compilationDir - The compilation directory
        Returns:
        The directory class writer output visitor
      • returnVoid

        protected void returnVoid​(org.objectweb.asm.commons.GeneratorAdapter overriddenMethodGenerator)
        Parameters:
        overriddenMethodGenerator - The overridden method generator
      • visitStaticInitializer

        protected org.objectweb.asm.commons.GeneratorAdapter visitStaticInitializer​(org.objectweb.asm.ClassVisitor classWriter)
        Parameters:
        classWriter - The current class writer
        Returns:
        The GeneratorAdapter
      • startPublicMethod

        protected org.objectweb.asm.commons.GeneratorAdapter startPublicMethod​(org.objectweb.asm.ClassWriter writer,
                                                                               java.lang.String methodName,
                                                                               java.lang.String returnType,
                                                                               java.lang.String... argumentTypes)
        Parameters:
        writer - The class writer
        methodName - The method name
        returnType - The return type
        argumentTypes - The argument types
        Returns:
        The GeneratorAdapter
      • startPublicMethod

        protected org.objectweb.asm.commons.GeneratorAdapter startPublicMethod​(org.objectweb.asm.ClassWriter writer,
                                                                               org.objectweb.asm.commons.Method asmMethod)
        Parameters:
        writer - The class writer
        asmMethod - The asm method
        Returns:
        The GeneratorAdapter
        Since:
        2.3.0
      • startProtectedMethod

        protected org.objectweb.asm.commons.GeneratorAdapter startProtectedMethod​(org.objectweb.asm.ClassWriter writer,
                                                                                  java.lang.String methodName,
                                                                                  java.lang.String returnType,
                                                                                  java.lang.String... argumentTypes)
        Parameters:
        writer - The class writer
        methodName - The method name
        returnType - The return type
        argumentTypes - The argument types
        Returns:
        The GeneratorAdapter
      • generateServiceDescriptor

        protected void generateServiceDescriptor​(java.lang.String className,
                                                 GeneratedFile generatedFile)
                                          throws java.io.IOException
        Generates a service discovery for the given class name and file.
        Parameters:
        className - The class name
        generatedFile - The generated file
        Throws:
        java.io.IOException - An exception if an error occurs
      • pushNewInstance

        protected void pushNewInstance​(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter,
                                       org.objectweb.asm.Type typeToInstantiate)
        Push the instantiation of the given type.
        Parameters:
        generatorAdapter - The generator adaptor
        typeToInstantiate - The type to instantiate.
      • invokeMethod

        @NonNull
        protected ClassElement invokeMethod​(@NonNull
                                            org.objectweb.asm.commons.GeneratorAdapter generatorAdapter,
                                            @NonNull
                                            MethodElement method)
        Invokes the given method.
        Parameters:
        generatorAdapter - The generator adapter
        method - The method to invoke
        Returns:
        The return type
      • pushStringMapOf

        public static <T> void pushStringMapOf​(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter,
                                               java.util.Map<? extends java.lang.CharSequence,​T> annotationData,
                                               boolean skipEmpty,
                                               T empty,
                                               java.util.function.Consumer<T> pushValue)