Package io.micronaut.inject.annotation
Class AnnotationMetadataWriter
- java.lang.Object
-
- io.micronaut.inject.writer.AbstractClassFileWriter
-
- io.micronaut.inject.annotation.AnnotationMetadataWriter
-
- All Implemented Interfaces:
ClassOutputWriter
,OriginatingElements
,org.objectweb.asm.Opcodes
@Internal public class AnnotationMetadataWriter extends AbstractClassFileWriter
Responsible for writing class files that are instances ofAnnotationMetadata
.- Since:
- 1.0
-
-
Field Summary
-
Fields inherited from class io.micronaut.inject.writer.AbstractClassFileWriter
ARRAY_PATTERN, CONSTRUCTOR_NAME, DEFAULT_MAX_STACK, DESCRIPTOR_DEFAULT_CONSTRUCTOR, METHOD_CREATE_ARGUMENT_SIMPLE, METHOD_CREATE_TYPE_VARIABLE_SIMPLE, METHOD_DEFAULT_CONSTRUCTOR, METHOD_GENERIC_PLACEHOLDER_SIMPLE, originatingElements, TYPE_ARGUMENT, TYPE_ARGUMENT_ARRAY, TYPE_CLASS, TYPE_GENERATED, TYPE_OBJECT, 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
-
-
Constructor Summary
Constructors Constructor Description AnnotationMetadataWriter(java.lang.String className, ClassElement originatingElement, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata)
Deprecated.No longer needs to be instantiated directly, just use the static methodsAnnotationMetadataWriter(java.lang.String className, ClassElement originatingElement, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, boolean writeAnnotationDefaults)
Deprecated.No longer needs to be instantiated directly, just use the static methods
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
accept(ClassWriterOutputVisitor outputVisitor)
Accept anClassWriterOutputVisitor
to write all generated classes.java.lang.String
getClassName()
static void
instantiateNewMetadata(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter declaringClassWriter, org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, DefaultAnnotationMetadata annotationMetadata, java.util.Map<java.lang.String,java.lang.Integer> defaultsStorage, java.util.Map<java.lang.String,org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
Writes out the byte code necessary to instantiate the givenDefaultAnnotationMetadata
.static void
instantiateNewMetadataHierarchy(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter classWriter, org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, AnnotationMetadataHierarchy hierarchy, java.util.Map<java.lang.String,java.lang.Integer> defaultsStorage, java.util.Map<java.lang.String,org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
Writes out the byte code necessary to instantiate the givenAnnotationMetadataHierarchy
.static void
pushAnnotationMetadataReference(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, AnnotationMetadataReference annotationMetadata)
Pushes an annotation metadata reference.static void
writeAnnotationDefaults(DefaultAnnotationMetadata annotationMetadata, org.objectweb.asm.ClassWriter classWriter, org.objectweb.asm.Type owningType, java.util.Map<java.lang.String,java.lang.Integer> defaultsStorage, java.util.Map<java.lang.String,org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
Writes out the byte code necessary to instantiate the givenDefaultAnnotationMetadata
.static void
writeAnnotationDefaults(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter classWriter, org.objectweb.asm.commons.GeneratorAdapter staticInit, DefaultAnnotationMetadata annotationMetadata, java.util.Map<java.lang.String,java.lang.Integer> defaultsStorage, java.util.Map<java.lang.String,org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
Write annotation defaults into the given static init block.void
writeTo(java.io.OutputStream outputStream)
Write the class to the output stream, such a JavaFileObject created from a java annotation processor Filer object.-
Methods inherited from class io.micronaut.inject.writer.AbstractClassFileWriter
addOriginatingElement, buildArgument, buildArgument, buildArgumentWithGenerics, buildArgumentWithGenerics, generateServiceDescriptor, getClassFileName, getConstructorDescriptor, getConstructorDescriptor, getConstructorDescriptor, getInternalName, getInternalNameForCast, getInternalNameForCast, getInternalNameForCast, getMethodDescriptor, getMethodDescriptor, getMethodDescriptor, getMethodDescriptor, getMethodDescriptorForReturnType, getMethodSignature, getObjectType, getOriginatingElement, getOriginatingElements, getTypeDescriptor, getTypeDescriptor, getTypeDescriptor, getTypeDescriptor, getTypeReference, getTypeReferenceForName, getTypes, implementInterceptedTypeMethod, invokeConstructor, invokeInterfaceStaticMethod, invokeMethod, newClassWriterOutputVisitor, pushBoxPrimitiveIfNecessary, pushBoxPrimitiveIfNecessary, pushBoxPrimitiveIfNecessary, pushBuildArgumentsForMethod, pushCastToType, pushCastToType, pushCastToType, pushCreateArgument, pushMethodNameAndTypesArguments, pushNewArray, pushNewArray, pushNewInstance, pushReturnTypeArgument, pushReturnValue, pushStoreInArray, pushStoreInArray, pushStoreStringInArray, pushStoreTypeInArray, pushStringMapOf, pushTypeArgumentElements, returnVoid, startClass, startClass, startConstructor, startConstructor, startFinalClass, startProtectedMethod, startPublicClass, startPublicFinalClass, startPublicFinalMethodZeroArgs, startPublicMethod, startPublicMethod, startPublicMethodZeroArgs, startService, startService, visitStaticInitializer, writeBooleanMethod, writeClassToDisk, writeClassToDisk, writeTo
-
-
-
-
Constructor Detail
-
AnnotationMetadataWriter
@Deprecated public AnnotationMetadataWriter(java.lang.String className, ClassElement originatingElement, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, boolean writeAnnotationDefaults)
Deprecated.No longer needs to be instantiated directly, just use the static methodsConstructs a new writer for the given class name and metadata.- Parameters:
className
- The class name for which the metadata relatesoriginatingElement
- The originating elementannotationMetadata
- The annotation metadatawriteAnnotationDefaults
- Whether annotations defaults should be written
-
AnnotationMetadataWriter
@Deprecated public AnnotationMetadataWriter(java.lang.String className, ClassElement originatingElement, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata)
Deprecated.No longer needs to be instantiated directly, just use the static methodsConstructs a new writer for the given class name and metadata.- Parameters:
className
- The class name for which the metadata relatesoriginatingElement
- The originating elementannotationMetadata
- The annotation metadata
-
-
Method Detail
-
getClassName
public java.lang.String getClassName()
- Returns:
- The class name that this metadata will generate
-
accept
public void accept(ClassWriterOutputVisitor outputVisitor) throws java.io.IOException
Accept anClassWriterOutputVisitor
to write all generated classes.- Parameters:
outputVisitor
- TheClassWriterOutputVisitor
- Throws:
java.io.IOException
- If an error occurs
-
writeTo
public void writeTo(java.io.OutputStream outputStream)
Write the class to the output stream, such a JavaFileObject created from a java annotation processor Filer object.- Parameters:
outputStream
- the output stream pointing to the target class file
-
instantiateNewMetadata
@Internal public static void instantiateNewMetadata(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter declaringClassWriter, org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, DefaultAnnotationMetadata annotationMetadata, java.util.Map<java.lang.String,java.lang.Integer> defaultsStorage, java.util.Map<java.lang.String,org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
Writes out the byte code necessary to instantiate the givenDefaultAnnotationMetadata
.- Parameters:
owningType
- The owning typedeclaringClassWriter
- The declaring class writergeneratorAdapter
- The generator adapterannotationMetadata
- The annotation metadatadefaultsStorage
- The annotation defaultsloadTypeMethods
- The generated load type methods
-
instantiateNewMetadataHierarchy
@Internal public static void instantiateNewMetadataHierarchy(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter classWriter, org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, AnnotationMetadataHierarchy hierarchy, java.util.Map<java.lang.String,java.lang.Integer> defaultsStorage, java.util.Map<java.lang.String,org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
Writes out the byte code necessary to instantiate the givenAnnotationMetadataHierarchy
.- Parameters:
owningType
- The owning typeclassWriter
- The declaring class writergeneratorAdapter
- The generator adapterhierarchy
- The annotation metadatadefaultsStorage
- The annotation defaultsloadTypeMethods
- The generated load type methods
-
pushAnnotationMetadataReference
@Internal public static void pushAnnotationMetadataReference(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, AnnotationMetadataReference annotationMetadata)
Pushes an annotation metadata reference.- Parameters:
generatorAdapter
- The generator adapterannotationMetadata
- The metadata
-
writeAnnotationDefaults
@Internal public static void writeAnnotationDefaults(DefaultAnnotationMetadata annotationMetadata, org.objectweb.asm.ClassWriter classWriter, org.objectweb.asm.Type owningType, java.util.Map<java.lang.String,java.lang.Integer> defaultsStorage, java.util.Map<java.lang.String,org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
Writes out the byte code necessary to instantiate the givenDefaultAnnotationMetadata
.- Parameters:
annotationMetadata
- The annotation metadataclassWriter
- The class writerowningType
- The owning typedefaultsStorage
- The annotation defaultsloadTypeMethods
- The generated load type methods
-
writeAnnotationDefaults
@Internal public static void writeAnnotationDefaults(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter classWriter, org.objectweb.asm.commons.GeneratorAdapter staticInit, DefaultAnnotationMetadata annotationMetadata, java.util.Map<java.lang.String,java.lang.Integer> defaultsStorage, java.util.Map<java.lang.String,org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods)
Write annotation defaults into the given static init block.- Parameters:
owningType
- The owning typeclassWriter
- The class writerstaticInit
- The staitc initannotationMetadata
- The annotation metadatadefaultsStorage
- The annotation defaultsloadTypeMethods
- The load type methods
-
-