Package io.micronaut.inject.writer
Class ExecutableMethodWriter
- java.lang.Object
-
- io.micronaut.inject.writer.AbstractClassFileWriter
-
- io.micronaut.inject.writer.AbstractAnnotationMetadataWriter
-
- io.micronaut.inject.writer.ExecutableMethodWriter
-
- All Implemented Interfaces:
ClassOutputWriter,OriginatingElements,org.objectweb.asm.Opcodes
@Internal public class ExecutableMethodWriter extends AbstractAnnotationMetadataWriter implements org.objectweb.asm.Opcodes
Writes outExecutableMethodimplementations.- Since:
- 1.0
-
-
Field Summary
Fields Modifier and Type Field Description protected static org.objectweb.asm.commons.MethodMETHOD_GET_TARGETstatic org.objectweb.asm.commons.MethodMETHOD_INVOKE_INTERNALprotected static org.objectweb.asm.commons.MethodMETHOD_IS_ABSTRACTprotected static org.objectweb.asm.commons.MethodMETHOD_IS_SUSPENDprotected org.objectweb.asm.TypemethodType-
Fields inherited from class io.micronaut.inject.writer.AbstractAnnotationMetadataWriter
annotationMetadata, defaults, FIELD_ANNOTATION_METADATA, loadTypeMethods, targetClassType
-
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, V9
-
-
Constructor Summary
Constructors Constructor Description ExecutableMethodWriter(java.lang.String methodClassName, boolean isInterface, boolean isAbstract, boolean isDefault, boolean isSuspend, OriginatingElements originatingElements, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, java.lang.String interceptedProxyClassName, java.lang.String interceptedProxyBridgeMethodName)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(ClassWriterOutputVisitor classWriterOutputVisitor)Accept a ClassWriterOutputVisitor to write this writer to disk.protected org.objectweb.asm.commons.GeneratorAdapterbeginAnnotationMetadataMethod(org.objectweb.asm.ClassWriter classWriter)Returns the generator adaptor for the method that resolves the annotation metadata.protected voidbuildInvokeMethod(org.objectweb.asm.Type declaringTypeObject, java.lang.String methodName, ClassElement returnType, java.util.Collection<ParameterElement> argumentTypes, org.objectweb.asm.commons.GeneratorAdapter invokeMethodVisitor)java.lang.StringgetClassName()java.lang.StringgetInternalName()booleanisAbstract()booleanisDefault()booleanisInterface()booleanisSupportsInterceptedProxy()booleanisSuspend()voidvisitMethod(TypedElement declaringType, MethodElement methodElement)Write the method.-
Methods inherited from class io.micronaut.inject.writer.AbstractAnnotationMetadataWriter
initializeAnnotationMetadata, writeAnnotationMetadataStaticInitializer, writeAnnotationMetadataStaticInitializer, writeGetAnnotationMetadataMethod
-
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
-
-
-
-
Field Detail
-
METHOD_INVOKE_INTERNAL
public static final org.objectweb.asm.commons.Method METHOD_INVOKE_INTERNAL
-
METHOD_IS_ABSTRACT
protected static final org.objectweb.asm.commons.Method METHOD_IS_ABSTRACT
-
METHOD_IS_SUSPEND
protected static final org.objectweb.asm.commons.Method METHOD_IS_SUSPEND
-
METHOD_GET_TARGET
protected static final org.objectweb.asm.commons.Method METHOD_GET_TARGET
-
methodType
protected final org.objectweb.asm.Type methodType
-
-
Constructor Detail
-
ExecutableMethodWriter
public ExecutableMethodWriter(java.lang.String methodClassName, boolean isInterface, boolean isAbstract, boolean isDefault, boolean isSuspend, OriginatingElements originatingElements, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, java.lang.String interceptedProxyClassName, java.lang.String interceptedProxyBridgeMethodName)- Parameters:
methodClassName- The method class nameisInterface- Whether is an interfaceisAbstract- Whether the method is abstractisDefault- Whether the method is a default methodisSuspend- Whether the method is Kotlin suspend functionoriginatingElements- The originating elementsannotationMetadata- The annotation metadatainterceptedProxyClassName- The intercepted proxy class nameinterceptedProxyBridgeMethodName- The intercepted proxy bridge method name
-
-
Method Detail
-
isSupportsInterceptedProxy
public boolean isSupportsInterceptedProxy()
- Returns:
- Is supports intercepted proxy.
-
isAbstract
public boolean isAbstract()
- Returns:
- Is the method abstract.
-
isInterface
public boolean isInterface()
- Returns:
- Is the method in an interface.
-
isDefault
public boolean isDefault()
- Returns:
- Is the method a default method.
-
isSuspend
public boolean isSuspend()
- Returns:
- Is the method suspend.
-
getClassName
public java.lang.String getClassName()
- Returns:
- The class name
-
getInternalName
public java.lang.String getInternalName()
- Returns:
- The internal name
-
visitMethod
public void visitMethod(TypedElement declaringType, MethodElement methodElement)
Write the method.- Parameters:
declaringType- The declaring typemethodElement- The method element
-
accept
public void accept(ClassWriterOutputVisitor classWriterOutputVisitor) throws java.io.IOException
Description copied from interface:ClassOutputWriterAccept a ClassWriterOutputVisitor to write this writer to disk.- Specified by:
acceptin interfaceClassOutputWriter- Parameters:
classWriterOutputVisitor- TheClassWriterOutputVisitor- Throws:
java.io.IOException- if there is an error writing to disk
-
beginAnnotationMetadataMethod
@NonNull protected final org.objectweb.asm.commons.GeneratorAdapter beginAnnotationMetadataMethod(org.objectweb.asm.ClassWriter classWriter)
Description copied from class:AbstractAnnotationMetadataWriterReturns the generator adaptor for the method that resolves the annotation metadata.- Overrides:
beginAnnotationMetadataMethodin classAbstractAnnotationMetadataWriter- Parameters:
classWriter- The class writer- Returns:
- The generator adapter
-
buildInvokeMethod
protected void buildInvokeMethod(org.objectweb.asm.Type declaringTypeObject, java.lang.String methodName, ClassElement returnType, java.util.Collection<ParameterElement> argumentTypes, org.objectweb.asm.commons.GeneratorAdapter invokeMethodVisitor)- Parameters:
declaringTypeObject- The declaring object typemethodName- The method namereturnType- The return typeargumentTypes- The argument typesinvokeMethodVisitor- The invoke method visitor
-
-