From 0825eed67b83a6f5cecad431acdda56a8eeeaa75 Mon Sep 17 00:00:00 2001
From: Georgios Andrianakis <geoand@gmail.com>
Date: Wed, 22 Feb 2023 11:00:01 +0200
Subject: [PATCH] Use idiomatic RESTEasy Reactive filter declaration for
 OpenTelemetry

Closes: #31245
---
 .../InstrumentationProcessor.java                |  7 +++----
 .../OpenTelemetryReactiveServerFilter.java       | 16 ++++------------
 2 files changed, 7 insertions(+), 16 deletions(-)

diff --git a/extensions/opentelemetry/deployment/src/main/java/io/quarkus/opentelemetry/deployment/tracing/instrumentation/InstrumentationProcessor.java b/extensions/opentelemetry/deployment/src/main/java/io/quarkus/opentelemetry/deployment/tracing/instrumentation/InstrumentationProcessor.java
index 6b9e7b16e4623..37ebf13a31581 100644
--- a/extensions/opentelemetry/deployment/src/main/java/io/quarkus/opentelemetry/deployment/tracing/instrumentation/InstrumentationProcessor.java
+++ b/extensions/opentelemetry/deployment/src/main/java/io/quarkus/opentelemetry/deployment/tracing/instrumentation/InstrumentationProcessor.java
@@ -29,7 +29,7 @@
 import io.quarkus.opentelemetry.runtime.tracing.intrumentation.resteasy.OpenTelemetryClassicServerFilter;
 import io.quarkus.opentelemetry.runtime.tracing.intrumentation.resteasy.OpenTelemetryReactiveServerFilter;
 import io.quarkus.resteasy.common.spi.ResteasyJaxrsProviderBuildItem;
-import io.quarkus.resteasy.reactive.spi.ContainerRequestFilterBuildItem;
+import io.quarkus.resteasy.reactive.spi.CustomContainerRequestFilterBuildItem;
 import io.quarkus.runtime.LaunchMode;
 import io.quarkus.vertx.core.deployment.VertxOptionsConsumerBuildItem;
 import io.vertx.core.VertxOptions;
@@ -136,7 +136,7 @@ void registerResteasyClassicAndOrResteasyReactiveProvider(
     @BuildStep
     void registerResteasyReactiveProvider(
             Capabilities capabilities,
-            BuildProducer<ContainerRequestFilterBuildItem> containerRequestFilterBuildItemBuildProducer) {
+            BuildProducer<CustomContainerRequestFilterBuildItem> containerRequestFilterBuildItemBuildProducer) {
 
         boolean isResteasyReactiveAvailable = capabilities.isPresent(Capability.RESTEASY_REACTIVE);
 
@@ -146,8 +146,7 @@ void registerResteasyReactiveProvider(
         }
 
         containerRequestFilterBuildItemBuildProducer
-                .produce(new ContainerRequestFilterBuildItem.Builder(OpenTelemetryReactiveServerFilter.class.getName())
-                        .build());
+                .produce(new CustomContainerRequestFilterBuildItem(OpenTelemetryReactiveServerFilter.class.getName()));
     }
 
 }
diff --git a/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/intrumentation/resteasy/OpenTelemetryReactiveServerFilter.java b/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/intrumentation/resteasy/OpenTelemetryReactiveServerFilter.java
index e21cd90ded953..ddf382a32f648 100644
--- a/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/intrumentation/resteasy/OpenTelemetryReactiveServerFilter.java
+++ b/extensions/opentelemetry/runtime/src/main/java/io/quarkus/opentelemetry/runtime/tracing/intrumentation/resteasy/OpenTelemetryReactiveServerFilter.java
@@ -2,11 +2,7 @@
 
 import java.io.IOException;
 
-import jakarta.ws.rs.container.ContainerRequestContext;
-import jakarta.ws.rs.container.ContainerRequestFilter;
-import jakarta.ws.rs.core.Context;
-import jakarta.ws.rs.ext.Provider;
-
+import org.jboss.resteasy.reactive.server.ServerRequestFilter;
 import org.jboss.resteasy.reactive.server.SimpleResourceInfo;
 
 import io.opentelemetry.api.trace.Span;
@@ -16,14 +12,10 @@
 /**
  * Handles RESTEasy Reactive (via Vert.x)
  */
-@Provider
-public class OpenTelemetryReactiveServerFilter implements ContainerRequestFilter {
-
-    @Context
-    SimpleResourceInfo resourceInfo;
+public class OpenTelemetryReactiveServerFilter {
 
-    @Override
-    public void filter(ContainerRequestContext requestContext) throws IOException {
+    @ServerRequestFilter
+    public void filter(SimpleResourceInfo resourceInfo) throws IOException {
         Span localRootSpan = LocalRootSpan.current();
 
         localRootSpan.setAttribute(SemanticAttributes.CODE_NAMESPACE, resourceInfo.getResourceClass().getName());