From 3f0606928b8f764fb6c59a4fe4d6a243fc1a541b Mon Sep 17 00:00:00 2001 From: Matej Novotny Date: Tue, 3 Jan 2023 12:08:47 +0100 Subject: [PATCH] Adjust WrongAnnotationUsageProcessor to recognize interceptor bindings on nested classes --- .../deployment/WrongAnnotationUsageProcessor.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/WrongAnnotationUsageProcessor.java b/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/WrongAnnotationUsageProcessor.java index d7597589eb6c18..2950040112f358 100644 --- a/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/WrongAnnotationUsageProcessor.java +++ b/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/WrongAnnotationUsageProcessor.java @@ -26,7 +26,8 @@ public class WrongAnnotationUsageProcessor { @BuildStep void detect(ArcConfig config, ApplicationIndexBuildItem applicationIndex, CustomScopeAnnotationsBuildItem scopeAnnotations, - TransformedAnnotationsBuildItem transformedAnnotations, BuildProducer validationErrors) { + TransformedAnnotationsBuildItem transformedAnnotations, BuildProducer validationErrors, + InterceptorResolverBuildItem interceptorResolverBuildItem) { if (!config.detectWrongAnnotations) { return; @@ -90,6 +91,16 @@ public String apply(AnnotationInstance annotationInstance) { new IllegalStateException(String.format( "The %s class %s declares a producer but it must be ignored per the CDI rules", clazz.nestingType().toString(), clazz.name().toString())))); + } else { + // detect interceptor bindings on nested classes + for (DotName interceptorBinding : interceptorResolverBuildItem.getInterceptorBindings()) { + if (clazz.annotationsMap().containsKey(interceptorBinding)) { + validationErrors.produce(new ValidationErrorBuildItem( + new IllegalStateException(String.format( + "The %s class %s declares an interceptor binding %s but it must be ignored per CDI rules", + clazz.nestingType().toString(), clazz.name().toString(), interceptorBinding)))); + } + } } } }