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 aExecutableMethodsDefinition
class.- Since:
- 3.0
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
CLASS_SUFFIX
static org.objectweb.asm.commons.Method
GET_EXECUTABLE_AT_INDEX_METHOD
static org.objectweb.asm.Type
SUPER_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, V9
-
-
Constructor Summary
Constructors Constructor Description ExecutableMethodsDefinitionWriter(java.lang.String beanDefinitionClassName, java.lang.String beanDefinitionReferenceClassName, OriginatingElements originatingElements)
-
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.java.lang.String
getClassName()
org.objectweb.asm.Type
getClassType()
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
isSupportsInterceptedProxy()
Does method supports intercepted proxy.boolean
isSuspend(int index)
Is the method suspend.int
visitExecutableMethod(TypedElement declaringType, MethodElement methodElement, java.lang.String interceptedProxyClassName, java.lang.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, 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
-
CLASS_SUFFIX
public static final java.lang.String CLASS_SUFFIX
- See Also:
- Constant Field Values
-
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 Detail
-
ExecutableMethodsDefinitionWriter
public ExecutableMethodsDefinitionWriter(java.lang.String beanDefinitionClassName, java.lang.String beanDefinitionReferenceClassName, OriginatingElements originatingElements)
-
-
Method Detail
-
getClassName
public java.lang.String 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, java.lang.String interceptedProxyClassName, java.lang.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
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
-
-