|
26 | 26 | import io.quarkus.arc.deployment.AnnotationsTransformerBuildItem;
|
27 | 27 | import io.quarkus.arc.deployment.BeanArchiveIndexBuildItem;
|
28 | 28 | import io.quarkus.arc.deployment.BeanDefiningAnnotationBuildItem;
|
| 29 | +import io.quarkus.arc.deployment.OpenTelemetrySdkBuildItem; |
29 | 30 | import io.quarkus.arc.deployment.ValidationPhaseBuildItem;
|
30 | 31 | import io.quarkus.arc.processor.AnnotationStore;
|
31 | 32 | import io.quarkus.arc.processor.AnnotationsTransformer;
|
@@ -85,6 +86,7 @@ public void build(BuildProducer<AnnotationsTransformerBuildItem> annotationsTran
|
85 | 86 | BuildProducer<ServiceProviderBuildItem> serviceProvider,
|
86 | 87 | BuildProducer<BeanDefiningAnnotationBuildItem> additionalBda,
|
87 | 88 | Optional<MetricsCapabilityBuildItem> metricsCapability,
|
| 89 | + Optional<OpenTelemetrySdkBuildItem> openTelemetrySdk, |
88 | 90 | BuildProducer<SystemPropertyBuildItem> systemProperty,
|
89 | 91 | CombinedIndexBuildItem combinedIndexBuildItem,
|
90 | 92 | BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
|
@@ -177,14 +179,24 @@ public void transform(TransformationContext context) {
|
177 | 179 | SpecCompatibility.class,
|
178 | 180 | Enablement.class);
|
179 | 181 |
|
180 |
| - if (metricsCapability.isEmpty()) { |
181 |
| - builder.addBeanClass("io.smallrye.faulttolerance.metrics.NoopProvider"); |
182 |
| - } else if (metricsCapability.get().metricsSupported(MetricsFactory.MP_METRICS)) { |
| 182 | + int metricsProviders = 0; |
| 183 | + if (metricsCapability.isPresent() && metricsCapability.get().metricsSupported(MetricsFactory.MP_METRICS)) { |
183 | 184 | builder.addBeanClass("io.smallrye.faulttolerance.metrics.MicroProfileMetricsProvider");
|
184 |
| - } else if (metricsCapability.get().metricsSupported(MetricsFactory.MICROMETER)) { |
| 185 | + metricsProviders++; |
| 186 | + } else if (metricsCapability.isPresent() && metricsCapability.get().metricsSupported(MetricsFactory.MICROMETER)) { |
185 | 187 | builder.addBeanClass("io.smallrye.faulttolerance.metrics.MicrometerProvider");
|
| 188 | + metricsProviders++; |
| 189 | + } |
| 190 | + if (openTelemetrySdk.isPresent()) { |
| 191 | + builder.addBeanClass("io.smallrye.faulttolerance.metrics.OpenTelemetryProvider"); |
| 192 | + metricsProviders++; |
| 193 | + } |
| 194 | + |
| 195 | + if (metricsProviders == 0) { |
| 196 | + builder.addBeanClass("io.smallrye.faulttolerance.metrics.NoopProvider"); |
| 197 | + } else if (metricsProviders > 1) { |
| 198 | + builder.addBeanClass("io.smallrye.faulttolerance.metrics.CompoundMetricsProvider"); |
186 | 199 | }
|
187 |
| - // TODO support for OpenTelemetry Metrics -- not present in Quarkus yet |
188 | 200 |
|
189 | 201 | beans.produce(builder.build());
|
190 | 202 |
|
|
0 commit comments