Package io.micronaut.aop.writer
Class AopProxyWriter
java.lang.Object
io.micronaut.aop.writer.ProxyingBeanDefinitionWriter
io.micronaut.aop.writer.AopProxyWriter
- All Implemented Interfaces:
Toggleable,BeanDefinitionVisitor,ClassOutputWriter,OriginatingElements,ProxyingBeanDefinitionVisitor
A class that generates AOP proxy classes at compile time.
- Since:
- 1.0
- Author:
- Graeme Rocher
-
Field Summary
FieldsFields inherited from class io.micronaut.aop.writer.ProxyingBeanDefinitionWriter
constructorRequiresReflection, declaredConstructor, deferredInjectionPoints, implementInterface, interceptorBinding, isIntroduction, isProxyTarget, originatingElements, parentWriter, proxyBeanDefinitionWriter, proxyType, targetType, visitorContextFields inherited from interface io.micronaut.inject.writer.BeanDefinitionVisitor
PROXY_SUFFIX -
Constructor Summary
ConstructorsConstructorDescriptionAopProxyWriter(ClassElement targetType, boolean implementInterface, ClassElement[] interfaceTypes, VisitorContext visitorContext, AnnotationValue<?>... interceptorBinding) Constructs a newAopProxyWriterfor the purposes of writingIntroductionadvise.AopProxyWriter(ClassElement targetType, ClassElement[] interfaceTypes, VisitorContext visitorContext, AnnotationValue<?>... interceptorBinding) Constructs a newAopProxyWriterfor the purposes of writingIntroductionadvise.AopProxyWriter(ClassElement targetType, BeanDefinitionWriter parent, OptionalValues<Boolean> settings, VisitorContext visitorContext, AnnotationValue<?>... interceptorBinding) Constructs a newAopProxyWriterfor the given parentBeanDefinitionWriterand starting interceptors types. -
Method Summary
Modifier and TypeMethodDescriptionvoidaccept(ClassWriterOutputVisitor visitor) Write the class to output via a visitor that manages output destination.protected BeanDefinitionWriterprotected BeanDefinitionWriterstatic intfindInterceptorsListParameterIndex(List<ParameterElement> parameters) Find the interceptors list constructor parameter index.voidvisitAroundMethod(TypedElement beanType, MethodElement methodElement) Visit a method that is to be proxied.voidFinalizes the proxy.Methods inherited from class io.micronaut.aop.writer.ProxyingBeanDefinitionWriter
addOriginatingElement, findOverriddenBy, getAnnotationMetadata, getBeanDefinitionName, getBeanDefinitionReferenceClassName, getBeanSimpleName, getBeanTypeName, getInterceptedType, getOriginatingElement, getOriginatingElements, getPackageName, getProxyTarget, getTypeArgumentMap, getTypeArguments, isEnabled, isInterface, isProxyTarget, isValidated, postConstructor, processAlreadyVisitedMethods, requiresMethodProcessing, setExposes, setInterceptedType, setRequiresMethodProcessing, setValidated, toTypeString, visitAnnotationMemberPropertyInjectionPoint, visitBeanDefinitionConstructor, visitBeanDefinitionInterface, visitBeanFactoryField, visitBeanFactoryMethod, visitBeanFactoryMethod, visitConfigBuilder, visitConfigBuilderDurationMethod, visitConfigBuilderEnd, visitConfigBuilderField, visitConfigBuilderMethod, visitConfigBuilderMethod, visitDefaultConstructor, visitExecutableMethod, visitFieldInjectionPoint, visitFieldValue, visitInterceptorBinding, visitIntroductionMethod, visitMethodInjectionPoint, visitPostConstructMethod, visitPreDestroyMethod, visitSetterValue, visitSuperBeanDefinition, visitSuperBeanDefinitionFactory, visitTypeArgumentsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.micronaut.inject.writer.BeanDefinitionVisitor
isProxiedBean, writeTo
-
Field Details
-
ADDITIONAL_PARAMETERS_COUNT
public static final int ADDITIONAL_PARAMETERS_COUNT- See Also:
-
-
Constructor Details
-
AopProxyWriter
public AopProxyWriter(ClassElement targetType, BeanDefinitionWriter parent, OptionalValues<Boolean> settings, VisitorContext visitorContext, AnnotationValue<?>... interceptorBinding) Constructs a new
AopProxyWriterfor the given parentBeanDefinitionWriterand starting interceptors types.Additional
Interceptortypes can be added downstream withProxyingBeanDefinitionWriter.visitInterceptorBinding(AnnotationValue[]).- Parameters:
targetType- The classElementparent- The parentBeanDefinitionWritersettings- optional settingvisitorContext- The visitor contextinterceptorBinding- The interceptor binding of theInterceptorinstances to be injected
-
AopProxyWriter
public AopProxyWriter(ClassElement targetType, ClassElement[] interfaceTypes, VisitorContext visitorContext, AnnotationValue<?>... interceptorBinding) Constructs a newAopProxyWriterfor the purposes of writingIntroductionadvise.- Parameters:
targetType- The source elementinterfaceTypes- The additional interfaces to implementvisitorContext- The visitor contextinterceptorBinding- The interceptor types
-
AopProxyWriter
public AopProxyWriter(ClassElement targetType, boolean implementInterface, ClassElement[] interfaceTypes, VisitorContext visitorContext, AnnotationValue<?>... interceptorBinding) Constructs a newAopProxyWriterfor the purposes of writingIntroductionadvise.- Parameters:
targetType- The source elementimplementInterface- Whether the interface should be implemented. If false theinterfaceTypesargument should contain at least one entryinterfaceTypes- The additional interfaces to implementvisitorContext- The visitor contextinterceptorBinding- The interceptor binding
-
-
Method Details
-
createAdviceProxyBeanDefinitionWriter
- Specified by:
createAdviceProxyBeanDefinitionWriterin classProxyingBeanDefinitionWriter- Parameters:
suffix- The name suffix- Returns:
- Create the advice bean definition writer
-
createIntroductionProxyBeanDefinitionWriter
- Specified by:
createIntroductionProxyBeanDefinitionWriterin classProxyingBeanDefinitionWriter- Parameters:
suffix- The name suffix- Returns:
- Create the introduction bean definition writer
-
findInterceptorsListParameterIndex
Find the interceptors list constructor parameter index.- Parameters:
parameters- The constructor parameters- Returns:
- the index
-
visitAroundMethod
Visit a method that is to be proxied.- Specified by:
visitAroundMethodin interfaceProxyingBeanDefinitionVisitor- Overrides:
visitAroundMethodin classProxyingBeanDefinitionWriter- 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 withBeanDefinitionVisitor.writeTo(File)- Specified by:
visitBeanDefinitionEndin interfaceBeanDefinitionVisitor- Overrides:
visitBeanDefinitionEndin classProxyingBeanDefinitionWriter
-
accept
Write the class to output via a visitor that manages output destination.- Specified by:
acceptin interfaceBeanDefinitionVisitor- Specified by:
acceptin interfaceClassOutputWriter- Overrides:
acceptin classProxyingBeanDefinitionWriter- Parameters:
visitor- the writer output visitor- Throws:
IOException- If an error occurs
-