Package io.micronaut.aop.writer
Class AopProxyWriter
- java.lang.Object
-
- io.micronaut.inject.writer.AbstractClassFileWriter
-
- io.micronaut.aop.writer.AopProxyWriter
-
- All Implemented Interfaces:
io.micronaut.core.util.Toggleable
,io.micronaut.inject.writer.BeanDefinitionVisitor
,io.micronaut.inject.writer.ClassOutputWriter
,io.micronaut.inject.writer.OriginatingElements
,io.micronaut.inject.writer.ProxyingBeanDefinitionVisitor
,org.objectweb.asm.Opcodes
public class AopProxyWriter extends io.micronaut.inject.writer.AbstractClassFileWriter implements io.micronaut.inject.writer.ProxyingBeanDefinitionVisitor, io.micronaut.core.util.Toggleable
A class that generates AOP proxy classes at compile time.- Since:
- 1.0
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
FIELD_BEAN_RESOLUTION_CONTEXT
static java.lang.String
FIELD_READ_LOCK
static java.lang.String
FIELD_READ_WRITE_LOCK
static java.lang.String
FIELD_TARGET
static org.objectweb.asm.Type
FIELD_TYPE_INTERCEPTORS
static java.lang.String
FIELD_WRITE_LOCK
static int
MAX_LOCALS
static org.objectweb.asm.commons.Method
METHOD_GET_PROXY_TARGET
static org.objectweb.asm.commons.Method
METHOD_GET_PROXY_TARGET_BEAN
static org.objectweb.asm.commons.Method
METHOD_GET_PROXY_TARGET_BEAN_WITH_CONTEXT
static org.objectweb.asm.commons.Method
METHOD_HAS_CACHED_INTERCEPTED_METHOD
static org.objectweb.asm.Type
TYPE_BEAN_LOCATOR
static org.objectweb.asm.Type
TYPE_DEFAULT_BEAN_CONTEXT
static org.objectweb.asm.Type
TYPE_INTERCEPTOR_CHAIN
static org.objectweb.asm.Type
TYPE_LOCK
static org.objectweb.asm.Type
TYPE_METHOD_INTERCEPTOR_CHAIN
static org.objectweb.asm.Type
TYPE_READ_WRITE_LOCK
-
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 AopProxyWriter(io.micronaut.inject.writer.BeanDefinitionWriter parent, io.micronaut.core.value.OptionalValues<java.lang.Boolean> settings, io.micronaut.inject.configuration.ConfigurationMetadataBuilder<?> metadataBuilder, io.micronaut.inject.visitor.VisitorContext visitorContext, io.micronaut.core.annotation.AnnotationValue<?>... interceptorBinding)
Constructs a newAopProxyWriter
for the given parentBeanDefinitionWriter
and starting interceptors types.AopProxyWriter(java.lang.String packageName, java.lang.String className, boolean isInterface, boolean implementInterface, io.micronaut.inject.ast.Element originatingElement, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, io.micronaut.inject.ast.ClassElement[] interfaceTypes, io.micronaut.inject.visitor.VisitorContext visitorContext, io.micronaut.inject.configuration.ConfigurationMetadataBuilder<?> metadataBuilder, io.micronaut.inject.configuration.ConfigurationMetadata configurationMetadata, io.micronaut.core.annotation.AnnotationValue<?>... interceptorBinding)
Constructs a newAopProxyWriter
for the purposes of writingIntroduction
advise.AopProxyWriter(java.lang.String packageName, java.lang.String className, boolean isInterface, io.micronaut.inject.ast.Element originatingElement, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, io.micronaut.inject.ast.ClassElement[] interfaceTypes, io.micronaut.inject.visitor.VisitorContext visitorContext, io.micronaut.inject.configuration.ConfigurationMetadataBuilder<?> metadataBuilder, io.micronaut.inject.configuration.ConfigurationMetadata configurationMetadata, io.micronaut.core.annotation.AnnotationValue<?>... interceptorBinding)
Constructs a newAopProxyWriter
for the purposes of writingIntroduction
advise.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
accept(io.micronaut.inject.writer.ClassWriterOutputVisitor visitor)
Write the class to output via a visitor that manages output destination.io.micronaut.core.annotation.AnnotationMetadata
getAnnotationMetadata()
java.lang.String
getBeanDefinitionName()
java.lang.String
getBeanDefinitionReferenceClassName()
java.lang.String
getBeanSimpleName()
java.lang.String
getBeanTypeName()
java.util.Optional<org.objectweb.asm.Type>
getInterceptedType()
io.micronaut.inject.ast.Element
getOriginatingElement()
Deprecated.java.lang.String
getPackageName()
org.objectweb.asm.Type
getProvidedType()
java.lang.String
getProxiedBeanDefinitionName()
java.lang.String
getProxiedTypeName()
io.micronaut.inject.ast.ClassElement[]
getTypeArguments()
boolean
isEnabled()
boolean
isInterface()
boolean
isProxyTarget()
Is the target bean being proxied.boolean
isSingleton()
boolean
isValidated()
boolean
requiresMethodProcessing()
void
setInterceptedType(java.lang.String typeName)
void
setRequiresMethodProcessing(boolean shouldPreProcess)
void
setValidated(boolean validated)
protected void
startClass(org.objectweb.asm.ClassVisitor classWriter, java.lang.String className, org.objectweb.asm.Type superType)
void
visitAnnotationMemberPropertyInjectionPoint(io.micronaut.inject.ast.TypedElement annotationMemberBeanType, java.lang.String annotationMemberProperty, java.lang.String requiredValue, java.lang.String notEqualsValue)
void
visitAroundMethod(io.micronaut.inject.ast.TypedElement beanType, io.micronaut.inject.ast.MethodElement methodElement)
Visit a method that is to be proxied.void
visitBeanDefinitionConstructor(io.micronaut.inject.ast.MethodElement constructor, boolean requiresReflection, io.micronaut.inject.visitor.VisitorContext visitorContext)
Visits a constructor.void
visitBeanDefinitionEnd()
Finalizes the proxy.void
visitBeanDefinitionInterface(java.lang.Class<? extends io.micronaut.inject.BeanDefinition> interfaceType)
void
visitBeanFactoryField(io.micronaut.inject.ast.ClassElement factoryClass, io.micronaut.inject.ast.FieldElement factoryField)
void
visitBeanFactoryMethod(io.micronaut.inject.ast.ClassElement factoryClass, io.micronaut.inject.ast.MethodElement factoryMethod)
void
visitBeanFactoryMethod(io.micronaut.inject.ast.ClassElement factoryClass, io.micronaut.inject.ast.MethodElement factoryMethod, io.micronaut.inject.ast.ParameterElement[] parameters)
void
visitConfigBuilderDurationMethod(java.lang.String prefix, io.micronaut.inject.ast.ClassElement returnType, java.lang.String methodName, java.lang.String propertyPath)
void
visitConfigBuilderEnd()
void
visitConfigBuilderField(io.micronaut.inject.ast.ClassElement type, java.lang.String field, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, io.micronaut.inject.configuration.ConfigurationMetadataBuilder metadataBuilder, boolean isInterface)
void
visitConfigBuilderMethod(io.micronaut.inject.ast.ClassElement type, java.lang.String methodName, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, io.micronaut.inject.configuration.ConfigurationMetadataBuilder metadataBuilder, boolean isInterface)
void
visitConfigBuilderMethod(java.lang.String prefix, io.micronaut.inject.ast.ClassElement returnType, java.lang.String methodName, io.micronaut.inject.ast.ClassElement paramType, java.util.Map<java.lang.String,io.micronaut.inject.ast.ClassElement> generics, java.lang.String propertyPath)
void
visitDefaultConstructor(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, io.micronaut.inject.visitor.VisitorContext visitorContext)
int
visitExecutableMethod(io.micronaut.inject.ast.TypedElement declaringBean, io.micronaut.inject.ast.MethodElement methodElement, io.micronaut.inject.visitor.VisitorContext visitorContext)
void
visitFieldInjectionPoint(io.micronaut.inject.ast.TypedElement declaringType, io.micronaut.inject.ast.FieldElement fieldType, boolean requiresReflection)
void
visitFieldValue(io.micronaut.inject.ast.TypedElement declaringType, io.micronaut.inject.ast.FieldElement fieldType, boolean requiresReflection, boolean isOptional)
void
visitInterceptorBinding(io.micronaut.core.annotation.AnnotationValue<?>... interceptorBinding)
visitInterceptorTypes.void
visitIntroductionMethod(io.micronaut.inject.ast.TypedElement declaringBean, io.micronaut.inject.ast.MethodElement methodElement)
Visit a abstract method that is to be implemented.void
visitMethodInjectionPoint(io.micronaut.inject.ast.TypedElement beanType, io.micronaut.inject.ast.MethodElement methodElement, boolean requiresReflection, io.micronaut.inject.visitor.VisitorContext visitorContext)
void
visitPostConstructMethod(io.micronaut.inject.ast.TypedElement declaringType, io.micronaut.inject.ast.MethodElement methodElement, boolean requiresReflection, io.micronaut.inject.visitor.VisitorContext visitorContext)
void
visitPreDestroyMethod(io.micronaut.inject.ast.TypedElement declaringType, io.micronaut.inject.ast.MethodElement methodElement, boolean requiresReflection, io.micronaut.inject.visitor.VisitorContext visitorContext)
void
visitSetterValue(io.micronaut.inject.ast.TypedElement declaringType, io.micronaut.inject.ast.MethodElement methodElement, boolean requiresReflection, boolean isOptional)
void
visitSuperBeanDefinition(java.lang.String name)
void
visitSuperBeanDefinitionFactory(java.lang.String beanName)
void
visitTypeArguments(java.util.Map<java.lang.String,java.util.Map<java.lang.String,io.micronaut.inject.ast.ClassElement>> typeArguments)
void
writeTo(java.io.File compilationDir)
Write the proxy to the given compilation directory.-
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, 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, startConstructor, startConstructor, startFinalClass, startProtectedMethod, startPublicClass, startPublicFinalClass, startPublicFinalMethodZeroArgs, startPublicMethod, startPublicMethod, startPublicMethodZeroArgs, startService, startService, visitStaticInitializer, writeBooleanMethod, writeClassToDisk, writeClassToDisk
-
-
-
-
Field Detail
-
MAX_LOCALS
public static final int MAX_LOCALS
- See Also:
- Constant Field Values
-
METHOD_GET_PROXY_TARGET
public static final org.objectweb.asm.commons.Method METHOD_GET_PROXY_TARGET
-
METHOD_GET_PROXY_TARGET_BEAN_WITH_CONTEXT
public static final org.objectweb.asm.commons.Method METHOD_GET_PROXY_TARGET_BEAN_WITH_CONTEXT
-
METHOD_GET_PROXY_TARGET_BEAN
public static final org.objectweb.asm.commons.Method METHOD_GET_PROXY_TARGET_BEAN
-
METHOD_HAS_CACHED_INTERCEPTED_METHOD
public static final org.objectweb.asm.commons.Method METHOD_HAS_CACHED_INTERCEPTED_METHOD
-
FIELD_TYPE_INTERCEPTORS
public static final org.objectweb.asm.Type FIELD_TYPE_INTERCEPTORS
-
TYPE_INTERCEPTOR_CHAIN
public static final org.objectweb.asm.Type TYPE_INTERCEPTOR_CHAIN
-
TYPE_METHOD_INTERCEPTOR_CHAIN
public static final org.objectweb.asm.Type TYPE_METHOD_INTERCEPTOR_CHAIN
-
FIELD_TARGET
public static final java.lang.String FIELD_TARGET
- See Also:
- Constant Field Values
-
FIELD_BEAN_RESOLUTION_CONTEXT
public static final java.lang.String FIELD_BEAN_RESOLUTION_CONTEXT
- See Also:
- Constant Field Values
-
FIELD_READ_WRITE_LOCK
public static final java.lang.String FIELD_READ_WRITE_LOCK
- See Also:
- Constant Field Values
-
TYPE_READ_WRITE_LOCK
public static final org.objectweb.asm.Type TYPE_READ_WRITE_LOCK
-
FIELD_READ_LOCK
public static final java.lang.String FIELD_READ_LOCK
- See Also:
- Constant Field Values
-
FIELD_WRITE_LOCK
public static final java.lang.String FIELD_WRITE_LOCK
- See Also:
- Constant Field Values
-
TYPE_LOCK
public static final org.objectweb.asm.Type TYPE_LOCK
-
TYPE_BEAN_LOCATOR
public static final org.objectweb.asm.Type TYPE_BEAN_LOCATOR
-
TYPE_DEFAULT_BEAN_CONTEXT
public static final org.objectweb.asm.Type TYPE_DEFAULT_BEAN_CONTEXT
-
-
Constructor Detail
-
AopProxyWriter
public AopProxyWriter(io.micronaut.inject.writer.BeanDefinitionWriter parent, io.micronaut.core.value.OptionalValues<java.lang.Boolean> settings, io.micronaut.inject.configuration.ConfigurationMetadataBuilder<?> metadataBuilder, io.micronaut.inject.visitor.VisitorContext visitorContext, io.micronaut.core.annotation.AnnotationValue<?>... interceptorBinding)
Constructs a new
AopProxyWriter
for the given parentBeanDefinitionWriter
and starting interceptors types.Additional
Interceptor
types can be added downstream withvisitInterceptorBinding(AnnotationValue[])
.- Parameters:
parent
- The parentBeanDefinitionWriter
settings
- optional settingmetadataBuilder
- The configuration metadata buildervisitorContext
- The visitor contextinterceptorBinding
- The interceptor binding of theInterceptor
instances to be injected
-
AopProxyWriter
public AopProxyWriter(java.lang.String packageName, java.lang.String className, boolean isInterface, io.micronaut.inject.ast.Element originatingElement, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, io.micronaut.inject.ast.ClassElement[] interfaceTypes, io.micronaut.inject.visitor.VisitorContext visitorContext, io.micronaut.inject.configuration.ConfigurationMetadataBuilder<?> metadataBuilder, io.micronaut.inject.configuration.ConfigurationMetadata configurationMetadata, io.micronaut.core.annotation.AnnotationValue<?>... interceptorBinding)
Constructs a newAopProxyWriter
for the purposes of writingIntroduction
advise.- Parameters:
packageName
- The package nameclassName
- The class nameisInterface
- Is the target of the advise an interfaceoriginatingElement
- The originating elementannotationMetadata
- The annotation metadatainterfaceTypes
- The additional interfaces to implementvisitorContext
- The visitor contextmetadataBuilder
- The configuration metadata builderconfigurationMetadata
- The configuration metadata for the classinterceptorBinding
- The interceptor types
-
AopProxyWriter
public AopProxyWriter(java.lang.String packageName, java.lang.String className, boolean isInterface, boolean implementInterface, io.micronaut.inject.ast.Element originatingElement, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, io.micronaut.inject.ast.ClassElement[] interfaceTypes, io.micronaut.inject.visitor.VisitorContext visitorContext, io.micronaut.inject.configuration.ConfigurationMetadataBuilder<?> metadataBuilder, io.micronaut.inject.configuration.ConfigurationMetadata configurationMetadata, io.micronaut.core.annotation.AnnotationValue<?>... interceptorBinding)
Constructs a newAopProxyWriter
for the purposes of writingIntroduction
advise.- Parameters:
packageName
- The package nameclassName
- The class nameisInterface
- Is the target of the advise an interfaceimplementInterface
- Whether the interface should be implemented. If false theinterfaceTypes
argument should contain at least one entryoriginatingElement
- The originating elementsannotationMetadata
- The annotation metadatainterfaceTypes
- The additional interfaces to implementvisitorContext
- The visitor contextmetadataBuilder
- The configuration metadata builderconfigurationMetadata
- The configuration metadata for the classinterceptorBinding
- The interceptor binding
-
-
Method Detail
-
isEnabled
public boolean isEnabled()
- Specified by:
isEnabled
in interfaceio.micronaut.core.util.Toggleable
-
isProxyTarget
public boolean isProxyTarget()
Is the target bean being proxied.- Returns:
- True if the target bean is being proxied
-
startClass
protected void startClass(org.objectweb.asm.ClassVisitor classWriter, java.lang.String className, org.objectweb.asm.Type superType)
- Overrides:
startClass
in classio.micronaut.inject.writer.AbstractClassFileWriter
-
getOriginatingElement
@Deprecated public io.micronaut.inject.ast.Element getOriginatingElement()
Deprecated.- Specified by:
getOriginatingElement
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
- Overrides:
getOriginatingElement
in classio.micronaut.inject.writer.AbstractClassFileWriter
-
visitBeanFactoryMethod
public void visitBeanFactoryMethod(io.micronaut.inject.ast.ClassElement factoryClass, io.micronaut.inject.ast.MethodElement factoryMethod)
- Specified by:
visitBeanFactoryMethod
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitBeanFactoryMethod
public void visitBeanFactoryMethod(io.micronaut.inject.ast.ClassElement factoryClass, io.micronaut.inject.ast.MethodElement factoryMethod, io.micronaut.inject.ast.ParameterElement[] parameters)
- Specified by:
visitBeanFactoryMethod
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitBeanFactoryField
public void visitBeanFactoryField(io.micronaut.inject.ast.ClassElement factoryClass, io.micronaut.inject.ast.FieldElement factoryField)
- Specified by:
visitBeanFactoryField
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
isSingleton
public boolean isSingleton()
- Specified by:
isSingleton
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
isInterface
public boolean isInterface()
- Specified by:
isInterface
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitBeanDefinitionInterface
public void visitBeanDefinitionInterface(java.lang.Class<? extends io.micronaut.inject.BeanDefinition> interfaceType)
- Specified by:
visitBeanDefinitionInterface
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
getBeanTypeName
public java.lang.String getBeanTypeName()
- Specified by:
getBeanTypeName
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
getProvidedType
public org.objectweb.asm.Type getProvidedType()
- Specified by:
getProvidedType
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
setValidated
public void setValidated(boolean validated)
- Specified by:
setValidated
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
setInterceptedType
public void setInterceptedType(java.lang.String typeName)
- Specified by:
setInterceptedType
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
getInterceptedType
public java.util.Optional<org.objectweb.asm.Type> getInterceptedType()
- Specified by:
getInterceptedType
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
isValidated
public boolean isValidated()
- Specified by:
isValidated
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
getBeanDefinitionName
public java.lang.String getBeanDefinitionName()
- Specified by:
getBeanDefinitionName
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitBeanDefinitionConstructor
public void visitBeanDefinitionConstructor(io.micronaut.inject.ast.MethodElement constructor, boolean requiresReflection, io.micronaut.inject.visitor.VisitorContext visitorContext)
Visits a constructor.- Specified by:
visitBeanDefinitionConstructor
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
- Parameters:
constructor
- The constructorrequiresReflection
- Whether reflection is requiredvisitorContext
- The visitor context
-
visitDefaultConstructor
public void visitDefaultConstructor(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, io.micronaut.inject.visitor.VisitorContext visitorContext)
- Specified by:
visitDefaultConstructor
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
getBeanDefinitionReferenceClassName
@NonNull public java.lang.String getBeanDefinitionReferenceClassName()
- Specified by:
getBeanDefinitionReferenceClassName
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitIntroductionMethod
public void visitIntroductionMethod(io.micronaut.inject.ast.TypedElement declaringBean, io.micronaut.inject.ast.MethodElement methodElement)
Visit a abstract method that is to be implemented.- Parameters:
declaringBean
- The declaring bean of the method.methodElement
- The method element
-
visitAroundMethod
public void visitAroundMethod(io.micronaut.inject.ast.TypedElement beanType, io.micronaut.inject.ast.MethodElement methodElement)
Visit a method that is to be proxied.- Parameters:
beanType
- The bean type.methodElement
- The method element
-
visitBeanDefinitionEnd
public void visitBeanDefinitionEnd()
Finalizes the proxy. This method should be called before writing the proxy to disk withwriteTo(File)
- Specified by:
visitBeanDefinitionEnd
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
writeTo
public void writeTo(java.io.File compilationDir) throws java.io.IOException
Write the proxy to the given compilation directory.- Specified by:
writeTo
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
- Overrides:
writeTo
in classio.micronaut.inject.writer.AbstractClassFileWriter
- Parameters:
compilationDir
- The target compilation directory- Throws:
java.io.IOException
- If an error occurs writing the file
-
getTypeArguments
@NonNull public io.micronaut.inject.ast.ClassElement[] getTypeArguments()
- Specified by:
getTypeArguments
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
accept
public void accept(io.micronaut.inject.writer.ClassWriterOutputVisitor visitor) throws java.io.IOException
Write the class to output via a visitor that manages output destination.- Specified by:
accept
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
- Specified by:
accept
in interfaceio.micronaut.inject.writer.ClassOutputWriter
- Parameters:
visitor
- the writer output visitor- Throws:
java.io.IOException
- If an error occurs
-
visitSuperBeanDefinition
public void visitSuperBeanDefinition(java.lang.String name)
- Specified by:
visitSuperBeanDefinition
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitSuperBeanDefinitionFactory
public void visitSuperBeanDefinitionFactory(java.lang.String beanName)
- Specified by:
visitSuperBeanDefinitionFactory
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitSetterValue
public void visitSetterValue(io.micronaut.inject.ast.TypedElement declaringType, io.micronaut.inject.ast.MethodElement methodElement, boolean requiresReflection, boolean isOptional)
- Specified by:
visitSetterValue
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitPostConstructMethod
public void visitPostConstructMethod(io.micronaut.inject.ast.TypedElement declaringType, io.micronaut.inject.ast.MethodElement methodElement, boolean requiresReflection, io.micronaut.inject.visitor.VisitorContext visitorContext)
- Specified by:
visitPostConstructMethod
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitPreDestroyMethod
public void visitPreDestroyMethod(io.micronaut.inject.ast.TypedElement declaringType, io.micronaut.inject.ast.MethodElement methodElement, boolean requiresReflection, io.micronaut.inject.visitor.VisitorContext visitorContext)
- Specified by:
visitPreDestroyMethod
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitMethodInjectionPoint
public void visitMethodInjectionPoint(io.micronaut.inject.ast.TypedElement beanType, io.micronaut.inject.ast.MethodElement methodElement, boolean requiresReflection, io.micronaut.inject.visitor.VisitorContext visitorContext)
- Specified by:
visitMethodInjectionPoint
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitExecutableMethod
public int visitExecutableMethod(io.micronaut.inject.ast.TypedElement declaringBean, io.micronaut.inject.ast.MethodElement methodElement, io.micronaut.inject.visitor.VisitorContext visitorContext)
- Specified by:
visitExecutableMethod
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitFieldInjectionPoint
public void visitFieldInjectionPoint(io.micronaut.inject.ast.TypedElement declaringType, io.micronaut.inject.ast.FieldElement fieldType, boolean requiresReflection)
- Specified by:
visitFieldInjectionPoint
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitAnnotationMemberPropertyInjectionPoint
public void visitAnnotationMemberPropertyInjectionPoint(io.micronaut.inject.ast.TypedElement annotationMemberBeanType, java.lang.String annotationMemberProperty, java.lang.String requiredValue, java.lang.String notEqualsValue)
- Specified by:
visitAnnotationMemberPropertyInjectionPoint
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitFieldValue
public void visitFieldValue(io.micronaut.inject.ast.TypedElement declaringType, io.micronaut.inject.ast.FieldElement fieldType, boolean requiresReflection, boolean isOptional)
- Specified by:
visitFieldValue
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
getPackageName
public java.lang.String getPackageName()
- Specified by:
getPackageName
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
getBeanSimpleName
public java.lang.String getBeanSimpleName()
- Specified by:
getBeanSimpleName
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
getAnnotationMetadata
public io.micronaut.core.annotation.AnnotationMetadata getAnnotationMetadata()
- Specified by:
getAnnotationMetadata
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitConfigBuilderField
public void visitConfigBuilderField(io.micronaut.inject.ast.ClassElement type, java.lang.String field, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, io.micronaut.inject.configuration.ConfigurationMetadataBuilder metadataBuilder, boolean isInterface)
- Specified by:
visitConfigBuilderField
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitConfigBuilderMethod
public void visitConfigBuilderMethod(io.micronaut.inject.ast.ClassElement type, java.lang.String methodName, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, io.micronaut.inject.configuration.ConfigurationMetadataBuilder metadataBuilder, boolean isInterface)
- Specified by:
visitConfigBuilderMethod
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitConfigBuilderMethod
public void visitConfigBuilderMethod(java.lang.String prefix, io.micronaut.inject.ast.ClassElement returnType, java.lang.String methodName, io.micronaut.inject.ast.ClassElement paramType, java.util.Map<java.lang.String,io.micronaut.inject.ast.ClassElement> generics, java.lang.String propertyPath)
- Specified by:
visitConfigBuilderMethod
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitConfigBuilderDurationMethod
public void visitConfigBuilderDurationMethod(java.lang.String prefix, io.micronaut.inject.ast.ClassElement returnType, java.lang.String methodName, java.lang.String propertyPath)
- Specified by:
visitConfigBuilderDurationMethod
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitConfigBuilderEnd
public void visitConfigBuilderEnd()
- Specified by:
visitConfigBuilderEnd
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
setRequiresMethodProcessing
public void setRequiresMethodProcessing(boolean shouldPreProcess)
- Specified by:
setRequiresMethodProcessing
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
visitTypeArguments
public void visitTypeArguments(java.util.Map<java.lang.String,java.util.Map<java.lang.String,io.micronaut.inject.ast.ClassElement>> typeArguments)
- Specified by:
visitTypeArguments
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
requiresMethodProcessing
public boolean requiresMethodProcessing()
- Specified by:
requiresMethodProcessing
in interfaceio.micronaut.inject.writer.BeanDefinitionVisitor
-
getProxiedTypeName
public java.lang.String getProxiedTypeName()
- Specified by:
getProxiedTypeName
in interfaceio.micronaut.inject.writer.ProxyingBeanDefinitionVisitor
-
getProxiedBeanDefinitionName
public java.lang.String getProxiedBeanDefinitionName()
- Specified by:
getProxiedBeanDefinitionName
in interfaceio.micronaut.inject.writer.ProxyingBeanDefinitionVisitor
-
visitInterceptorBinding
public void visitInterceptorBinding(io.micronaut.core.annotation.AnnotationValue<?>... interceptorBinding)
visitInterceptorTypes.- Parameters:
interceptorBinding
- the interceptor binding
-
-