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 d7597589eb6c1..e10d994a4e877 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 @@ -17,6 +17,7 @@ import org.jboss.jandex.IndexView; import io.quarkus.arc.deployment.ValidationPhaseBuildItem.ValidationErrorBuildItem; +import io.quarkus.arc.processor.Annotations; import io.quarkus.arc.processor.DotNames; import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; @@ -26,7 +27,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 +92,14 @@ 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 if (Annotations.containsAny(classAnnotations, interceptorResolverBuildItem.getInterceptorBindings()) + || Annotations.containsAny(clazz.annotations(), + interceptorResolverBuildItem.getInterceptorBindings())) { + // detect interceptor bindings on nested classes + validationErrors.produce(new ValidationErrorBuildItem( + new IllegalStateException(String.format( + "The %s class %s declares an interceptor binding but it must be ignored per CDI rules", + clazz.nestingType().toString(), clazz.name().toString())))); } } }