Package io.micronaut.inject.writer
Class ExecutableMethodsDefinitionWriter
java.lang.Object
io.micronaut.inject.writer.AbstractClassFileWriter
io.micronaut.inject.writer.ExecutableMethodsDefinitionWriter
- All Implemented Interfaces:
ClassOutputWriter
,OriginatingElements
,org.objectweb.asm.Opcodes
@Internal
public class ExecutableMethodsDefinitionWriter
extends AbstractClassFileWriter
implements org.objectweb.asm.Opcodes
Writes out a
ExecutableMethodsDefinition
class.- Since:
- 3.0
- Author:
- Denis Stepanov
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
static final org.objectweb.asm.commons.Method
static final org.objectweb.asm.Type
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, V9
-
Constructor Summary
ConstructorDescriptionExecutableMethodsDefinitionWriter
(VisitorContext visitorContext, EvaluatedExpressionProcessor evaluatedExpressionProcessor, AnnotationMetadata annotationMetadataWithDefaults, String beanDefinitionClassName, String beanDefinitionReferenceClassName, OriginatingElements originatingElements) -
Method Summary
Modifier and TypeMethodDescriptionvoid
accept
(ClassWriterOutputVisitor classWriterOutputVisitor) Accept a ClassWriterOutputVisitor to write this writer to disk.org.objectweb.asm.Type
boolean
isAbstract
(int index) Is the method abstract.boolean
isDefault
(int index) Is the method a default method.boolean
isInterface
(int index) Is the method in an interface.boolean
Does method supports intercepted proxy.boolean
isSuspend
(int index) Is the method suspend.final void
Invoke to build the class model.int
visitExecutableMethod
(TypedElement declaringType, MethodElement methodElement, String interceptedProxyClassName, String interceptedProxyBridgeMethodName) Visit a method that is to be made executable allow invocation of said method without reflection.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, pushListOfString, 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 Details
-
CLASS_SUFFIX
- See Also:
-
GET_EXECUTABLE_AT_INDEX_METHOD
public static final org.objectweb.asm.commons.Method GET_EXECUTABLE_AT_INDEX_METHOD -
SUPER_TYPE
public static final org.objectweb.asm.Type SUPER_TYPE
-
-
Constructor Details
-
ExecutableMethodsDefinitionWriter
public ExecutableMethodsDefinitionWriter(VisitorContext visitorContext, EvaluatedExpressionProcessor evaluatedExpressionProcessor, AnnotationMetadata annotationMetadataWithDefaults, String beanDefinitionClassName, String beanDefinitionReferenceClassName, OriginatingElements originatingElements)
-
-
Method Details
-
getClassName
- Returns:
- The generated class name.
-
getClassType
public org.objectweb.asm.Type getClassType()- Returns:
- The generated class type.
-
isSupportsInterceptedProxy
public boolean isSupportsInterceptedProxy()Does method supports intercepted proxy.- Returns:
- Does method supports intercepted proxy
-
isAbstract
public boolean isAbstract(int index) Is the method abstract.- Parameters:
index
- The method index- Returns:
- Is the method abstract
-
isInterface
public boolean isInterface(int index) Is the method in an interface.- Parameters:
index
- The method index- Returns:
- Is the method in an interface
-
isDefault
public boolean isDefault(int index) Is the method a default method.- Parameters:
index
- The method index- Returns:
- Is the method a default method
-
isSuspend
public boolean isSuspend(int index) Is the method suspend.- Parameters:
index
- The method index- Returns:
- Is the method suspend
-
visitExecutableMethod
public int visitExecutableMethod(TypedElement declaringType, MethodElement methodElement, String interceptedProxyClassName, String interceptedProxyBridgeMethodName) Visit a method that is to be made executable allow invocation of said method without reflection.- Parameters:
declaringType
- The declaring type of the method. Either a Class or a string representing the name of the typemethodElement
- The method elementinterceptedProxyClassName
- The intercepted proxy class nameinterceptedProxyBridgeMethodName
- The intercepted proxy bridge method name- Returns:
- The method index
-
accept
Description copied from interface:ClassOutputWriter
Accept a ClassWriterOutputVisitor to write this writer to disk.- Specified by:
accept
in interfaceClassOutputWriter
- Parameters:
classWriterOutputVisitor
- TheClassWriterOutputVisitor
- Throws:
IOException
- if there is an error writing to disk
-
visitDefinitionEnd
public final void visitDefinitionEnd()Invoke to build the class model.
-