diff --git a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/logs/OtlpStdoutLogRecordExporterComponentProvider.java b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/logs/OtlpStdoutLogRecordExporterComponentProvider.java
index ee6fbfe66ba..3feebf33811 100644
--- a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/logs/OtlpStdoutLogRecordExporterComponentProvider.java
+++ b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/logs/OtlpStdoutLogRecordExporterComponentProvider.java
@@ -16,8 +16,7 @@
*
This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public final class OtlpStdoutLogRecordExporterComponentProvider
- implements ComponentProvider {
+public final class OtlpStdoutLogRecordExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/metrics/OtlpStdoutMetricExporterComponentProvider.java b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/metrics/OtlpStdoutMetricExporterComponentProvider.java
index 70de404af14..bf8d8a73be9 100644
--- a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/metrics/OtlpStdoutMetricExporterComponentProvider.java
+++ b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/metrics/OtlpStdoutMetricExporterComponentProvider.java
@@ -16,8 +16,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public final class OtlpStdoutMetricExporterComponentProvider
- implements ComponentProvider {
+public final class OtlpStdoutMetricExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/traces/OtlpStdoutSpanExporterComponentProvider.java b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/traces/OtlpStdoutSpanExporterComponentProvider.java
index e16ac868e3b..969b804f863 100644
--- a/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/traces/OtlpStdoutSpanExporterComponentProvider.java
+++ b/exporters/logging-otlp/src/main/java/io/opentelemetry/exporter/logging/otlp/internal/traces/OtlpStdoutSpanExporterComponentProvider.java
@@ -16,8 +16,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public final class OtlpStdoutSpanExporterComponentProvider
- implements ComponentProvider {
+public final class OtlpStdoutSpanExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/AbstractOtlpStdoutExporterTest.java b/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/AbstractOtlpStdoutExporterTest.java
index 44b046aca42..a7313d2ded8 100644
--- a/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/AbstractOtlpStdoutExporterTest.java
+++ b/exporters/logging-otlp/src/test/java/io/opentelemetry/exporter/logging/otlp/AbstractOtlpStdoutExporterTest.java
@@ -333,9 +333,8 @@ protected T exporterFromComponentProvider(DeclarativeConfigProperties properties
properties.getComponentLoader().load(ComponentProvider.class).spliterator(), false)
.filter(
p -> {
- ComponentProvider> c = p;
- return "otlp_file/development".equals(c.getName())
- && c.getType().equals(componentProviderType);
+ return "otlp_file/development".equals(p.getName())
+ && p.getType().equals(componentProviderType);
})
.findFirst()
.orElseThrow(() -> new IllegalStateException("No provider found"))
diff --git a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleLogRecordExporterComponentProvider.java b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleLogRecordExporterComponentProvider.java
index 2d8141cc4f2..1ff39c6de30 100644
--- a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleLogRecordExporterComponentProvider.java
+++ b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleLogRecordExporterComponentProvider.java
@@ -16,8 +16,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public final class ConsoleLogRecordExporterComponentProvider
- implements ComponentProvider {
+public final class ConsoleLogRecordExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleMetricExporterComponentProvider.java b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleMetricExporterComponentProvider.java
index 6fab453403f..35599f84c14 100644
--- a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleMetricExporterComponentProvider.java
+++ b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleMetricExporterComponentProvider.java
@@ -16,8 +16,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public final class ConsoleMetricExporterComponentProvider
- implements ComponentProvider {
+public final class ConsoleMetricExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleSpanExporterComponentProvider.java b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleSpanExporterComponentProvider.java
index fd65a5acad8..fa5de9ee948 100644
--- a/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleSpanExporterComponentProvider.java
+++ b/exporters/logging/src/main/java/io/opentelemetry/exporter/logging/internal/ConsoleSpanExporterComponentProvider.java
@@ -16,7 +16,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public final class ConsoleSpanExporterComponentProvider implements ComponentProvider {
+public final class ConsoleSpanExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java
index f8faab7a00a..6afb9a601cd 100644
--- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java
+++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcLogRecordExporterComponentProvider.java
@@ -19,8 +19,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public class OtlpGrpcLogRecordExporterComponentProvider
- implements ComponentProvider {
+public class OtlpGrpcLogRecordExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java
index 25f8341fb07..cf8107f8499 100644
--- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java
+++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcMetricExporterComponentProvider.java
@@ -20,7 +20,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public class OtlpGrpcMetricExporterComponentProvider implements ComponentProvider {
+public class OtlpGrpcMetricExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java
index 84e230ca515..17995efb946 100644
--- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java
+++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpGrpcSpanExporterComponentProvider.java
@@ -19,7 +19,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public class OtlpGrpcSpanExporterComponentProvider implements ComponentProvider {
+public class OtlpGrpcSpanExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java
index e6a513e8982..a2850b254ca 100644
--- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java
+++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpLogRecordExporterComponentProvider.java
@@ -19,8 +19,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public class OtlpHttpLogRecordExporterComponentProvider
- implements ComponentProvider {
+public class OtlpHttpLogRecordExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java
index d6cc1bf62d1..0b59ee9380a 100644
--- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java
+++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpMetricExporterComponentProvider.java
@@ -20,7 +20,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public class OtlpHttpMetricExporterComponentProvider implements ComponentProvider {
+public class OtlpHttpMetricExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java
index 752e9698dcf..d97b2e30628 100644
--- a/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java
+++ b/exporters/otlp/all/src/main/java/io/opentelemetry/exporter/otlp/internal/OtlpHttpSpanExporterComponentProvider.java
@@ -19,7 +19,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public class OtlpHttpSpanExporterComponentProvider implements ComponentProvider {
+public class OtlpHttpSpanExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/internal/PrometheusComponentProvider.java b/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/internal/PrometheusComponentProvider.java
index 37aa7f9a7be..9968c279536 100644
--- a/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/internal/PrometheusComponentProvider.java
+++ b/exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/internal/PrometheusComponentProvider.java
@@ -19,7 +19,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public class PrometheusComponentProvider implements ComponentProvider {
+public class PrometheusComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/exporters/zipkin/src/main/java/io/opentelemetry/exporter/zipkin/internal/ZipkinSpanExporterComponentProvider.java b/exporters/zipkin/src/main/java/io/opentelemetry/exporter/zipkin/internal/ZipkinSpanExporterComponentProvider.java
index 42c43eef14a..ec2d1624479 100644
--- a/exporters/zipkin/src/main/java/io/opentelemetry/exporter/zipkin/internal/ZipkinSpanExporterComponentProvider.java
+++ b/exporters/zipkin/src/main/java/io/opentelemetry/exporter/zipkin/internal/ZipkinSpanExporterComponentProvider.java
@@ -18,7 +18,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public class ZipkinSpanExporterComponentProvider implements ComponentProvider {
+public class ZipkinSpanExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return SpanExporter.class;
diff --git a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3ComponentProvider.java b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3ComponentProvider.java
index ebd766640f9..1a0d9e27d6d 100644
--- a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3ComponentProvider.java
+++ b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3ComponentProvider.java
@@ -17,7 +17,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public final class B3ComponentProvider implements ComponentProvider {
+public final class B3ComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3MultiComponentProvider.java b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3MultiComponentProvider.java
index 0fb223d81a7..9ae7c23d451 100644
--- a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3MultiComponentProvider.java
+++ b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/B3MultiComponentProvider.java
@@ -17,7 +17,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public final class B3MultiComponentProvider implements ComponentProvider {
+public final class B3MultiComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/JaegerComponentProvider.java b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/JaegerComponentProvider.java
index 1326dd4cc83..28b8c4acf54 100644
--- a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/JaegerComponentProvider.java
+++ b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/JaegerComponentProvider.java
@@ -16,7 +16,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public final class JaegerComponentProvider implements ComponentProvider {
+public final class JaegerComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/OtTraceComponentProvider.java b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/OtTraceComponentProvider.java
index 261eb5f8585..17303541fab 100644
--- a/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/OtTraceComponentProvider.java
+++ b/extensions/trace-propagators/src/main/java/io/opentelemetry/extension/trace/propagation/internal/OtTraceComponentProvider.java
@@ -17,7 +17,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public final class OtTraceComponentProvider implements ComponentProvider {
+public final class OtTraceComponentProvider implements ComponentProvider {
@Override
public Class getType() {
diff --git a/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ComponentProvider.java b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ComponentProvider.java
index 5772a0a1797..30a544887c6 100644
--- a/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ComponentProvider.java
+++ b/sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ComponentProvider.java
@@ -27,18 +27,17 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*
- * @param the type of the SDK extension component. See {@link #getType()}. Supported values
- * include: {@link SpanExporter}, {@link MetricExporter}, {@link LogRecordExporter}, {@link
- * SpanProcessor}, {@link LogRecordProcessor}, {@link TextMapPropagator}, {@link Sampler},
- * {@link Resource}.
+ * Supported component types include: {@link SpanExporter}, {@link MetricExporter}, {@link
+ * LogRecordExporter}, {@link SpanProcessor}, {@link LogRecordProcessor}, {@link TextMapPropagator},
+ * {@link Sampler}, {@link Resource}.
*/
-public interface ComponentProvider {
+public interface ComponentProvider {
/**
* The type of SDK extension component. For example, if providing instances of a custom span
* exporter, the type would be {@link SpanExporter}.
*/
- Class getType();
+ Class> getType();
/**
* The name of the exporter, to be referenced in configuration files. For example, if providing
@@ -59,5 +58,5 @@ public interface ComponentProvider {
*/
// TODO (jack-berg): consider dynamic configuration use case before stabilizing in case that
// affects any API decisions
- T create(DeclarativeConfigProperties config);
+ Object create(DeclarativeConfigProperties config);
}
diff --git a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/TestResourceDetector.java b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/TestResourceDetector.java
index 65cdf2df576..a9c0bd22662 100644
--- a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/TestResourceDetector.java
+++ b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/TestResourceDetector.java
@@ -11,7 +11,7 @@
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.resources.Resource;
-public class TestResourceDetector implements ComponentProvider, AutoConfigureListener {
+public class TestResourceDetector implements ComponentProvider, AutoConfigureListener {
@SuppressWarnings("NonFinalStaticField")
static boolean initialized = false;
diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigContext.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigContext.java
index a53eb1d13c5..e93d85c3604 100644
--- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigContext.java
+++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigContext.java
@@ -16,7 +16,6 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
@@ -90,11 +89,8 @@ T loadComponent(Class type, String name, Object model) {
// TODO(jack-berg): cache loaded component providers
List componentProviders = spiHelper.load(ComponentProvider.class);
- List> matchedProviders =
+ List matchedProviders =
componentProviders.stream()
- .map(
- (Function>)
- componentProvider -> componentProvider)
.filter(
componentProvider ->
componentProvider.getType() == type && name.equals(componentProvider.getName()))
@@ -115,10 +111,22 @@ T loadComponent(Class type, String name, Object model) {
.collect(Collectors.joining(",", "[", "]")));
}
// Exactly one matching component provider
- ComponentProvider provider = (ComponentProvider) matchedProviders.get(0);
+ ComponentProvider provider = matchedProviders.get(0);
try {
- return provider.create(config);
+ Object component = provider.create(config);
+ if (component != null && !type.isInstance(component)) {
+ throw new DeclarativeConfigException(
+ "Error configuring "
+ + type.getName()
+ + " with name \""
+ + name
+ + "\". Component provider "
+ + provider.getClass().getName()
+ + " returned an unexpected component type: "
+ + component.getClass().getName());
+ }
+ return (T) component;
} catch (Throwable throwable) {
throw new DeclarativeConfigException(
"Error configuring " + type.getName() + " with name \"" + name + "\"", throwable);
diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ServiceResourceDetector.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ServiceResourceDetector.java
index dcaeeee2718..2bd59f046e9 100644
--- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ServiceResourceDetector.java
+++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ServiceResourceDetector.java
@@ -15,7 +15,7 @@
import java.util.Collections;
import java.util.UUID;
-public class ServiceResourceDetector implements ComponentProvider {
+public class ServiceResourceDetector implements ComponentProvider {
private static final AttributeKey SERVICE_NAME = AttributeKey.stringKey("service.name");
private static final AttributeKey SERVICE_INSTANCE_ID =
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/CapturingComponentLoader.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/CapturingComponentLoader.java
new file mode 100644
index 00000000000..ee99e1e1517
--- /dev/null
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/CapturingComponentLoader.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright The OpenTelemetry Authors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package io.opentelemetry.sdk.extension.incubator.fileconfig;
+
+import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
+import io.opentelemetry.common.ComponentLoader;
+import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * A test utility that captures the configuration passed to component providers during loading. This
+ * allows tests to verify that component providers receive the expected configuration.
+ */
+class CapturingComponentLoader implements ComponentLoader {
+
+ private final ComponentLoader delegate;
+ private final Map capturedConfigs =
+ new ConcurrentHashMap<>();
+
+ CapturingComponentLoader() {
+ delegate = ComponentLoader.forClassLoader(getClass().getClassLoader());
+ }
+
+ DeclarativeConfigProperties getCapturedConfig(String name) {
+ return capturedConfigs.get(name);
+ }
+
+ @Override
+ public Iterable load(Class spiClass) {
+ if (spiClass == ComponentProvider.class) {
+ return createWrappedComponentProviders();
+ }
+ return delegate.load(spiClass);
+ }
+
+ @SuppressWarnings("unchecked")
+ private Iterable createWrappedComponentProviders() {
+ List wrappedProviders = new ArrayList<>();
+ for (ComponentProvider provider : delegate.load(ComponentProvider.class)) {
+ ComponentProvider wrapped = new CapturingComponentProvider(provider);
+ wrappedProviders.add((T) wrapped);
+ }
+ return wrappedProviders;
+ }
+
+ private class CapturingComponentProvider implements ComponentProvider {
+
+ private final ComponentProvider delegate;
+
+ CapturingComponentProvider(ComponentProvider delegate) {
+ this.delegate = delegate;
+ }
+
+ @Override
+ public Class> getType() {
+ return delegate.getType();
+ }
+
+ @Override
+ public String getName() {
+ return delegate.getName();
+ }
+
+ @Override
+ public Object create(DeclarativeConfigProperties config) {
+ capturedConfigs.put(getName(), config);
+ return delegate.create(config);
+ }
+ }
+}
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordExporterFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordExporterFactoryTest.java
index d1964c15de3..054e2c312d1 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordExporterFactoryTest.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordExporterFactoryTest.java
@@ -8,9 +8,6 @@
import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigTestUtil.createTempFileWithContent;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableMap;
import com.linecorp.armeria.testing.junit5.server.SelfSignedCertificateExtension;
@@ -21,7 +18,6 @@
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter;
import io.opentelemetry.internal.testing.CleanupExtension;
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
-import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.extension.incubator.fileconfig.component.LogRecordExporterComponentProvider;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalOtlpFileExporterModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordExporterModel;
@@ -36,22 +32,12 @@
import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
-import java.util.stream.Collectors;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.api.io.TempDir;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mockito;
-import org.mockito.junit.jupiter.MockitoExtension;
-import org.mockito.junit.jupiter.MockitoSettings;
-import org.mockito.quality.Strictness;
-
-@ExtendWith(MockitoExtension.class)
-@MockitoSettings(strictness = Strictness.LENIENT)
+
class LogRecordExporterFactoryTest {
@RegisterExtension
@@ -62,39 +48,24 @@ class LogRecordExporterFactoryTest {
@RegisterExtension CleanupExtension cleanup = new CleanupExtension();
- private final SpiHelper spiHelper =
- spy(SpiHelper.create(SpanExporterFactoryTest.class.getClassLoader()));
- private final DeclarativeConfigContext context = new DeclarativeConfigContext(spiHelper);
- private List> loadedComponentProviders = Collections.emptyList();
+ private CapturingComponentLoader capturingComponentLoader;
+ private SpiHelper spiHelper;
+ private DeclarativeConfigContext context;
@BeforeEach
- @SuppressWarnings("unchecked")
void setup() {
- when(spiHelper.load(ComponentProvider.class))
- .thenAnswer(
- invocation -> {
- List> result =
- (List>) invocation.callRealMethod();
- loadedComponentProviders =
- result.stream().map(Mockito::spy).collect(Collectors.toList());
- return loadedComponentProviders;
- });
- }
-
- private ComponentProvider> getComponentProvider(String name, Class> type) {
- return loadedComponentProviders.stream()
- .filter(
- componentProvider ->
- componentProvider.getName().equals(name)
- && componentProvider.getType().equals(type))
- .findFirst()
- .orElseThrow(IllegalStateException::new);
+ capturingComponentLoader = new CapturingComponentLoader();
+ spiHelper = SpiHelper.create(capturingComponentLoader);
+ context = new DeclarativeConfigContext(spiHelper);
}
@Test
void create_OtlpHttpDefaults() {
List closeables = new ArrayList<>();
- OtlpHttpLogRecordExporter expectedExporter = OtlpHttpLogRecordExporter.getDefault();
+ OtlpHttpLogRecordExporter expectedExporter =
+ OtlpHttpLogRecordExporter.getDefault().toBuilder()
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
+ .build();
cleanup.addCloseable(expectedExporter);
LogRecordExporter exporter =
@@ -106,14 +77,10 @@ void create_OtlpHttpDefaults() {
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
-
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider =
- getComponentProvider("otlp_http", LogRecordExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_http");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("protocol")).isNull();
assertThat(configProperties.getString("endpoint")).isNull();
assertThat(configProperties.getStructured("headers")).isNull();
@@ -135,6 +102,7 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
.addHeader("key2", "value2")
.setTimeout(Duration.ofSeconds(15))
.setCompression("gzip")
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
.build();
cleanup.addCloseable(expectedExporter);
@@ -174,12 +142,10 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider =
- getComponentProvider("otlp_http", LogRecordExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_http");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("endpoint")).isEqualTo("http://example:4318/v1/logs");
List headers = configProperties.getStructuredList("headers");
assertThat(headers)
@@ -204,7 +170,10 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
@Test
void create_OtlpGrpcDefaults() {
List closeables = new ArrayList<>();
- OtlpGrpcLogRecordExporter expectedExporter = OtlpGrpcLogRecordExporter.getDefault();
+ OtlpGrpcLogRecordExporter expectedExporter =
+ OtlpGrpcLogRecordExporter.getDefault().toBuilder()
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
+ .build();
cleanup.addCloseable(expectedExporter);
LogRecordExporter exporter =
@@ -216,14 +185,10 @@ void create_OtlpGrpcDefaults() {
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
-
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider =
- getComponentProvider("otlp_grpc", LogRecordExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_grpc");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("endpoint")).isNull();
assertThat(configProperties.getStructured("headers")).isNull();
assertThat(configProperties.getString("compression")).isNull();
@@ -244,6 +209,7 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir)
.addHeader("key2", "value2")
.setTimeout(Duration.ofSeconds(15))
.setCompression("gzip")
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
.build();
cleanup.addCloseable(expectedExporter);
@@ -283,12 +249,10 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir)
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider =
- getComponentProvider("otlp_grpc", LogRecordExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_grpc");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("endpoint")).isEqualTo("http://example:4317");
List headers = configProperties.getStructuredList("headers");
assertThat(headers)
@@ -327,11 +291,10 @@ void create_OtlpFile() {
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider =
- getComponentProvider("otlp_file/development", LogRecordExporter.class);
- verify(componentProvider).create(configCaptor.capture());
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_file/development");
+ assertThat(configProperties).isNotNull();
}
@Test
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricExporterFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricExporterFactoryTest.java
index d5aa856877d..5fe2da41942 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricExporterFactoryTest.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricExporterFactoryTest.java
@@ -8,9 +8,6 @@
import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigTestUtil.createTempFileWithContent;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableMap;
import com.linecorp.armeria.testing.junit5.server.SelfSignedCertificateExtension;
@@ -22,7 +19,6 @@
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
import io.opentelemetry.internal.testing.CleanupExtension;
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
-import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.extension.incubator.fileconfig.component.MetricExporterComponentProvider;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ConsoleExporterModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalOtlpFileMetricExporterModel;
@@ -42,22 +38,12 @@
import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
-import java.util.stream.Collectors;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.api.io.TempDir;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mockito;
-import org.mockito.junit.jupiter.MockitoExtension;
-import org.mockito.junit.jupiter.MockitoSettings;
-import org.mockito.quality.Strictness;
-
-@ExtendWith(MockitoExtension.class)
-@MockitoSettings(strictness = Strictness.LENIENT)
+
class MetricExporterFactoryTest {
@RegisterExtension
@@ -68,39 +54,24 @@ class MetricExporterFactoryTest {
@RegisterExtension CleanupExtension cleanup = new CleanupExtension();
- private final SpiHelper spiHelper =
- spy(SpiHelper.create(SpanExporterFactoryTest.class.getClassLoader()));
- private final DeclarativeConfigContext context = new DeclarativeConfigContext(spiHelper);
- private List> loadedComponentProviders = Collections.emptyList();
+ private CapturingComponentLoader capturingComponentLoader;
+ private SpiHelper spiHelper;
+ private DeclarativeConfigContext context;
@BeforeEach
- @SuppressWarnings("unchecked")
void setup() {
- when(spiHelper.load(ComponentProvider.class))
- .thenAnswer(
- invocation -> {
- List> result =
- (List>) invocation.callRealMethod();
- loadedComponentProviders =
- result.stream().map(Mockito::spy).collect(Collectors.toList());
- return loadedComponentProviders;
- });
- }
-
- private ComponentProvider> getComponentProvider(String name, Class> type) {
- return loadedComponentProviders.stream()
- .filter(
- componentProvider ->
- componentProvider.getName().equals(name)
- && componentProvider.getType().equals(type))
- .findFirst()
- .orElseThrow(IllegalStateException::new);
+ capturingComponentLoader = new CapturingComponentLoader();
+ spiHelper = SpiHelper.create(capturingComponentLoader);
+ context = new DeclarativeConfigContext(spiHelper);
}
@Test
void create_OtlpHttpDefaults() {
List closeables = new ArrayList<>();
- OtlpHttpMetricExporter expectedExporter = OtlpHttpMetricExporter.getDefault();
+ OtlpHttpMetricExporter expectedExporter =
+ OtlpHttpMetricExporter.getDefault().toBuilder()
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
+ .build();
cleanup.addCloseable(expectedExporter);
MetricExporter exporter =
@@ -113,12 +84,10 @@ void create_OtlpHttpDefaults() {
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider =
- getComponentProvider("otlp_http", MetricExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_http");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("protocol")).isNull();
assertThat(configProperties.getString("endpoint")).isNull();
assertThat(configProperties.getStructured("headers")).isNull();
@@ -146,6 +115,7 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
.setDefaultAggregationSelector(
DefaultAggregationSelector.getDefault()
.with(InstrumentType.HISTOGRAM, Aggregation.base2ExponentialBucketHistogram()))
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
.build();
cleanup.addCloseable(expectedExporter);
@@ -190,12 +160,10 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider =
- getComponentProvider("otlp_http", MetricExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_http");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("endpoint")).isEqualTo("http://example:4318/v1/metrics");
List headers = configProperties.getStructuredList("headers");
assertThat(headers)
@@ -223,7 +191,10 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
@Test
void create_OtlpGrpcDefaults() {
List closeables = new ArrayList<>();
- OtlpGrpcMetricExporter expectedExporter = OtlpGrpcMetricExporter.getDefault();
+ OtlpGrpcMetricExporter expectedExporter =
+ OtlpGrpcMetricExporter.getDefault().toBuilder()
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
+ .build();
cleanup.addCloseable(expectedExporter);
MetricExporter exporter =
@@ -236,12 +207,10 @@ void create_OtlpGrpcDefaults() {
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider =
- getComponentProvider("otlp_grpc", MetricExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_grpc");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("endpoint")).isNull();
assertThat(configProperties.getStructured("headers")).isNull();
assertThat(configProperties.getString("compression")).isNull();
@@ -268,6 +237,7 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir)
.setDefaultAggregationSelector(
DefaultAggregationSelector.getDefault()
.with(InstrumentType.HISTOGRAM, Aggregation.base2ExponentialBucketHistogram()))
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
.build();
cleanup.addCloseable(expectedExporter);
@@ -312,12 +282,10 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir)
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider =
- getComponentProvider("otlp_grpc", MetricExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_grpc");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("endpoint")).isEqualTo("http://example:4317");
List headers = configProperties.getStructuredList("headers");
assertThat(headers)
@@ -374,11 +342,10 @@ void create_OtlpFile() {
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider =
- getComponentProvider("otlp_file/development", MetricExporter.class);
- verify(componentProvider).create(configCaptor.capture());
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_file/development");
+ assertThat(configProperties).isNotNull();
}
@Test
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanExporterFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanExporterFactoryTest.java
index 3bcd13c9731..2896cc55bd3 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanExporterFactoryTest.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanExporterFactoryTest.java
@@ -8,9 +8,6 @@
import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigTestUtil.createTempFileWithContent;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableMap;
import com.linecorp.armeria.testing.junit5.server.SelfSignedCertificateExtension;
@@ -23,7 +20,6 @@
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter;
import io.opentelemetry.internal.testing.CleanupExtension;
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
-import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.extension.incubator.fileconfig.component.SpanExporterComponentProvider;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ConsoleExporterModel;
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalOtlpFileExporterModel;
@@ -40,22 +36,12 @@
import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
-import java.util.stream.Collectors;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.api.io.TempDir;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mockito;
-import org.mockito.junit.jupiter.MockitoExtension;
-import org.mockito.junit.jupiter.MockitoSettings;
-import org.mockito.quality.Strictness;
-
-@ExtendWith(MockitoExtension.class)
-@MockitoSettings(strictness = Strictness.LENIENT)
+
class SpanExporterFactoryTest {
@RegisterExtension
@@ -66,39 +52,24 @@ class SpanExporterFactoryTest {
@RegisterExtension CleanupExtension cleanup = new CleanupExtension();
- private final SpiHelper spiHelper =
- spy(SpiHelper.create(SpanExporterFactoryTest.class.getClassLoader()));
- private final DeclarativeConfigContext context = new DeclarativeConfigContext(spiHelper);
- private List> loadedComponentProviders = Collections.emptyList();
+ private CapturingComponentLoader capturingComponentLoader;
+ private SpiHelper spiHelper;
+ private DeclarativeConfigContext context;
@BeforeEach
- @SuppressWarnings("unchecked")
void setup() {
- when(spiHelper.load(ComponentProvider.class))
- .thenAnswer(
- invocation -> {
- List> result =
- (List>) invocation.callRealMethod();
- loadedComponentProviders =
- result.stream().map(Mockito::spy).collect(Collectors.toList());
- return loadedComponentProviders;
- });
- }
-
- private ComponentProvider> getComponentProvider(String name, Class> type) {
- return loadedComponentProviders.stream()
- .filter(
- componentProvider ->
- componentProvider.getName().equals(name)
- && componentProvider.getType().equals(type))
- .findFirst()
- .orElseThrow(IllegalStateException::new);
+ capturingComponentLoader = new CapturingComponentLoader();
+ spiHelper = SpiHelper.create(capturingComponentLoader);
+ context = new DeclarativeConfigContext(spiHelper);
}
@Test
void create_OtlpHttpDefaults() {
List closeables = new ArrayList<>();
- OtlpHttpSpanExporter expectedExporter = OtlpHttpSpanExporter.getDefault();
+ OtlpHttpSpanExporter expectedExporter =
+ OtlpHttpSpanExporter.getDefault().toBuilder()
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
+ .build();
cleanup.addCloseable(expectedExporter);
SpanExporter exporter =
@@ -109,11 +80,10 @@ void create_OtlpHttpDefaults() {
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider = getComponentProvider("otlp_http", SpanExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_http");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("protocol")).isNull();
assertThat(configProperties.getString("endpoint")).isNull();
assertThat(configProperties.getStructured("headers")).isNull();
@@ -135,6 +105,7 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
.addHeader("key2", "value2")
.setTimeout(Duration.ofSeconds(15))
.setCompression("gzip")
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
.build();
cleanup.addCloseable(expectedExporter);
@@ -174,11 +145,10 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider = getComponentProvider("otlp_http", SpanExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_http");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("endpoint")).isEqualTo("http://example:4318/v1/traces");
List headers = configProperties.getStructuredList("headers");
assertThat(headers)
@@ -203,7 +173,10 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir)
@Test
void create_OtlpGrpcDefaults() {
List closeables = new ArrayList<>();
- OtlpGrpcSpanExporter expectedExporter = OtlpGrpcSpanExporter.getDefault();
+ OtlpGrpcSpanExporter expectedExporter =
+ OtlpGrpcSpanExporter.getDefault().toBuilder()
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
+ .build();
cleanup.addCloseable(expectedExporter);
SpanExporter exporter =
@@ -214,11 +187,10 @@ void create_OtlpGrpcDefaults() {
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider = getComponentProvider("otlp_grpc", SpanExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_grpc");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("endpoint")).isNull();
assertThat(configProperties.getStructured("headers")).isNull();
assertThat(configProperties.getString("compression")).isNull();
@@ -239,6 +211,7 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir)
.addHeader("key2", "value2")
.setTimeout(Duration.ofSeconds(15))
.setCompression("gzip")
+ .setComponentLoader(capturingComponentLoader) // needed for the toString() check to pass
.build();
cleanup.addCloseable(expectedExporter);
@@ -278,11 +251,10 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir)
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider = getComponentProvider("otlp_grpc", SpanExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_grpc");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("endpoint")).isEqualTo("http://example:4317");
List headers = configProperties.getStructuredList("headers");
assertThat(headers)
@@ -334,11 +306,10 @@ void create_ZipkinDefaults() {
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider = getComponentProvider("zipkin", SpanExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("zipkin");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("endpoint")).isNull();
assertThat(configProperties.getLong("timeout")).isNull();
}
@@ -367,11 +338,10 @@ void create_ZipkinConfigured() {
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider = getComponentProvider("zipkin", SpanExporter.class);
- verify(componentProvider).create(configCaptor.capture());
- DeclarativeConfigProperties configProperties = configCaptor.getValue();
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("zipkin");
+ assertThat(configProperties).isNotNull();
assertThat(configProperties.getString("endpoint")).isEqualTo("http://zipkin:9411/v1/v2/spans");
assertThat(configProperties.getLong("timeout")).isEqualTo(15_000);
}
@@ -393,11 +363,10 @@ void create_OtlpFile() {
assertThat(exporter.toString()).isEqualTo(expectedExporter.toString());
- ArgumentCaptor configCaptor =
- ArgumentCaptor.forClass(DeclarativeConfigProperties.class);
- ComponentProvider> componentProvider =
- getComponentProvider("otlp_file/development", SpanExporter.class);
- verify(componentProvider).create(configCaptor.capture());
+ // Verify the configuration passed to the component provider
+ DeclarativeConfigProperties configProperties =
+ capturingComponentLoader.getCapturedConfig("otlp_file/development");
+ assertThat(configProperties).isNotNull();
}
@Test
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ContainerResourceProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ContainerResourceProvider.java
index a5d3a331003..8c56339f578 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ContainerResourceProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ContainerResourceProvider.java
@@ -12,7 +12,7 @@
// TODO(jack-berg): This allows DeclarativeConfigurationCreateTest to pass with kitchen-sink.yaml
// example. Delete after resource providers from opentelemetry-java-instrumentation are renamed to
// reflect declarative config naming
-public class ContainerResourceProvider implements ComponentProvider {
+public class ContainerResourceProvider implements ComponentProvider {
@Override
public Class getType() {
return Resource.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/HostResourceProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/HostResourceProvider.java
index bf8d978d9e6..7bff673457d 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/HostResourceProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/HostResourceProvider.java
@@ -12,7 +12,7 @@
// TODO(jack-berg): This allows DeclarativeConfigurationCreateTest to pass with kitchen-sink.yaml
// example. Delete after resource providers from opentelemetry-java-instrumentation are renamed to
// reflect declarative config naming
-public class HostResourceProvider implements ComponentProvider {
+public class HostResourceProvider implements ComponentProvider {
@Override
public Class getType() {
return Resource.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/LogRecordExporterComponentProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/LogRecordExporterComponentProvider.java
index f21c1d1bf09..cae58c59540 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/LogRecordExporterComponentProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/LogRecordExporterComponentProvider.java
@@ -12,7 +12,7 @@
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
import java.util.Collection;
-public class LogRecordExporterComponentProvider implements ComponentProvider {
+public class LogRecordExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return LogRecordExporter.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/LogRecordProcessorComponentProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/LogRecordProcessorComponentProvider.java
index a44cd939c74..28724787319 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/LogRecordProcessorComponentProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/LogRecordProcessorComponentProvider.java
@@ -12,7 +12,7 @@
import io.opentelemetry.sdk.logs.LogRecordProcessor;
import io.opentelemetry.sdk.logs.ReadWriteLogRecord;
-public class LogRecordProcessorComponentProvider implements ComponentProvider {
+public class LogRecordProcessorComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return LogRecordProcessor.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/MetricExporterComponentProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/MetricExporterComponentProvider.java
index 80ea6b556ce..f0860d2fd48 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/MetricExporterComponentProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/MetricExporterComponentProvider.java
@@ -15,7 +15,7 @@
import io.opentelemetry.sdk.metrics.export.MetricExporter;
import java.util.Collection;
-public class MetricExporterComponentProvider implements ComponentProvider {
+public class MetricExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return MetricExporter.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/OsResourceProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/OsResourceProvider.java
index 04114fe43bb..a8a6801dca6 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/OsResourceProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/OsResourceProvider.java
@@ -12,7 +12,7 @@
// TODO(jack-berg): This allows DeclarativeConfigurationCreateTest to pass with kitchen-sink.yaml
// example. Delete after resource providers from opentelemetry-java-instrumentation are renamed to
// reflect declarative config naming
-public class OsResourceProvider implements ComponentProvider {
+public class OsResourceProvider implements ComponentProvider {
@Override
public Class getType() {
return Resource.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ProcessResourceProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ProcessResourceProvider.java
index 06d02355f34..87718b791ba 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ProcessResourceProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ProcessResourceProvider.java
@@ -12,7 +12,7 @@
// TODO(jack-berg): This allows DeclarativeConfigurationCreateTest to pass with kitchen-sink.yaml
// example. Delete after resource providers from opentelemetry-java-instrumentation are renamed to
// reflect declarative config naming
-public class ProcessResourceProvider implements ComponentProvider {
+public class ProcessResourceProvider implements ComponentProvider {
@Override
public Class getType() {
return Resource.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceComponentProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceComponentProvider.java
index b5c9a6fd7a3..f15d1919917 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceComponentProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceComponentProvider.java
@@ -9,7 +9,7 @@
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.resources.Resource;
-public class ResourceComponentProvider implements ComponentProvider {
+public class ResourceComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return Resource.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceFirstComponentProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceFirstComponentProvider.java
index 32381134e1b..565dc1c4f96 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceFirstComponentProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceFirstComponentProvider.java
@@ -9,7 +9,7 @@
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.resources.Resource;
-public class ResourceFirstComponentProvider implements ComponentProvider {
+public class ResourceFirstComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return Resource.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceSecondComponentProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceSecondComponentProvider.java
index e77c6726717..f512e1e354f 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceSecondComponentProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/ResourceSecondComponentProvider.java
@@ -9,7 +9,7 @@
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
import io.opentelemetry.sdk.resources.Resource;
-public class ResourceSecondComponentProvider implements ComponentProvider {
+public class ResourceSecondComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return Resource.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SamplerComponentProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SamplerComponentProvider.java
index 3264dd91fc7..e48a4a0ceab 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SamplerComponentProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SamplerComponentProvider.java
@@ -15,7 +15,7 @@
import io.opentelemetry.sdk.trace.samplers.SamplingResult;
import java.util.List;
-public class SamplerComponentProvider implements ComponentProvider {
+public class SamplerComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return Sampler.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SpanExporterComponentProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SpanExporterComponentProvider.java
index ddaca3ca4b9..f1068a082b8 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SpanExporterComponentProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SpanExporterComponentProvider.java
@@ -12,7 +12,7 @@
import io.opentelemetry.sdk.trace.export.SpanExporter;
import java.util.Collection;
-public class SpanExporterComponentProvider implements ComponentProvider {
+public class SpanExporterComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return SpanExporter.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SpanProcessorComponentProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SpanProcessorComponentProvider.java
index 3a1ddf9b13a..b42a4795ef6 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SpanProcessorComponentProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/SpanProcessorComponentProvider.java
@@ -13,7 +13,7 @@
import io.opentelemetry.sdk.trace.ReadableSpan;
import io.opentelemetry.sdk.trace.SpanProcessor;
-public class SpanProcessorComponentProvider implements ComponentProvider {
+public class SpanProcessorComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return SpanProcessor.class;
diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/TextMapPropagatorComponentProvider.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/TextMapPropagatorComponentProvider.java
index 9c8e4e5ebbf..e87c64feec1 100644
--- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/TextMapPropagatorComponentProvider.java
+++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/component/TextMapPropagatorComponentProvider.java
@@ -15,7 +15,7 @@
import java.util.Collections;
import javax.annotation.Nullable;
-public class TextMapPropagatorComponentProvider implements ComponentProvider {
+public class TextMapPropagatorComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return TextMapPropagator.class;
diff --git a/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java b/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java
index fd89f42cae9..667a659e91a 100644
--- a/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java
+++ b/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java
@@ -19,7 +19,7 @@
* This class is internal and is hence not for public use. Its APIs are unstable and can change
* at any time.
*/
-public class JaegerRemoteSamplerComponentProvider implements ComponentProvider {
+public class JaegerRemoteSamplerComponentProvider implements ComponentProvider {
@Override
public Class getType() {
return Sampler.class;