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 outExecutableMethod
implementations.- Since:
- 1.0
-
-
Field Summary
Fields Modifier and Type Field Description protected static org.objectweb.asm.commons.Method
METHOD_GET_TARGET
static org.objectweb.asm.commons.Method
METHOD_INVOKE_INTERNAL
protected static org.objectweb.asm.commons.Method
METHOD_IS_ABSTRACT
protected static org.objectweb.asm.commons.Method
METHOD_IS_SUSPEND
protected org.objectweb.asm.Type
methodType
-
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, V19, 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 void
accept(ClassWriterOutputVisitor classWriterOutputVisitor)
Accept a ClassWriterOutputVisitor to write this writer to disk.protected org.objectweb.asm.commons.GeneratorAdapter
beginAnnotationMetadataMethod(org.objectweb.asm.ClassWriter classWriter)
Returns the generator adaptor for the method that resolves the annotation metadata.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)
java.lang.String
getClassName()
java.lang.String
getInternalName()
boolean
isAbstract()
boolean
isDefault()
boolean
isInterface()
boolean
isSupportsInterceptedProxy()
boolean
isSuspend()
void
visitMethod(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:ClassOutputWriter
Accept a ClassWriterOutputVisitor to write this writer to disk.- Specified by:
accept
in 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:AbstractAnnotationMetadataWriter
Returns the generator adaptor for the method that resolves the annotation metadata.- Overrides:
beginAnnotationMetadataMethod
in 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
-
-