diff --git a/extensions/resteasy-reactive/rest/deployment/src/main/java/io/quarkus/resteasy/reactive/server/deployment/ResteasyReactiveProcessor.java b/extensions/resteasy-reactive/rest/deployment/src/main/java/io/quarkus/resteasy/reactive/server/deployment/ResteasyReactiveProcessor.java index 0e29b0bfb5e35..53c3bb8cfda23 100644 --- a/extensions/resteasy-reactive/rest/deployment/src/main/java/io/quarkus/resteasy/reactive/server/deployment/ResteasyReactiveProcessor.java +++ b/extensions/resteasy-reactive/rest/deployment/src/main/java/io/quarkus/resteasy/reactive/server/deployment/ResteasyReactiveProcessor.java @@ -9,6 +9,7 @@ import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.LEGACY_PUBLISHER; import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.MULTI; import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.PUBLISHER; +import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.RESOURCE_INFO; import static org.jboss.resteasy.reactive.common.processor.ResteasyReactiveDotNames.REST_MULTI; import java.io.File; @@ -127,6 +128,7 @@ import io.quarkus.arc.deployment.AdditionalBeanBuildItem; import io.quarkus.arc.deployment.BeanArchiveIndexBuildItem; import io.quarkus.arc.deployment.BeanContainerBuildItem; +import io.quarkus.arc.deployment.BeanDiscoveryFinishedBuildItem; import io.quarkus.arc.deployment.GeneratedBeanBuildItem; import io.quarkus.arc.deployment.UnremovableBeanBuildItem; import io.quarkus.arc.runtime.BeanContainer; @@ -1146,6 +1148,7 @@ public void additionalReflection(BeanArchiveIndexBuildItem beanArchiveIndexBuild List<MessageBodyReaderBuildItem> messageBodyReaderBuildItems, List<MessageBodyWriterBuildItem> messageBodyWriterBuildItems, ResourceInterceptorsBuildItem resourceInterceptorsBuildItem, + BeanDiscoveryFinishedBuildItem beanDiscoveryFinishedBuildItem, BuildProducer<ReflectiveClassBuildItem> producer) { List<ResourceClass> resourceClasses = setupEndpointsResult.getResourceClasses(); IndexView index = beanArchiveIndexBuildItem.getIndex(); @@ -1197,7 +1200,10 @@ public void additionalReflection(BeanArchiveIndexBuildItem beanArchiveIndexBuild serializersRequireResourceReflection = true; } - if (serializersRequireResourceReflection) { + boolean resourceInfoUsed = beanDiscoveryFinishedBuildItem.getInjectionPoints().stream() + .anyMatch(i -> RESOURCE_INFO.equals(i.getRequiredType().name())); + + if (serializersRequireResourceReflection || resourceInfoUsed) { producer.produce(ReflectiveClassBuildItem .builder(resourceClasses.stream().map(ResourceClass::getClassName).toArray(String[]::new)) .reason(getClass().getName())