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
Responsible for writing class files that are instances of
AnnotationMetadata
.- Since:
- 1.0
- Author:
- Graeme Rocher
-
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, V20, V21, V22, V23, V24, V9
-
Constructor Summary
ConstructorDescriptionAnnotationMetadataWriter
(String className, ClassElement originatingElement, AnnotationMetadata annotationMetadata) Deprecated.No longer needs to be instantiated directly, just use the static methodsAnnotationMetadataWriter
(String className, ClassElement originatingElement, AnnotationMetadata annotationMetadata, boolean writeAnnotationDefaults) Deprecated.No longer needs to be instantiated directly, just use the static methods -
Method Summary
Modifier and TypeMethodDescriptionvoid
accept
(ClassWriterOutputVisitor outputVisitor) Accept anClassWriterOutputVisitor
to write all generated classes.static void
instantiateNewMetadata
(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter declaringClassWriter, org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, MutableAnnotationMetadata annotationMetadata, Map<String, Integer> defaultsStorage, Map<String, org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods) Writes out the byte code necessary to instantiate the givenMutableAnnotationMetadata
.static void
instantiateNewMetadataHierarchy
(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter classWriter, org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, AnnotationMetadataHierarchy hierarchy, Map<String, Integer> defaultsStorage, Map<String, org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods) Writes out the byte code necessary to instantiate the givenAnnotationMetadataHierarchy
.static void
invokeLoadClassValueMethod
(org.objectweb.asm.Type declaringType, org.objectweb.asm.ClassVisitor declaringClassWriter, org.objectweb.asm.commons.GeneratorAdapter methodVisitor, Map<String, org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods, AnnotationClassValue acv) static boolean
isSupportedMapValue
(Object value) static void
pushAnnotationMetadataReference
(org.objectweb.asm.commons.GeneratorAdapter generatorAdapter, AnnotationMetadataReference annotationMetadata) Pushes an annotation metadata reference.static void
writeAnnotationDefaults
(MutableAnnotationMetadata annotationMetadata, org.objectweb.asm.ClassWriter classWriter, org.objectweb.asm.Type owningType, Map<String, Integer> defaultsStorage, Map<String, org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods) Writes out the byte code necessary to instantiate the givenMutableAnnotationMetadata
.static void
writeAnnotationDefaults
(org.objectweb.asm.Type owningType, org.objectweb.asm.ClassWriter classWriter, org.objectweb.asm.commons.GeneratorAdapter staticInit, MutableAnnotationMetadata annotationMetadata, Map<String, Integer> defaultsStorage, Map<String, org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods) Write annotation defaults into the given static init block.void
writeTo
(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, annotateAsGeneratedAndService, buildArgument, buildArgument, buildArgumentWithGenerics, buildArgumentWithGenerics, getConstructorDescriptor, getConstructorDescriptor, getConstructorDescriptor, getInternalName, getMethodDescriptor, getMethodDescriptor, getMethodDescriptor, getMethodDescriptor, getMethodDescriptorForReturnType, getMethodSignature, getObjectType, getOriginatingElement, getOriginatingElements, getTypeDescriptor, getTypeDescriptor, getTypeDescriptor, getTypeDescriptor, getTypeReference, getTypeReferenceForName, implementInterceptedTypeMethod, invokeConstructor, invokeInterfaceStaticMethod, newClassWriterOutputVisitor, pushBoxPrimitiveIfNecessary, pushBoxPrimitiveIfNecessary, pushBoxPrimitiveIfNecessary, pushBuildArgumentsForMethod, pushCastFromObjectToType, pushCastToType, pushCastToType, pushCastToType, pushCastToType, pushCreateArgument, pushCreateArgument, pushListOfString, pushMethodNameAndTypesArguments, pushNewArray, pushNewArray, pushNewArray, pushNewArray, pushNewArray, pushNewArrayIndexed, pushNewInstance, pushReturnTypeArgument, pushStoreInArray, pushStoreInArray, pushStringMapOf, pushTypeArgumentElements, startClass, startConstructor, startConstructor, startProtectedMethod, startPublicClass, startPublicFinalMethodZeroArgs, startPublicMethod, startPublicMethod, startPublicMethod, startPublicMethodZeroArgs, startService, startService, toTypeString, visitStaticInitializer, writeClassToDisk, writeTo
-
Constructor Details
-
AnnotationMetadataWriter
@Deprecated public AnnotationMetadataWriter(String className, ClassElement originatingElement, 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(String className, ClassElement originatingElement, 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 Details
-
getClassName
- Returns:
- The class name that this metadata will generate
-
accept
Accept anClassWriterOutputVisitor
to write all generated classes.- Parameters:
outputVisitor
- TheClassWriterOutputVisitor
- Throws:
IOException
- If an error occurs
-
writeTo
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, MutableAnnotationMetadata annotationMetadata, Map<String, Integer> defaultsStorage, Map<String, org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods) Writes out the byte code necessary to instantiate the givenMutableAnnotationMetadata
.- 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, Map<String, Integer> defaultsStorage, Map<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(MutableAnnotationMetadata annotationMetadata, org.objectweb.asm.ClassWriter classWriter, org.objectweb.asm.Type owningType, Map<String, Integer> defaultsStorage, Map<String, org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods) Writes out the byte code necessary to instantiate the givenMutableAnnotationMetadata
.- 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, MutableAnnotationMetadata annotationMetadata, Map<String, Integer> defaultsStorage, Map<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
-
isSupportedMapValue
-
invokeLoadClassValueMethod
public static void invokeLoadClassValueMethod(org.objectweb.asm.Type declaringType, org.objectweb.asm.ClassVisitor declaringClassWriter, org.objectweb.asm.commons.GeneratorAdapter methodVisitor, Map<String, org.objectweb.asm.commons.GeneratorAdapter> loadTypeMethods, AnnotationClassValue acv)
-