From 1a8baf374fc12a34d2dc1656bf889d8f13ba4100 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Tue, 22 Apr 2025 16:07:21 -0500 Subject: [PATCH] Add DeclarativeConfigContext --- .../fileconfig/AggregationFactory.java | 5 +- .../fileconfig/AttributeListFactory.java | 5 +- .../fileconfig/CardinalityLimitsFactory.java | 5 +- .../fileconfig/DeclarativeConfigContext.java | 91 +++++++++++++++++++ .../fileconfig/DeclarativeConfiguration.java | 7 +- .../incubator/fileconfig/Factory.java | 9 +- .../incubator/fileconfig/FileConfigUtil.java | 78 ---------------- .../fileconfig/InstrumentSelectorFactory.java | 6 +- .../fileconfig/LogLimitsFactory.java | 5 +- .../fileconfig/LogRecordExporterFactory.java | 11 +-- .../fileconfig/LogRecordProcessorFactory.java | 20 ++-- .../fileconfig/LoggerProviderFactory.java | 17 ++-- .../fileconfig/MeterProviderFactory.java | 16 ++-- .../fileconfig/MetricExporterFactory.java | 11 +-- .../fileconfig/MetricReaderFactory.java | 36 +++----- .../OpenTelemetryConfigurationFactory.java | 28 ++---- .../fileconfig/PropagatorFactory.java | 10 +- .../fileconfig/ResourceDetectorFactory.java | 8 +- .../incubator/fileconfig/ResourceFactory.java | 10 +- .../incubator/fileconfig/SamplerFactory.java | 22 ++--- .../fileconfig/SpanExporterFactory.java | 13 +-- .../fileconfig/SpanLimitsFactory.java | 6 +- .../fileconfig/SpanProcessorFactory.java | 21 ++--- .../fileconfig/TextMapPropagatorFactory.java | 25 ++--- .../fileconfig/TracerProviderFactory.java | 18 ++-- .../incubator/fileconfig/ViewFactory.java | 6 +- .../fileconfig/AggregationFactoryTest.java | 4 +- .../fileconfig/AttributeListFactoryTest.java | 6 +- .../CardinalityLimitsFactoryTest.java | 5 +- .../InstrumentSelectorFactoryTest.java | 8 +- .../fileconfig/LogLimitsFactoryTest.java | 6 +- .../LogRecordExporterFactoryTest.java | 24 ++--- .../LogRecordProcessorFactoryTest.java | 27 ++---- .../fileconfig/LoggerProviderFactoryTest.java | 8 +- .../fileconfig/MeterProviderFactoryTest.java | 8 +- .../fileconfig/MetricExporterFactoryTest.java | 27 ++---- .../fileconfig/MetricReaderFactoryTest.java | 38 +++----- ...OpenTelemetryConfigurationFactoryTest.java | 18 ++-- .../fileconfig/PropagatorFactoryTest.java | 12 +-- .../fileconfig/ResourceFactoryTest.java | 14 +-- .../fileconfig/SamplerFactoryTest.java | 11 +-- .../fileconfig/SpanExporterFactoryTest.java | 39 +++----- .../fileconfig/SpanLimitsFactoryTest.java | 24 ++--- .../fileconfig/SpanProcessorFactoryTest.java | 28 ++---- .../fileconfig/TracerProviderFactoryTest.java | 8 +- .../incubator/fileconfig/ViewFactoryTest.java | 8 +- 46 files changed, 310 insertions(+), 502 deletions(-) create mode 100644 sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigContext.java diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AggregationFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AggregationFactory.java index 00f9ecc9397..ca2441f12f9 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AggregationFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AggregationFactory.java @@ -6,12 +6,10 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AggregationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.Base2ExponentialBucketHistogramAggregationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExplicitBucketHistogramAggregationModel; import io.opentelemetry.sdk.metrics.Aggregation; -import java.io.Closeable; import java.util.List; final class AggregationFactory implements Factory { @@ -25,8 +23,7 @@ static AggregationFactory getInstance() { } @Override - public Aggregation create( - AggregationModel model, SpiHelper spiHelper, List closeables) { + public Aggregation create(AggregationModel model, DeclarativeConfigContext context) { if (model.getDrop() != null) { return Aggregation.drop(); } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AttributeListFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AttributeListFactory.java index dc47ae04d28..dbee194edb6 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AttributeListFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AttributeListFactory.java @@ -11,9 +11,7 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.common.AttributesBuilder; import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AttributeNameValueModel; -import java.io.Closeable; import java.util.List; import javax.annotation.Nullable; @@ -28,8 +26,7 @@ static AttributeListFactory getInstance() { } @Override - public Attributes create( - List model, SpiHelper spiHelper, List closeables) { + public Attributes create(List model, DeclarativeConfigContext context) { AttributesBuilder builder = Attributes.builder(); for (AttributeNameValueModel nameValueModel : model) { diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/CardinalityLimitsFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/CardinalityLimitsFactory.java index a88ecaa0bca..136be5f0329 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/CardinalityLimitsFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/CardinalityLimitsFactory.java @@ -5,12 +5,9 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.CardinalityLimitsModel; import io.opentelemetry.sdk.metrics.export.CardinalityLimitSelector; import io.opentelemetry.sdk.metrics.internal.state.MetricStorage; -import java.io.Closeable; -import java.util.List; import javax.annotation.Nullable; final class CardinalityLimitsFactory @@ -26,7 +23,7 @@ static CardinalityLimitsFactory getInstance() { @Override public CardinalityLimitSelector create( - CardinalityLimitsModel model, SpiHelper spiHelper, List closeables) { + CardinalityLimitsModel model, DeclarativeConfigContext context) { int defaultLimit = getOrDefault(model.getDefault(), MetricStorage.DEFAULT_MAX_CARDINALITY); int counterLimit = getOrDefault(model.getCounter(), defaultLimit); int gaugeLimit = getOrDefault(model.getGauge(), defaultLimit); 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 new file mode 100644 index 00000000000..eda0f23d2b7 --- /dev/null +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigContext.java @@ -0,0 +1,91 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.extension.incubator.fileconfig; + +import io.opentelemetry.api.incubator.config.DeclarativeConfigException; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; +import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; +import java.io.Closeable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** Declarative configuration context and state carrier. */ +class DeclarativeConfigContext { + + private final SpiHelper spiHelper; + private final List closeables = new ArrayList<>(); + + DeclarativeConfigContext(SpiHelper spiHelper) { + this.spiHelper = spiHelper; + } + + /** + * Add the {@code closeable} to the list of closeables to clean up if configuration fails + * exceptionally, and return it. + */ + T addCloseable(T closeable) { + closeables.add(closeable); + return closeable; + } + + List getCloseables() { + return Collections.unmodifiableList(closeables); + } + + /** + * Find a registered {@link ComponentProvider} which {@link ComponentProvider#getType()} matching + * {@code type}, {@link ComponentProvider#getName()} matching {@code name}, and call {@link + * ComponentProvider#create(DeclarativeConfigProperties)} with the given {@code model}. + * + * @throws DeclarativeConfigException if no matching providers are found, or if multiple are found + * (i.e. conflict), or if {@link ComponentProvider#create(DeclarativeConfigProperties)} throws + */ + @SuppressWarnings({"unchecked", "rawtypes"}) + T loadComponent(Class type, String name, Object model) { + DeclarativeConfigProperties config = + DeclarativeConfiguration.toConfigProperties(model, spiHelper.getComponentLoader()); + + // TODO(jack-berg): cache loaded component providers + List componentProviders = spiHelper.load(ComponentProvider.class); + List> matchedProviders = + componentProviders.stream() + .map( + (Function>) + componentProvider -> componentProvider) + .filter( + componentProvider -> + componentProvider.getType() == type && name.equals(componentProvider.getName())) + .collect(Collectors.toList()); + if (matchedProviders.isEmpty()) { + throw new DeclarativeConfigException( + "No component provider detected for " + type.getName() + " with name \"" + name + "\"."); + } + if (matchedProviders.size() > 1) { + throw new DeclarativeConfigException( + "Component provider conflict. Multiple providers detected for " + + type.getName() + + " with name \"" + + name + + "\": " + + componentProviders.stream() + .map(provider -> provider.getClass().getName()) + .collect(Collectors.joining(",", "[", "]"))); + } + // Exactly one matching component provider + ComponentProvider provider = (ComponentProvider) matchedProviders.get(0); + + try { + return provider.create(config); + } 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/DeclarativeConfiguration.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfiguration.java index 3788f9e5c77..b672f8e6790 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfiguration.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfiguration.java @@ -21,7 +21,6 @@ import java.io.Closeable; import java.io.IOException; import java.io.InputStream; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -221,12 +220,12 @@ static T convertToModel( } static R createAndMaybeCleanup(Factory factory, SpiHelper spiHelper, M model) { - List closeables = new ArrayList<>(); + DeclarativeConfigContext context = new DeclarativeConfigContext(spiHelper); try { - return factory.create(model, spiHelper, closeables); + return factory.create(model, context); } catch (RuntimeException e) { logger.info("Error encountered interpreting model. Closing partially configured components."); - for (Closeable closeable : closeables) { + for (Closeable closeable : context.getCloseables()) { try { logger.fine("Closing " + closeable.getClass().getName()); closeable.close(); diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/Factory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/Factory.java index c5f5e7c59d3..463939e3de4 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/Factory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/Factory.java @@ -5,19 +5,14 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; -import java.io.Closeable; -import java.util.List; - interface Factory { /** * Interpret the model and create {@link ResultT} with corresponding configuration. * * @param model the configuration model - * @param spiHelper the service loader helper - * @param closeables mutable list of closeables created + * @param context the configuration context * @return the {@link ResultT} */ - ResultT create(ModelT model, SpiHelper spiHelper, List closeables); + ResultT create(ModelT model, DeclarativeConfigContext context); } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/FileConfigUtil.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/FileConfigUtil.java index 967c326c056..1a977a74efc 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/FileConfigUtil.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/FileConfigUtil.java @@ -8,28 +8,13 @@ import static java.util.stream.Collectors.joining; import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; -import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import java.io.Closeable; -import java.util.List; import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; import javax.annotation.Nullable; final class FileConfigUtil { private FileConfigUtil() {} - /** Add the {@code closeable} to the {@code closeables} and return it. */ - static T addAndReturn(List closeables, T closeable) { - if (closeable instanceof Closeable) { - closeables.add((Closeable) closeable); - } - return closeable; - } - static T assertNotNull(@Nullable T object, String description) { if (object == null) { throw new NullPointerException(description + " is null"); @@ -44,69 +29,6 @@ static T requireNonNull(@Nullable T object, String description) { return object; } - /** - * Find a registered {@link ComponentProvider} which {@link ComponentProvider#getType()} matching - * {@code type}, {@link ComponentProvider#getName()} matching {@code name}, and call {@link - * ComponentProvider#create(DeclarativeConfigProperties)} with the given {@code model}. - * - * @throws DeclarativeConfigException if no matching providers are found, or if multiple are found - * (i.e. conflict), or if {@link ComponentProvider#create(DeclarativeConfigProperties)} throws - */ - static T loadComponent(SpiHelper spiHelper, Class type, String name, Object model) { - // Map model to generic structured config properties - DeclarativeConfigProperties config = - DeclarativeConfiguration.toConfigProperties(model, spiHelper.getComponentLoader()); - return loadComponentHelper(spiHelper, type, name, config); - } - - /** - * Find a registered {@link ComponentProvider} with {@link ComponentProvider#getType()} matching - * {@code type}, {@link ComponentProvider#getName()} matching {@code name}, and call {@link - * ComponentProvider#create(DeclarativeConfigProperties)} with the given {@code config}. - * - * @throws DeclarativeConfigException if no matching providers are found, or if multiple are found - * (i.e. conflict), or if {@link ComponentProvider#create(DeclarativeConfigProperties)} throws - */ - @SuppressWarnings({"unchecked", "rawtypes"}) - private static T loadComponentHelper( - SpiHelper spiHelper, Class type, String name, DeclarativeConfigProperties config) { - // TODO(jack-berg): cache loaded component providers - List componentProviders = spiHelper.load(ComponentProvider.class); - List> matchedProviders = - componentProviders.stream() - .map( - (Function>) - componentProvider -> componentProvider) - .filter( - componentProvider -> - componentProvider.getType() == type && name.equals(componentProvider.getName())) - .collect(Collectors.toList()); - if (matchedProviders.isEmpty()) { - throw new DeclarativeConfigException( - "No component provider detected for " + type.getName() + " with name \"" + name + "\"."); - } - if (matchedProviders.size() > 1) { - throw new DeclarativeConfigException( - "Component provider conflict. Multiple providers detected for " - + type.getName() - + " with name \"" - + name - + "\": " - + componentProviders.stream() - .map(provider -> provider.getClass().getName()) - .collect(Collectors.joining(",", "[", "]"))); - } - // Exactly one matching component provider - ComponentProvider provider = (ComponentProvider) matchedProviders.get(0); - - try { - return provider.create(config); - } catch (Throwable throwable) { - throw new DeclarativeConfigException( - "Error configuring " + type.getName() + " with name \"" + name + "\"", throwable); - } - } - static Map.Entry getSingletonMapEntry( Map additionalProperties, String resourceName) { if (additionalProperties.isEmpty()) { diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/InstrumentSelectorFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/InstrumentSelectorFactory.java index e97f53f057c..d7e560f0b86 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/InstrumentSelectorFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/InstrumentSelectorFactory.java @@ -6,13 +6,10 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewSelectorModel; import io.opentelemetry.sdk.metrics.InstrumentSelector; import io.opentelemetry.sdk.metrics.InstrumentSelectorBuilder; import io.opentelemetry.sdk.metrics.InstrumentType; -import java.io.Closeable; -import java.util.List; final class InstrumentSelectorFactory implements Factory { @@ -25,8 +22,7 @@ static InstrumentSelectorFactory getInstance() { } @Override - public InstrumentSelector create( - ViewSelectorModel model, SpiHelper spiHelper, List closeables) { + public InstrumentSelector create(ViewSelectorModel model, DeclarativeConfigContext context) { InstrumentSelectorBuilder builder = InstrumentSelector.builder(); if (model.getInstrumentName() != null) { builder.setName(model.getInstrumentName()); diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogLimitsFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogLimitsFactory.java index a2f4ba2e6c4..a67e5e7c729 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogLimitsFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogLimitsFactory.java @@ -5,13 +5,10 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AttributeLimitsModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordLimitsModel; import io.opentelemetry.sdk.logs.LogLimits; import io.opentelemetry.sdk.logs.LogLimitsBuilder; -import java.io.Closeable; -import java.util.List; final class LogLimitsFactory implements Factory { @@ -25,7 +22,7 @@ static LogLimitsFactory getInstance() { @Override public LogLimits create( - LogRecordLimitsAndAttributeLimits model, SpiHelper spiHelper, List closeables) { + LogRecordLimitsAndAttributeLimits model, DeclarativeConfigContext context) { LogLimitsBuilder builder = LogLimits.builder(); AttributeLimitsModel attributeLimitsModel = model.getAttributeLimits(); diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordExporterFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordExporterFactory.java index f84dd8e94b4..f2c6db8d42d 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordExporterFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordExporterFactory.java @@ -5,11 +5,8 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordExporterModel; import io.opentelemetry.sdk.logs.export.LogRecordExporter; -import java.io.Closeable; -import java.util.List; import java.util.Map; final class LogRecordExporterFactory implements Factory { @@ -23,8 +20,7 @@ static LogRecordExporterFactory getInstance() { } @Override - public LogRecordExporter create( - LogRecordExporterModel model, SpiHelper spiHelper, List closeables) { + public LogRecordExporter create(LogRecordExporterModel model, DeclarativeConfigContext context) { model.getAdditionalProperties().compute("otlp_http", (k, v) -> model.getOtlpHttp()); model.getAdditionalProperties().compute("otlp_grpc", (k, v) -> model.getOtlpGrpc()); @@ -36,8 +32,7 @@ public LogRecordExporter create( Map.Entry keyValue = FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), "log record exporter"); LogRecordExporter logRecordExporter = - FileConfigUtil.loadComponent( - spiHelper, LogRecordExporter.class, keyValue.getKey(), keyValue.getValue()); - return FileConfigUtil.addAndReturn(closeables, logRecordExporter); + context.loadComponent(LogRecordExporter.class, keyValue.getKey(), keyValue.getValue()); + return context.addCloseable(logRecordExporter); } } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordProcessorFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordProcessorFactory.java index 2d2eec6e1fb..20f271a5568 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordProcessorFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordProcessorFactory.java @@ -5,7 +5,6 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.BatchLogRecordProcessorModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordExporterModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordProcessorModel; @@ -15,9 +14,7 @@ import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessorBuilder; import io.opentelemetry.sdk.logs.export.LogRecordExporter; import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor; -import java.io.Closeable; import java.time.Duration; -import java.util.List; import java.util.Map; final class LogRecordProcessorFactory @@ -33,7 +30,7 @@ static LogRecordProcessorFactory getInstance() { @Override public LogRecordProcessor create( - LogRecordProcessorModel model, SpiHelper spiHelper, List closeables) { + LogRecordProcessorModel model, DeclarativeConfigContext context) { BatchLogRecordProcessorModel batchModel = model.getBatch(); if (batchModel != null) { LogRecordExporterModel exporterModel = @@ -41,7 +38,7 @@ public LogRecordProcessor create( batchModel.getExporter(), "batch log record processor exporter"); LogRecordExporter logRecordExporter = - LogRecordExporterFactory.getInstance().create(exporterModel, spiHelper, closeables); + LogRecordExporterFactory.getInstance().create(exporterModel, context); BatchLogRecordProcessorBuilder builder = BatchLogRecordProcessor.builder(logRecordExporter); if (batchModel.getExportTimeout() != null) { builder.setExporterTimeout(Duration.ofMillis(batchModel.getExportTimeout())); @@ -55,7 +52,8 @@ public LogRecordProcessor create( if (batchModel.getScheduleDelay() != null) { builder.setScheduleDelay(Duration.ofMillis(batchModel.getScheduleDelay())); } - return FileConfigUtil.addAndReturn(closeables, builder.build()); + + return context.addCloseable(builder.build()); } SimpleLogRecordProcessorModel simpleModel = model.getSimple(); @@ -64,17 +62,15 @@ public LogRecordProcessor create( FileConfigUtil.requireNonNull( simpleModel.getExporter(), "simple log record processor exporter"); LogRecordExporter logRecordExporter = - LogRecordExporterFactory.getInstance().create(exporterModel, spiHelper, closeables); - return FileConfigUtil.addAndReturn( - closeables, SimpleLogRecordProcessor.create(logRecordExporter)); + LogRecordExporterFactory.getInstance().create(exporterModel, context); + return context.addCloseable(SimpleLogRecordProcessor.create(logRecordExporter)); } Map.Entry keyValue = FileConfigUtil.getSingletonMapEntry( model.getAdditionalProperties(), "log record processor"); LogRecordProcessor logRecordProcessor = - FileConfigUtil.loadComponent( - spiHelper, LogRecordProcessor.class, keyValue.getKey(), keyValue.getValue()); - return FileConfigUtil.addAndReturn(closeables, logRecordProcessor); + context.loadComponent(LogRecordProcessor.class, keyValue.getKey(), keyValue.getValue()); + return context.addCloseable(logRecordProcessor); } } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactory.java index 67c1be31e62..98b06f4700e 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactory.java @@ -7,7 +7,6 @@ import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigUtil.requireNonNull; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerConfigModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerConfiguratorModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerMatcherAndConfigModel; @@ -20,7 +19,6 @@ import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder; import io.opentelemetry.sdk.logs.internal.LoggerConfig; import io.opentelemetry.sdk.logs.internal.SdkLoggerProviderUtil; -import java.io.Closeable; import java.util.List; final class LoggerProviderFactory @@ -36,7 +34,7 @@ static LoggerProviderFactory getInstance() { @Override public SdkLoggerProviderBuilder create( - LoggerProviderAndAttributeLimits model, SpiHelper spiHelper, List closeables) { + LoggerProviderAndAttributeLimits model, DeclarativeConfigContext context) { SdkLoggerProviderBuilder builder = SdkLoggerProvider.builder(); LoggerProviderModel loggerProviderModel = model.getLoggerProvider(); @@ -49,8 +47,7 @@ public SdkLoggerProviderBuilder create( .create( LogRecordLimitsAndAttributeLimits.create( model.getAttributeLimits(), loggerProviderModel.getLimits()), - spiHelper, - closeables); + context); builder.setLogLimits(() -> logLimits); List processors = loggerProviderModel.getProcessors(); @@ -58,8 +55,7 @@ public SdkLoggerProviderBuilder create( processors.forEach( processor -> builder.addLogRecordProcessor( - LogRecordProcessorFactory.getInstance() - .create(processor, spiHelper, closeables))); + LogRecordProcessorFactory.getInstance().create(processor, context))); } ExperimentalLoggerConfiguratorModel loggerConfiguratorModel = @@ -69,7 +65,7 @@ public SdkLoggerProviderBuilder create( ScopeConfiguratorBuilder configuratorBuilder = ScopeConfigurator.builder(); if (defaultConfigModel != null) { configuratorBuilder.setDefault( - LoggerConfigFactory.INSTANCE.create(defaultConfigModel, spiHelper, closeables)); + LoggerConfigFactory.INSTANCE.create(defaultConfigModel, context)); } List loggerMatcherAndConfigs = loggerConfiguratorModel.getLoggers(); @@ -83,8 +79,7 @@ public SdkLoggerProviderBuilder create( } configuratorBuilder.addCondition( ScopeConfiguratorBuilder.nameMatchesGlob(name), - LoggerProviderFactory.LoggerConfigFactory.INSTANCE.create( - config, spiHelper, closeables)); + LoggerProviderFactory.LoggerConfigFactory.INSTANCE.create(config, context)); } } SdkLoggerProviderUtil.setLoggerConfigurator(builder, configuratorBuilder.build()); @@ -101,7 +96,7 @@ private static class LoggerConfigFactory @Override public LoggerConfig create( - ExperimentalLoggerConfigModel model, SpiHelper spiHelper, List closeables) { + ExperimentalLoggerConfigModel model, DeclarativeConfigContext context) { if (model.getDisabled() != null && model.getDisabled()) { return LoggerConfig.disabled(); } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactory.java index 33346a1f900..a19ab7e5c99 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactory.java @@ -7,7 +7,6 @@ import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigUtil.requireNonNull; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalMeterConfigModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalMeterConfiguratorModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalMeterMatcherAndConfigModel; @@ -23,7 +22,6 @@ import io.opentelemetry.sdk.metrics.export.CardinalityLimitSelector; import io.opentelemetry.sdk.metrics.internal.MeterConfig; import io.opentelemetry.sdk.metrics.internal.SdkMeterProviderUtil; -import java.io.Closeable; import java.util.List; final class MeterProviderFactory implements Factory { @@ -38,7 +36,7 @@ static MeterProviderFactory getInstance() { @Override public SdkMeterProviderBuilder create( - MeterProviderModel model, SpiHelper spiHelper, List closeables) { + MeterProviderModel model, DeclarativeConfigContext context) { SdkMeterProviderBuilder builder = SdkMeterProvider.builder(); List readerModels = model.getReaders(); @@ -46,7 +44,7 @@ public SdkMeterProviderBuilder create( readerModels.forEach( readerModel -> { MetricReaderAndCardinalityLimits readerAndCardinalityLimits = - MetricReaderFactory.getInstance().create(readerModel, spiHelper, closeables); + MetricReaderFactory.getInstance().create(readerModel, context); CardinalityLimitSelector cardinalityLimits = readerAndCardinalityLimits.getCardinalityLimitsSelector(); if (cardinalityLimits == null) { @@ -65,8 +63,8 @@ public SdkMeterProviderBuilder create( ViewSelectorModel selector = requireNonNull(viewModel.getSelector(), "view selector"); ViewStreamModel stream = requireNonNull(viewModel.getStream(), "view stream"); builder.registerView( - InstrumentSelectorFactory.getInstance().create(selector, spiHelper, closeables), - ViewFactory.getInstance().create(stream, spiHelper, closeables)); + InstrumentSelectorFactory.getInstance().create(selector, context), + ViewFactory.getInstance().create(stream, context)); }); } @@ -77,7 +75,7 @@ public SdkMeterProviderBuilder create( ScopeConfiguratorBuilder configuratorBuilder = ScopeConfigurator.builder(); if (defaultConfigModel != null) { configuratorBuilder.setDefault( - MeterConfigFactory.INSTANCE.create(defaultConfigModel, spiHelper, closeables)); + MeterConfigFactory.INSTANCE.create(defaultConfigModel, context)); } List meterMatcherAndConfigs = meterConfiguratorModel.getMeters(); @@ -91,7 +89,7 @@ public SdkMeterProviderBuilder create( } configuratorBuilder.addCondition( ScopeConfiguratorBuilder.nameMatchesGlob(name), - MeterConfigFactory.INSTANCE.create(config, spiHelper, closeables)); + MeterConfigFactory.INSTANCE.create(config, context)); } } SdkMeterProviderUtil.setMeterConfigurator(builder, configuratorBuilder.build()); @@ -107,7 +105,7 @@ private static class MeterConfigFactory @Override public MeterConfig create( - ExperimentalMeterConfigModel model, SpiHelper spiHelper, List closeables) { + ExperimentalMeterConfigModel model, DeclarativeConfigContext context) { if (model.getDisabled() != null && model.getDisabled()) { return MeterConfig.disabled(); } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricExporterFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricExporterFactory.java index 542aefbb754..6da48a4fef7 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricExporterFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricExporterFactory.java @@ -5,11 +5,8 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.PushMetricExporterModel; import io.opentelemetry.sdk.metrics.export.MetricExporter; -import java.io.Closeable; -import java.util.List; import java.util.Map; final class MetricExporterFactory implements Factory { @@ -23,8 +20,7 @@ static MetricExporterFactory getInstance() { } @Override - public MetricExporter create( - PushMetricExporterModel model, SpiHelper spiHelper, List closeables) { + public MetricExporter create(PushMetricExporterModel model, DeclarativeConfigContext context) { model.getAdditionalProperties().compute("otlp_http", (k, v) -> model.getOtlpHttp()); model.getAdditionalProperties().compute("otlp_grpc", (k, v) -> model.getOtlpGrpc()); @@ -36,8 +32,7 @@ public MetricExporter create( Map.Entry keyValue = FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), "metric exporter"); MetricExporter metricExporter = - FileConfigUtil.loadComponent( - spiHelper, MetricExporter.class, keyValue.getKey(), keyValue.getValue()); - return FileConfigUtil.addAndReturn(closeables, metricExporter); + context.loadComponent(MetricExporter.class, keyValue.getKey(), keyValue.getValue()); + return context.addCloseable(metricExporter); } } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricReaderFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricReaderFactory.java index c2760a93649..3c24c218eee 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricReaderFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricReaderFactory.java @@ -8,7 +8,6 @@ import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigUtil.requireNonNull; import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalPrometheusMetricExporterModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.MetricReaderModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.PeriodicMetricReaderModel; @@ -20,9 +19,7 @@ import io.opentelemetry.sdk.metrics.export.MetricReader; import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader; import io.opentelemetry.sdk.metrics.export.PeriodicMetricReaderBuilder; -import java.io.Closeable; import java.time.Duration; -import java.util.List; final class MetricReaderFactory implements Factory { @@ -37,15 +34,15 @@ static MetricReaderFactory getInstance() { @Override public MetricReaderAndCardinalityLimits create( - MetricReaderModel model, SpiHelper spiHelper, List closeables) { + MetricReaderModel model, DeclarativeConfigContext context) { PeriodicMetricReaderModel periodicModel = model.getPeriodic(); if (periodicModel != null) { - return PeriodicMetricReaderFactory.INSTANCE.create(periodicModel, spiHelper, closeables); + return PeriodicMetricReaderFactory.INSTANCE.create(periodicModel, context); } PullMetricReaderModel pullModel = model.getPull(); if (pullModel != null) { - return PullMetricReaderFactory.INSTANCE.create(pullModel, spiHelper, closeables); + return PullMetricReaderFactory.INSTANCE.create(pullModel, context); } throw new DeclarativeConfigException("reader must be set"); @@ -60,14 +57,14 @@ private PeriodicMetricReaderFactory() {} @Override public MetricReaderAndCardinalityLimits create( - PeriodicMetricReaderModel model, SpiHelper spiHelper, List closeables) { + PeriodicMetricReaderModel model, DeclarativeConfigContext context) { PushMetricExporterModel exporterModel = requireNonNull(model.getExporter(), "periodic metric reader exporter"); MetricExporter metricExporter = - MetricExporterFactory.getInstance().create(exporterModel, spiHelper, closeables); + MetricExporterFactory.getInstance().create(exporterModel, context); PeriodicMetricReaderBuilder builder = - PeriodicMetricReader.builder(FileConfigUtil.addAndReturn(closeables, metricExporter)); + PeriodicMetricReader.builder(context.addCloseable(metricExporter)); if (model.getInterval() != null) { builder.setInterval(Duration.ofMillis(model.getInterval())); @@ -75,13 +72,11 @@ public MetricReaderAndCardinalityLimits create( CardinalityLimitSelector cardinalityLimitSelector = null; if (model.getCardinalityLimits() != null) { cardinalityLimitSelector = - CardinalityLimitsFactory.getInstance() - .create(model.getCardinalityLimits(), spiHelper, closeables); + CardinalityLimitsFactory.getInstance().create(model.getCardinalityLimits(), context); } - MetricReaderAndCardinalityLimits readerAndCardinalityLimits = - MetricReaderAndCardinalityLimits.create(builder.build(), cardinalityLimitSelector); - return FileConfigUtil.addAndReturn(closeables, readerAndCardinalityLimits); + MetricReader reader = context.addCloseable(builder.build()); + return MetricReaderAndCardinalityLimits.create(reader, cardinalityLimitSelector); } } @@ -94,7 +89,7 @@ private PullMetricReaderFactory() {} @Override public MetricReaderAndCardinalityLimits create( - PullMetricReaderModel model, SpiHelper spiHelper, List closeables) { + PullMetricReaderModel model, DeclarativeConfigContext context) { PullMetricExporterModel exporterModel = requireNonNull(model.getExporter(), "pull metric reader exporter"); @@ -103,18 +98,15 @@ public MetricReaderAndCardinalityLimits create( if (prometheusModel != null) { MetricReader metricReader = - FileConfigUtil.loadComponent( - spiHelper, MetricReader.class, "prometheus", prometheusModel); + context.addCloseable( + context.loadComponent(MetricReader.class, "prometheus", prometheusModel)); CardinalityLimitSelector cardinalityLimitSelector = null; if (model.getCardinalityLimits() != null) { cardinalityLimitSelector = - CardinalityLimitsFactory.getInstance() - .create(model.getCardinalityLimits(), spiHelper, closeables); + CardinalityLimitsFactory.getInstance().create(model.getCardinalityLimits(), context); } - MetricReaderAndCardinalityLimits readerAndCardinalityLimits = - MetricReaderAndCardinalityLimits.create(metricReader, cardinalityLimitSelector); - return FileConfigUtil.addAndReturn(closeables, readerAndCardinalityLimits); + return MetricReaderAndCardinalityLimits.create(metricReader, cardinalityLimitSelector); } throw new DeclarativeConfigException( diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactory.java index 787f5e01263..a64e0b07dec 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactory.java @@ -8,11 +8,8 @@ import io.opentelemetry.api.incubator.config.DeclarativeConfigException; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdkBuilder; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; import io.opentelemetry.sdk.resources.Resource; -import java.io.Closeable; -import java.util.List; import java.util.Objects; final class OpenTelemetryConfigurationFactory @@ -31,7 +28,7 @@ static OpenTelemetryConfigurationFactory getInstance() { @Override public OpenTelemetrySdk create( - OpenTelemetryConfigurationModel model, SpiHelper spiHelper, List closeables) { + OpenTelemetryConfigurationModel model, DeclarativeConfigContext context) { OpenTelemetrySdkBuilder builder = OpenTelemetrySdk.builder(); if (!CURRENT_SUPPORTED_FILE_FORMAT.equals(model.getFileFormat())) { throw new DeclarativeConfigException( @@ -44,52 +41,47 @@ public OpenTelemetrySdk create( if (model.getPropagator() != null) { builder.setPropagators( - PropagatorFactory.getInstance().create(model.getPropagator(), spiHelper, closeables)); + PropagatorFactory.getInstance().create(model.getPropagator(), context)); } Resource resource = Resource.getDefault(); if (model.getResource() != null) { - resource = ResourceFactory.getInstance().create(model.getResource(), spiHelper, closeables); + resource = ResourceFactory.getInstance().create(model.getResource(), context); } if (model.getLoggerProvider() != null) { builder.setLoggerProvider( - FileConfigUtil.addAndReturn( - closeables, + context.addCloseable( LoggerProviderFactory.getInstance() .create( LoggerProviderAndAttributeLimits.create( model.getAttributeLimits(), model.getLoggerProvider()), - spiHelper, - closeables) + context) .setResource(resource) .build())); } if (model.getTracerProvider() != null) { builder.setTracerProvider( - FileConfigUtil.addAndReturn( - closeables, + context.addCloseable( TracerProviderFactory.getInstance() .create( TracerProviderAndAttributeLimits.create( model.getAttributeLimits(), model.getTracerProvider()), - spiHelper, - closeables) + context) .setResource(resource) .build())); } if (model.getMeterProvider() != null) { builder.setMeterProvider( - FileConfigUtil.addAndReturn( - closeables, + context.addCloseable( MeterProviderFactory.getInstance() - .create(model.getMeterProvider(), spiHelper, closeables) + .create(model.getMeterProvider(), context) .setResource(resource) .build())); } - return FileConfigUtil.addAndReturn(closeables, builder.build()); + return context.addCloseable(builder.build()); } } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/PropagatorFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/PropagatorFactory.java index e9d8d18c405..e9f2422f9fd 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/PropagatorFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/PropagatorFactory.java @@ -7,10 +7,8 @@ import io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.PropagatorModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TextMapPropagatorModel; -import java.io.Closeable; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -29,8 +27,7 @@ static PropagatorFactory getInstance() { } @Override - public ContextPropagators create( - PropagatorModel model, SpiHelper spiHelper, List closeables) { + public ContextPropagators create(PropagatorModel model, DeclarativeConfigContext context) { List textMapPropagatorModels = model.getComposite(); Set propagatorNames = new HashSet<>(); List textMapPropagators = new ArrayList<>(); @@ -38,8 +35,7 @@ public ContextPropagators create( textMapPropagatorModels.forEach( textMapPropagatorModel -> { TextMapPropagatorAndName propagatorAndName = - TextMapPropagatorFactory.getInstance() - .create(textMapPropagatorModel, spiHelper, closeables); + TextMapPropagatorFactory.getInstance().create(textMapPropagatorModel, context); textMapPropagators.add(propagatorAndName.getTextMapPropagator()); propagatorNames.add(propagatorAndName.getName()); }); @@ -59,7 +55,7 @@ public ContextPropagators create( // Only add entries which weren't already previously added if (propagatorNames.add(propagatorName)) { textMapPropagators.add( - TextMapPropagatorFactory.getPropagator(spiHelper, propagatorName) + TextMapPropagatorFactory.getPropagator(context, propagatorName) .getTextMapPropagator()); } } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceDetectorFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceDetectorFactory.java index 9f2656b85d0..d16686fb0db 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceDetectorFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceDetectorFactory.java @@ -5,11 +5,8 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalResourceDetectorModel; import io.opentelemetry.sdk.resources.Resource; -import java.io.Closeable; -import java.util.List; import java.util.Map; final class ResourceDetectorFactory @@ -25,10 +22,9 @@ static ResourceDetectorFactory getInstance() { @Override public Resource create( - ExperimentalResourceDetectorModel model, SpiHelper spiHelper, List closeables) { + ExperimentalResourceDetectorModel model, DeclarativeConfigContext context) { Map.Entry keyValue = FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), "resource detector"); - return FileConfigUtil.loadComponent( - spiHelper, Resource.class, keyValue.getKey(), keyValue.getValue()); + return context.loadComponent(Resource.class, keyValue.getKey(), keyValue.getValue()); } } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceFactory.java index 4b017638d1d..1ac18ecb957 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceFactory.java @@ -9,7 +9,6 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.sdk.autoconfigure.ResourceConfiguration; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AttributeNameValueModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalResourceDetectionModel; @@ -18,7 +17,6 @@ import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ResourceModel; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.resources.ResourceBuilder; -import java.io.Closeable; import java.util.Collections; import java.util.List; import java.util.function.Predicate; @@ -35,7 +33,7 @@ static ResourceFactory getInstance() { } @Override - public Resource create(ResourceModel model, SpiHelper spiHelper, List closeables) { + public Resource create(ResourceModel model, DeclarativeConfigContext context) { ResourceBuilder builder = Resource.getDefault().toBuilder(); ExperimentalResourceDetectionModel detectionModel = model.getDetectionDevelopment(); @@ -46,7 +44,7 @@ public Resource create(ResourceModel model, SpiHelper spiHelper, List if (detectorModels != null) { for (ExperimentalResourceDetectorModel detectorModel : detectorModels) { detectedResourceBuilder.putAll( - ResourceDetectorFactory.getInstance().create(detectorModel, spiHelper, closeables)); + ResourceDetectorFactory.getInstance().create(detectorModel, context)); } } @@ -71,9 +69,7 @@ public Resource create(ResourceModel model, SpiHelper spiHelper, List List attributeNameValueModel = model.getAttributes(); if (attributeNameValueModel != null) { builder - .putAll( - AttributeListFactory.getInstance() - .create(attributeNameValueModel, spiHelper, closeables)) + .putAll(AttributeListFactory.getInstance().create(attributeNameValueModel, context)) .build(); } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SamplerFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SamplerFactory.java index a7b8b110071..67336966657 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SamplerFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SamplerFactory.java @@ -5,14 +5,11 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ParentBasedSamplerModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SamplerModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TraceIdRatioBasedSamplerModel; import io.opentelemetry.sdk.trace.samplers.ParentBasedSamplerBuilder; import io.opentelemetry.sdk.trace.samplers.Sampler; -import java.io.Closeable; -import java.util.List; import java.util.Map; final class SamplerFactory implements Factory { @@ -26,7 +23,7 @@ static SamplerFactory getInstance() { } @Override - public Sampler create(SamplerModel model, SpiHelper spiHelper, List closeables) { + public Sampler create(SamplerModel model, DeclarativeConfigContext context) { if (model.getAlwaysOn() != null) { return Sampler.alwaysOn(); } @@ -46,24 +43,22 @@ public Sampler create(SamplerModel model, SpiHelper spiHelper, List c Sampler root = parentBasedModel.getRoot() == null ? Sampler.alwaysOn() - : create(parentBasedModel.getRoot(), spiHelper, closeables); + : create(parentBasedModel.getRoot(), context); ParentBasedSamplerBuilder builder = Sampler.parentBasedBuilder(root); if (parentBasedModel.getRemoteParentSampled() != null) { - Sampler sampler = create(parentBasedModel.getRemoteParentSampled(), spiHelper, closeables); + Sampler sampler = create(parentBasedModel.getRemoteParentSampled(), context); builder.setRemoteParentSampled(sampler); } if (parentBasedModel.getRemoteParentNotSampled() != null) { - Sampler sampler = - create(parentBasedModel.getRemoteParentNotSampled(), spiHelper, closeables); + Sampler sampler = create(parentBasedModel.getRemoteParentNotSampled(), context); builder.setRemoteParentNotSampled(sampler); } if (parentBasedModel.getLocalParentSampled() != null) { - Sampler sampler = create(parentBasedModel.getLocalParentSampled(), spiHelper, closeables); + Sampler sampler = create(parentBasedModel.getLocalParentSampled(), context); builder.setLocalParentSampled(sampler); } if (parentBasedModel.getLocalParentNotSampled() != null) { - Sampler sampler = - create(parentBasedModel.getLocalParentNotSampled(), spiHelper, closeables); + Sampler sampler = create(parentBasedModel.getLocalParentNotSampled(), context); builder.setLocalParentNotSampled(sampler); } return builder.build(); @@ -73,9 +68,6 @@ public Sampler create(SamplerModel model, SpiHelper spiHelper, List c Map.Entry keyValue = FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), "sampler"); - Sampler sampler = - FileConfigUtil.loadComponent( - spiHelper, Sampler.class, keyValue.getKey(), keyValue.getValue()); - return FileConfigUtil.addAndReturn(closeables, sampler); + return context.loadComponent(Sampler.class, keyValue.getKey(), keyValue.getValue()); } } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanExporterFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanExporterFactory.java index f809247da46..03b008320b4 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanExporterFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanExporterFactory.java @@ -5,11 +5,8 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanExporterModel; import io.opentelemetry.sdk.trace.export.SpanExporter; -import java.io.Closeable; -import java.util.List; import java.util.Map; final class SpanExporterFactory implements Factory { @@ -23,8 +20,7 @@ static SpanExporterFactory getInstance() { } @Override - public SpanExporter create( - SpanExporterModel model, SpiHelper spiHelper, List closeables) { + public SpanExporter create(SpanExporterModel model, DeclarativeConfigContext context) { model.getAdditionalProperties().compute("otlp_http", (k, v) -> model.getOtlpHttp()); model.getAdditionalProperties().compute("otlp_grpc", (k, v) -> model.getOtlpGrpc()); @@ -36,9 +32,8 @@ public SpanExporter create( Map.Entry keyValue = FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), "span exporter"); - SpanExporter metricExporter = - FileConfigUtil.loadComponent( - spiHelper, SpanExporter.class, keyValue.getKey(), keyValue.getValue()); - return FileConfigUtil.addAndReturn(closeables, metricExporter); + SpanExporter spanExporter = + context.loadComponent(SpanExporter.class, keyValue.getKey(), keyValue.getValue()); + return context.addCloseable(spanExporter); } } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanLimitsFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanLimitsFactory.java index c10c4bfd7a8..284925aa24d 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanLimitsFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanLimitsFactory.java @@ -5,13 +5,10 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AttributeLimitsModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanLimitsModel; import io.opentelemetry.sdk.trace.SpanLimits; import io.opentelemetry.sdk.trace.SpanLimitsBuilder; -import java.io.Closeable; -import java.util.List; final class SpanLimitsFactory implements Factory { @@ -24,8 +21,7 @@ static SpanLimitsFactory getInstance() { } @Override - public SpanLimits create( - SpanLimitsAndAttributeLimits model, SpiHelper spiHelper, List closeables) { + public SpanLimits create(SpanLimitsAndAttributeLimits model, DeclarativeConfigContext context) { SpanLimitsBuilder builder = SpanLimits.builder(); AttributeLimitsModel attributeLimitsModel = model.getAttributeLimits(); diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanProcessorFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanProcessorFactory.java index 61d809d040a..5bfa617f570 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanProcessorFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanProcessorFactory.java @@ -5,7 +5,6 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.BatchSpanProcessorModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SimpleSpanProcessorModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanExporterModel; @@ -15,9 +14,7 @@ import io.opentelemetry.sdk.trace.export.BatchSpanProcessorBuilder; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; import io.opentelemetry.sdk.trace.export.SpanExporter; -import java.io.Closeable; import java.time.Duration; -import java.util.List; import java.util.Map; final class SpanProcessorFactory implements Factory { @@ -31,14 +28,12 @@ static SpanProcessorFactory getInstance() { } @Override - public SpanProcessor create( - SpanProcessorModel model, SpiHelper spiHelper, List closeables) { + public SpanProcessor create(SpanProcessorModel model, DeclarativeConfigContext context) { BatchSpanProcessorModel batchModel = model.getBatch(); if (batchModel != null) { SpanExporterModel exporterModel = FileConfigUtil.requireNonNull(batchModel.getExporter(), "batch span processor exporter"); - SpanExporter spanExporter = - SpanExporterFactory.getInstance().create(exporterModel, spiHelper, closeables); + SpanExporter spanExporter = SpanExporterFactory.getInstance().create(exporterModel, context); BatchSpanProcessorBuilder builder = BatchSpanProcessor.builder(spanExporter); if (batchModel.getExportTimeout() != null) { builder.setExporterTimeout(Duration.ofMillis(batchModel.getExportTimeout())); @@ -52,7 +47,7 @@ public SpanProcessor create( if (batchModel.getScheduleDelay() != null) { builder.setScheduleDelay(Duration.ofMillis(batchModel.getScheduleDelay())); } - return FileConfigUtil.addAndReturn(closeables, builder.build()); + return context.addCloseable(builder.build()); } SimpleSpanProcessorModel simpleModel = model.getSimple(); @@ -60,16 +55,14 @@ public SpanProcessor create( SpanExporterModel exporterModel = FileConfigUtil.requireNonNull( simpleModel.getExporter(), "simple span processor exporter"); - SpanExporter spanExporter = - SpanExporterFactory.getInstance().create(exporterModel, spiHelper, closeables); - return FileConfigUtil.addAndReturn(closeables, SimpleSpanProcessor.create(spanExporter)); + SpanExporter spanExporter = SpanExporterFactory.getInstance().create(exporterModel, context); + return context.addCloseable(SimpleSpanProcessor.create(spanExporter)); } Map.Entry keyValue = FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), "span processor"); SpanProcessor spanProcessor = - FileConfigUtil.loadComponent( - spiHelper, SpanProcessor.class, keyValue.getKey(), keyValue.getValue()); - return FileConfigUtil.addAndReturn(closeables, spanProcessor); + context.loadComponent(SpanProcessor.class, keyValue.getKey(), keyValue.getValue()); + return context.addCloseable(spanProcessor); } } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TextMapPropagatorFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TextMapPropagatorFactory.java index 6cd6abec78e..6f0cb869bd1 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TextMapPropagatorFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TextMapPropagatorFactory.java @@ -8,11 +8,8 @@ import io.opentelemetry.api.baggage.propagation.W3CBaggagePropagator; import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TextMapPropagatorModel; -import java.io.Closeable; import java.util.Collections; -import java.util.List; import java.util.Map; final class TextMapPropagatorFactory @@ -28,35 +25,34 @@ static TextMapPropagatorFactory getInstance() { @Override public TextMapPropagatorAndName create( - TextMapPropagatorModel model, SpiHelper spiHelper, List closeables) { + TextMapPropagatorModel model, DeclarativeConfigContext context) { if (model.getTracecontext() != null) { - return getPropagator(spiHelper, "tracecontext"); + return getPropagator(context, "tracecontext"); } if (model.getBaggage() != null) { - return getPropagator(spiHelper, "baggage"); + return getPropagator(context, "baggage"); } if (model.getB3() != null) { - return getPropagator(spiHelper, "b3"); + return getPropagator(context, "b3"); } if (model.getB3multi() != null) { - return getPropagator(spiHelper, "b3multi"); + return getPropagator(context, "b3multi"); } if (model.getJaeger() != null) { - return getPropagator(spiHelper, "jaeger"); + return getPropagator(context, "jaeger"); } if (model.getOttrace() != null) { - return getPropagator(spiHelper, "ottrace"); + return getPropagator(context, "ottrace"); } Map.Entry keyValue = FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), "propagator"); TextMapPropagator propagator = - FileConfigUtil.loadComponent( - spiHelper, TextMapPropagator.class, keyValue.getKey(), keyValue.getValue()); + context.loadComponent(TextMapPropagator.class, keyValue.getKey(), keyValue.getValue()); return TextMapPropagatorAndName.create(propagator, keyValue.getKey()); } - static TextMapPropagatorAndName getPropagator(SpiHelper spiHelper, String name) { + static TextMapPropagatorAndName getPropagator(DeclarativeConfigContext context, String name) { TextMapPropagator textMapPropagator; if (name.equals("tracecontext")) { textMapPropagator = W3CTraceContextPropagator.getInstance(); @@ -64,8 +60,7 @@ static TextMapPropagatorAndName getPropagator(SpiHelper spiHelper, String name) textMapPropagator = W3CBaggagePropagator.getInstance(); } else { textMapPropagator = - FileConfigUtil.loadComponent( - spiHelper, TextMapPropagator.class, name, Collections.emptyMap()); + context.loadComponent(TextMapPropagator.class, name, Collections.emptyMap()); } return TextMapPropagatorAndName.create(textMapPropagator, name); } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TracerProviderFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TracerProviderFactory.java index 057ce3fabf9..68210f92b07 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TracerProviderFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TracerProviderFactory.java @@ -7,7 +7,6 @@ import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigUtil.requireNonNull; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalTracerConfigModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalTracerConfiguratorModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalTracerMatcherAndConfigModel; @@ -21,7 +20,6 @@ import io.opentelemetry.sdk.trace.internal.SdkTracerProviderUtil; import io.opentelemetry.sdk.trace.internal.TracerConfig; import io.opentelemetry.sdk.trace.samplers.Sampler; -import java.io.Closeable; import java.util.List; final class TracerProviderFactory @@ -37,7 +35,7 @@ static TracerProviderFactory getInstance() { @Override public SdkTracerProviderBuilder create( - TracerProviderAndAttributeLimits model, SpiHelper spiHelper, List closeables) { + TracerProviderAndAttributeLimits model, DeclarativeConfigContext context) { SdkTracerProviderBuilder builder = SdkTracerProvider.builder(); TracerProviderModel tracerProviderModel = model.getTracerProvider(); if (tracerProviderModel == null) { @@ -49,14 +47,12 @@ public SdkTracerProviderBuilder create( .create( SpanLimitsAndAttributeLimits.create( model.getAttributeLimits(), tracerProviderModel.getLimits()), - spiHelper, - closeables); + context); builder.setSpanLimits(spanLimits); if (tracerProviderModel.getSampler() != null) { Sampler sampler = - SamplerFactory.getInstance() - .create(tracerProviderModel.getSampler(), spiHelper, closeables); + SamplerFactory.getInstance().create(tracerProviderModel.getSampler(), context); builder.setSampler(sampler); } @@ -65,7 +61,7 @@ public SdkTracerProviderBuilder create( processors.forEach( processor -> builder.addSpanProcessor( - SpanProcessorFactory.getInstance().create(processor, spiHelper, closeables))); + SpanProcessorFactory.getInstance().create(processor, context))); } ExperimentalTracerConfiguratorModel tracerConfiguratorModel = @@ -75,7 +71,7 @@ public SdkTracerProviderBuilder create( ScopeConfiguratorBuilder configuratorBuilder = ScopeConfigurator.builder(); if (defaultConfigModel != null) { configuratorBuilder.setDefault( - TracerConfigFactory.INSTANCE.create(defaultConfigModel, spiHelper, closeables)); + TracerConfigFactory.INSTANCE.create(defaultConfigModel, context)); } List tracerMatcherAndConfigs = tracerConfiguratorModel.getTracers(); @@ -89,7 +85,7 @@ public SdkTracerProviderBuilder create( } configuratorBuilder.addCondition( ScopeConfiguratorBuilder.nameMatchesGlob(name), - TracerConfigFactory.INSTANCE.create(config, spiHelper, closeables)); + TracerConfigFactory.INSTANCE.create(config, context)); } } SdkTracerProviderUtil.setTracerConfigurator(builder, configuratorBuilder.build()); @@ -105,7 +101,7 @@ private static class TracerConfigFactory @Override public TracerConfig create( - ExperimentalTracerConfigModel model, SpiHelper spiHelper, List closeables) { + ExperimentalTracerConfigModel model, DeclarativeConfigContext context) { if (model.getDisabled() != null && model.getDisabled()) { return TracerConfig.disabled(); } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ViewFactory.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ViewFactory.java index 6e7238e734b..a399ac724f3 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ViewFactory.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ViewFactory.java @@ -5,12 +5,10 @@ package io.opentelemetry.sdk.extension.incubator.fileconfig; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.IncludeExcludeModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewStreamModel; import io.opentelemetry.sdk.metrics.View; import io.opentelemetry.sdk.metrics.ViewBuilder; -import java.io.Closeable; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -27,7 +25,7 @@ static ViewFactory getInstance() { } @Override - public View create(ViewStreamModel model, SpiHelper spiHelper, List closeables) { + public View create(ViewStreamModel model, DeclarativeConfigContext context) { ViewBuilder builder = View.builder(); if (model.getName() != null) { builder.setName(model.getName()); @@ -41,7 +39,7 @@ public View create(ViewStreamModel model, SpiHelper spiHelper, List c } if (model.getAggregation() != null) { builder.setAggregation( - AggregationFactory.getInstance().create(model.getAggregation(), spiHelper, closeables)); + AggregationFactory.getInstance().create(model.getAggregation(), context)); } if (model.getAggregationCardinalityLimit() != null) { builder.setCardinalityLimit(model.getAggregationCardinalityLimit()); diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AggregationFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AggregationFactoryTest.java index 448f12c23eb..92b355765f3 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AggregationFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AggregationFactoryTest.java @@ -8,14 +8,12 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static org.mockito.Mockito.mock; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AggregationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.Base2ExponentialBucketHistogramAggregationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.DropAggregationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExplicitBucketHistogramAggregationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LastValueAggregationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SumAggregationModel; -import java.util.ArrayList; import java.util.Arrays; import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; @@ -28,7 +26,7 @@ class AggregationFactoryTest { @MethodSource("createTestCases") void create(AggregationModel model, io.opentelemetry.sdk.metrics.Aggregation expectedResult) { io.opentelemetry.sdk.metrics.Aggregation aggregation = - AggregationFactory.getInstance().create(model, mock(SpiHelper.class), new ArrayList<>()); + AggregationFactory.getInstance().create(model, mock(DeclarativeConfigContext.class)); assertThat(aggregation.toString()).isEqualTo(expectedResult.toString()); } diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AttributeListFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AttributeListFactoryTest.java index 73fff7f3c8c..382fd772f8b 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AttributeListFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/AttributeListFactoryTest.java @@ -11,7 +11,6 @@ import io.opentelemetry.api.common.Attributes; import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AttributeNameValueModel; import java.util.Arrays; import java.util.Collections; @@ -30,7 +29,7 @@ void create_InvalidAttributes(List model, String expect assertThatThrownBy( () -> AttributeListFactory.getInstance() - .create(model, mock(SpiHelper.class), Collections.emptyList())) + .create(model, mock(DeclarativeConfigContext.class))) .isInstanceOf(DeclarativeConfigException.class) .hasMessageContaining(expectedMessage); } @@ -133,8 +132,7 @@ void create() { .withName("boolArrKey") .withValue(Arrays.asList(true, false)) .withType(AttributeNameValueModel.AttributeType.BOOL_ARRAY)), - mock(SpiHelper.class), - Collections.emptyList())) + mock(DeclarativeConfigContext.class))) .isEqualTo(expectedAttributes); } } diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/CardinalityLimitsFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/CardinalityLimitsFactoryTest.java index 6fa5548bcae..103abba7ee0 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/CardinalityLimitsFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/CardinalityLimitsFactoryTest.java @@ -8,11 +8,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static org.mockito.Mockito.mock; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.CardinalityLimitsModel; import io.opentelemetry.sdk.metrics.InstrumentType; import io.opentelemetry.sdk.metrics.export.CardinalityLimitSelector; -import java.util.ArrayList; import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -24,8 +22,7 @@ class CardinalityLimitsFactoryTest { @MethodSource("createTestCases") void create(CardinalityLimitsModel model, CardinalityLimitSelector expectedResult) { CardinalityLimitSelector cardinalityLimitSelector = - CardinalityLimitsFactory.getInstance() - .create(model, mock(SpiHelper.class), new ArrayList<>()); + CardinalityLimitsFactory.getInstance().create(model, mock(DeclarativeConfigContext.class)); for (InstrumentType instrumentType : InstrumentType.values()) { assertThat(cardinalityLimitSelector.getCardinalityLimit(instrumentType)) diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/InstrumentSelectorFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/InstrumentSelectorFactoryTest.java index 9178e3fe29f..0324551306a 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/InstrumentSelectorFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/InstrumentSelectorFactoryTest.java @@ -10,11 +10,9 @@ import static org.mockito.Mockito.mock; import io.opentelemetry.api.incubator.config.DeclarativeConfigException; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewSelectorModel; import io.opentelemetry.sdk.metrics.InstrumentSelector; import io.opentelemetry.sdk.metrics.InstrumentType; -import java.util.Collections; import org.junit.jupiter.api.Test; class InstrumentSelectorFactoryTest { @@ -24,8 +22,7 @@ void create_Defaults() { assertThatThrownBy( () -> InstrumentSelectorFactory.getInstance() - .create( - new ViewSelectorModel(), mock(SpiHelper.class), Collections.emptyList())) + .create(new ViewSelectorModel(), mock(DeclarativeConfigContext.class))) .isInstanceOf(DeclarativeConfigException.class) .hasMessage("Invalid selector"); } @@ -41,8 +38,7 @@ void create() { .withMeterName("meter-name") .withMeterSchemaUrl("https://opentelemetry.io/schemas/1.16.0") .withMeterVersion("1.0.0"), - mock(SpiHelper.class), - Collections.emptyList())) + mock(DeclarativeConfigContext.class))) .isEqualTo( InstrumentSelector.builder() .setName("instrument-name") diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogLimitsFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogLimitsFactoryTest.java index 53e811e6629..5fab6df6d11 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogLimitsFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogLimitsFactoryTest.java @@ -8,11 +8,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static org.mockito.Mockito.mock; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AttributeLimitsModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordLimitsModel; import io.opentelemetry.sdk.logs.LogLimits; -import java.util.Collections; import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -23,9 +21,7 @@ class LogLimitsFactoryTest { @ParameterizedTest @MethodSource("createArguments") void create(LogRecordLimitsAndAttributeLimits model, LogLimits expectedLogLimits) { - assertThat( - LogLimitsFactory.getInstance() - .create(model, mock(SpiHelper.class), Collections.emptyList())) + assertThat(LogLimitsFactory.getInstance().create(model, mock(DeclarativeConfigContext.class))) .isEqualTo(expectedLogLimits); } 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 c6410aa9237..d1964c15de3 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 @@ -64,6 +64,7 @@ class LogRecordExporterFactoryTest { private final SpiHelper spiHelper = spy(SpiHelper.create(SpanExporterFactoryTest.class.getClassLoader())); + private final DeclarativeConfigContext context = new DeclarativeConfigContext(spiHelper); private List> loadedComponentProviders = Collections.emptyList(); @BeforeEach @@ -99,9 +100,7 @@ void create_OtlpHttpDefaults() { LogRecordExporter exporter = LogRecordExporterFactory.getInstance() .create( - new LogRecordExporterModel().withOtlpHttp(new OtlpHttpExporterModel()), - spiHelper, - closeables); + new LogRecordExporterModel().withOtlpHttp(new OtlpHttpExporterModel()), context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -169,8 +168,7 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir) .withCertificateFile(certificatePath) .withClientKeyFile(clientKeyPath) .withClientCertificateFile(clientCertificatePath)), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -212,9 +210,7 @@ void create_OtlpGrpcDefaults() { LogRecordExporter exporter = LogRecordExporterFactory.getInstance() .create( - new LogRecordExporterModel().withOtlpGrpc(new OtlpGrpcExporterModel()), - spiHelper, - closeables); + new LogRecordExporterModel().withOtlpGrpc(new OtlpGrpcExporterModel()), context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -281,8 +277,7 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir) .withCertificateFile(certificatePath) .withClientKeyFile(clientKeyPath) .withClientCertificateFile(clientCertificatePath)), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -326,8 +321,7 @@ void create_OtlpFile() { .create( new LogRecordExporterModel() .withOtlpFileDevelopment(new ExperimentalOtlpFileExporterModel()), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -351,8 +345,7 @@ void create_SpiExporter_Unknown() { new LogRecordExporterModel() .withAdditionalProperty( "unknown_key", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>())) + context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage( "No component provider detected for io.opentelemetry.sdk.logs.export.LogRecordExporter with name \"unknown_key\"."); @@ -366,8 +359,7 @@ void create_SpiExporter_Valid() { .create( new LogRecordExporterModel() .withAdditionalProperty("test", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>()); + context); assertThat(logRecordExporter) .isInstanceOf(LogRecordExporterComponentProvider.TestLogRecordExporter.class); assertThat( diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordProcessorFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordProcessorFactoryTest.java index 82b9e6577da..b7e092da22a 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordProcessorFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LogRecordProcessorFactoryTest.java @@ -22,7 +22,6 @@ import java.io.Closeable; import java.time.Duration; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; @@ -32,8 +31,9 @@ class LogRecordProcessorFactoryTest { @RegisterExtension CleanupExtension cleanup = new CleanupExtension(); - private final SpiHelper spiHelper = - SpiHelper.create(LogRecordProcessorFactoryTest.class.getClassLoader()); + private final DeclarativeConfigContext context = + new DeclarativeConfigContext( + SpiHelper.create(LogRecordProcessorFactoryTest.class.getClassLoader())); @Test void create_BatchNullExporter() { @@ -42,8 +42,7 @@ void create_BatchNullExporter() { LogRecordProcessorFactory.getInstance() .create( new LogRecordProcessorModel().withBatch(new BatchLogRecordProcessorModel()), - spiHelper, - Collections.emptyList())) + context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage("batch log record processor exporter is required but is null"); } @@ -66,8 +65,7 @@ void create_BatchDefaults() { .withExporter( new LogRecordExporterModel() .withOtlpHttp(new OtlpHttpExporterModel()))), - spiHelper, - closeables); + context); cleanup.addCloseable(processor); cleanup.addCloseables(closeables); @@ -98,8 +96,7 @@ void create_BatchConfigured() { .withScheduleDelay(1) .withMaxExportBatchSize(2) .withExportTimeout(3)), - spiHelper, - closeables); + context); cleanup.addCloseable(processor); cleanup.addCloseables(closeables); @@ -114,8 +111,7 @@ void create_SimpleNullExporter() { .create( new LogRecordProcessorModel() .withSimple(new SimpleLogRecordProcessorModel()), - spiHelper, - Collections.emptyList())) + context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage("simple log record processor exporter is required but is null"); } @@ -137,8 +133,7 @@ void create_SimpleConfigured() { .withExporter( new LogRecordExporterModel() .withOtlpHttp(new OtlpHttpExporterModel()))), - spiHelper, - closeables); + context); cleanup.addCloseable(processor); cleanup.addCloseables(closeables); @@ -154,8 +149,7 @@ void create_SpiProcessor_Unknown() { new LogRecordProcessorModel() .withAdditionalProperty( "unknown_key", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>())) + context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage( "No component provider detected for io.opentelemetry.sdk.logs.LogRecordProcessor with name \"unknown_key\"."); @@ -168,8 +162,7 @@ void create_SpiExporter_Valid() { .create( new LogRecordProcessorModel() .withAdditionalProperty("test", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>()); + context); assertThat(logRecordProcessor) .isInstanceOf(LogRecordProcessorComponentProvider.TestLogRecordProcessor.class); Assertions.assertThat( diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactoryTest.java index 96ed5dca8f5..65761fd5c9c 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactoryTest.java @@ -40,8 +40,9 @@ class LoggerProviderFactoryTest { @RegisterExtension CleanupExtension cleanup = new CleanupExtension(); - private final SpiHelper spiHelper = - SpiHelper.create(LoggerProviderFactoryTest.class.getClassLoader()); + private final DeclarativeConfigContext context = + new DeclarativeConfigContext( + SpiHelper.create(LoggerProviderFactoryTest.class.getClassLoader())); @ParameterizedTest @MethodSource("createArguments") @@ -49,8 +50,7 @@ void create(LoggerProviderAndAttributeLimits model, SdkLoggerProvider expectedPr List closeables = new ArrayList<>(); cleanup.addCloseable(expectedProvider); - SdkLoggerProvider provider = - LoggerProviderFactory.getInstance().create(model, spiHelper, closeables).build(); + SdkLoggerProvider provider = LoggerProviderFactory.getInstance().create(model, context).build(); cleanup.addCloseable(provider); cleanup.addCloseables(closeables); diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactoryTest.java index 08da10a39f3..93abfd7615b 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactoryTest.java @@ -43,8 +43,9 @@ class MeterProviderFactoryTest { @RegisterExtension CleanupExtension cleanup = new CleanupExtension(); - private final SpiHelper spiHelper = - SpiHelper.create(MeterProviderFactoryTest.class.getClassLoader()); + private final DeclarativeConfigContext context = + new DeclarativeConfigContext( + SpiHelper.create(MeterProviderFactoryTest.class.getClassLoader())); @ParameterizedTest @MethodSource("createArguments") @@ -52,8 +53,7 @@ void create(MeterProviderModel model, SdkMeterProvider expectedProvider) { List closeables = new ArrayList<>(); cleanup.addCloseable(expectedProvider); - SdkMeterProvider provider = - MeterProviderFactory.getInstance().create(model, spiHelper, closeables).build(); + SdkMeterProvider provider = MeterProviderFactory.getInstance().create(model, context).build(); cleanup.addCloseable(provider); cleanup.addCloseables(closeables); 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 851a69e8ff9..d5aa856877d 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 @@ -70,6 +70,7 @@ class MetricExporterFactoryTest { private final SpiHelper spiHelper = spy(SpiHelper.create(SpanExporterFactoryTest.class.getClassLoader())); + private final DeclarativeConfigContext context = new DeclarativeConfigContext(spiHelper); private List> loadedComponentProviders = Collections.emptyList(); @BeforeEach @@ -106,8 +107,7 @@ void create_OtlpHttpDefaults() { MetricExporterFactory.getInstance() .create( new PushMetricExporterModel().withOtlpHttp(new OtlpHttpMetricExporterModel()), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -184,8 +184,7 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir) .withDefaultHistogramAggregation( OtlpHttpMetricExporterModel.ExporterDefaultHistogramAggregation .BASE_2_EXPONENTIAL_BUCKET_HISTOGRAM)), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -231,8 +230,7 @@ void create_OtlpGrpcDefaults() { MetricExporterFactory.getInstance() .create( new PushMetricExporterModel().withOtlpGrpc(new OtlpGrpcMetricExporterModel()), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -308,8 +306,7 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir) .withDefaultHistogramAggregation( OtlpHttpMetricExporterModel.ExporterDefaultHistogramAggregation .BASE_2_EXPONENTIAL_BUCKET_HISTOGRAM)), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -353,10 +350,7 @@ void create_Console() { io.opentelemetry.sdk.metrics.export.MetricExporter exporter = MetricExporterFactory.getInstance() - .create( - new PushMetricExporterModel().withConsole(new ConsoleExporterModel()), - spiHelper, - closeables); + .create(new PushMetricExporterModel().withConsole(new ConsoleExporterModel()), context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -374,8 +368,7 @@ void create_OtlpFile() { .create( new PushMetricExporterModel() .withOtlpFileDevelopment(new ExperimentalOtlpFileMetricExporterModel()), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -397,8 +390,7 @@ void create_SpiExporter_Unknown() { new PushMetricExporterModel() .withAdditionalProperty( "unknown_key", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>())) + context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage( "No component provider detected for io.opentelemetry.sdk.metrics.export.MetricExporter with name \"unknown_key\"."); @@ -411,8 +403,7 @@ void create_SpiExporter_Valid() { .create( new PushMetricExporterModel() .withAdditionalProperty("test", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>()); + context); assertThat(metricExporter) .isInstanceOf(MetricExporterComponentProvider.TestMetricExporter.class); assertThat( diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricReaderFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricReaderFactoryTest.java index e499b0902fa..66748220239 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricReaderFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MetricReaderFactoryTest.java @@ -7,6 +7,8 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -16,7 +18,6 @@ import io.opentelemetry.exporter.prometheus.PrometheusHttpServer; 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.internal.model.CardinalityLimitsModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalPrometheusMetricExporterModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.MetricReaderModel; @@ -32,7 +33,6 @@ import java.net.ServerSocket; import java.time.Duration; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -45,7 +45,10 @@ class MetricReaderFactoryTest { LogCapturer logCapturer = LogCapturer.create().captureForLogger(DeclarativeConfiguration.class.getName()); - private SpiHelper spiHelper = SpiHelper.create(MetricReaderFactoryTest.class.getClassLoader()); + private final DeclarativeConfigContext context = + spy( + new DeclarativeConfigContext( + SpiHelper.create(MetricReaderFactoryTest.class.getClassLoader()))); @Test void create_PeriodicNullExporter() { @@ -54,8 +57,7 @@ void create_PeriodicNullExporter() { MetricReaderFactory.getInstance() .create( new MetricReaderModel().withPeriodic(new PeriodicMetricReaderModel()), - spiHelper, - Collections.emptyList())) + context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage("periodic metric reader exporter is required but is null"); } @@ -78,8 +80,7 @@ void create_PeriodicDefaults() { .withExporter( new PushMetricExporterModel() .withOtlpHttp(new OtlpHttpMetricExporterModel()))), - spiHelper, - closeables); + context); MetricReader reader = readerAndCardinalityLimits.getMetricReader(); cleanup.addCloseable(reader); cleanup.addCloseables(closeables); @@ -109,8 +110,7 @@ void create_PeriodicConfigured() { .withOtlpHttp(new OtlpHttpMetricExporterModel())) .withInterval(1) .withCardinalityLimits(new CardinalityLimitsModel().withDefault(100))), - spiHelper, - closeables); + context); MetricReader reader = readerAndCardinalityLimits.getMetricReader(); cleanup.addCloseable(reader); cleanup.addCloseables(closeables); @@ -126,7 +126,6 @@ void create_PeriodicConfigured() { @Test void create_PullPrometheusDefault() throws IOException { int port = randomAvailablePort(); - spiHelper = spy(spiHelper); List closeables = new ArrayList<>(); PrometheusHttpServer expectedReader = PrometheusHttpServer.builder().setPort(port).build(); // Close the reader to avoid port conflict with the new instance created by MetricReaderFactory @@ -143,8 +142,7 @@ void create_PullPrometheusDefault() throws IOException { .withPrometheusDevelopment( new ExperimentalPrometheusMetricExporterModel() .withPort(port)))), - spiHelper, - closeables); + context); io.opentelemetry.sdk.metrics.export.MetricReader reader = readerAndCardinalityLimits.getMetricReader(); cleanup.addCloseable(reader); @@ -153,14 +151,13 @@ void create_PullPrometheusDefault() throws IOException { assertThat(reader.toString()).isEqualTo(expectedReader.toString()); assertThat(readerAndCardinalityLimits.getCardinalityLimitsSelector()).isNull(); // TODO(jack-berg): validate prometheus component provider was invoked with correct arguments - verify(spiHelper).load(ComponentProvider.class); + verify(context).loadComponent(eq(MetricReader.class), eq("prometheus"), any()); } @Test void create_PullPrometheusConfigured() throws IOException { int port = randomAvailablePort(); - spiHelper = spy(spiHelper); List closeables = new ArrayList<>(); PrometheusHttpServer expectedReader = PrometheusHttpServer.builder().setHost("localhost").setPort(port).build(); @@ -180,8 +177,7 @@ void create_PullPrometheusConfigured() throws IOException { .withHost("localhost") .withPort(port))) .withCardinalityLimits(new CardinalityLimitsModel().withDefault(100))), - spiHelper, - closeables); + context); io.opentelemetry.sdk.metrics.export.MetricReader reader = readerAndCardinalityLimits.getMetricReader(); cleanup.addCloseable(reader); @@ -194,7 +190,7 @@ void create_PullPrometheusConfigured() throws IOException { .getCardinalityLimit(InstrumentType.COUNTER)) .isEqualTo(100); // TODO(jack-berg): validate prometheus component provider was invoked with correct arguments - verify(spiHelper).load(ComponentProvider.class); + verify(context).loadComponent(eq(MetricReader.class), eq("prometheus"), any()); } @Test @@ -202,10 +198,7 @@ void create_InvalidPullReader() { assertThatThrownBy( () -> MetricReaderFactory.getInstance() - .create( - new MetricReaderModel().withPull(new PullMetricReaderModel()), - spiHelper, - Collections.emptyList())) + .create(new MetricReaderModel().withPull(new PullMetricReaderModel()), context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage("pull metric reader exporter is required but is null"); @@ -217,8 +210,7 @@ void create_InvalidPullReader() { .withPull( new PullMetricReaderModel() .withExporter(new PullMetricExporterModel())), - spiHelper, - Collections.emptyList())) + context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage("prometheus is the only currently supported pull reader"); } diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java index 8c456e4c001..16ec2c284d2 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetryConfigurationFactoryTest.java @@ -70,8 +70,9 @@ class OpenTelemetryConfigurationFactoryTest { @RegisterExtension CleanupExtension cleanup = new CleanupExtension(); - private final SpiHelper spiHelper = - SpiHelper.create(OpenTelemetryConfigurationFactoryTest.class.getClassLoader()); + private final DeclarativeConfigContext context = + new DeclarativeConfigContext( + SpiHelper.create(OpenTelemetryConfigurationFactoryTest.class.getClassLoader())); @Test void create_InvalidFileFormat() { @@ -83,9 +84,7 @@ void create_InvalidFileFormat() { List closeables = new ArrayList<>(); for (OpenTelemetryConfigurationModel testCase : testCases) { assertThatThrownBy( - () -> - OpenTelemetryConfigurationFactory.getInstance() - .create(testCase, spiHelper, closeables)) + () -> OpenTelemetryConfigurationFactory.getInstance().create(testCase, context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage("Unsupported file format. Supported formats include: 0.4"); cleanup.addCloseables(closeables); @@ -100,8 +99,7 @@ void create_Defaults() { OpenTelemetrySdk sdk = OpenTelemetryConfigurationFactory.getInstance() - .create( - new OpenTelemetryConfigurationModel().withFileFormat("0.4"), spiHelper, closeables); + .create(new OpenTelemetryConfigurationModel().withFileFormat("0.4"), context); cleanup.addCloseable(sdk); cleanup.addCloseables(closeables); @@ -132,8 +130,7 @@ void create_Disabled() { new LogRecordExporterModel() .withOtlpHttp( new OtlpHttpExporterModel())))))), - spiHelper, - closeables); + context); cleanup.addCloseable(sdk); cleanup.addCloseables(closeables); @@ -294,8 +291,7 @@ void create_Configured() { new ViewStreamModel() .withName("stream-name") .withAttributeKeys(null))))), - spiHelper, - closeables); + context); cleanup.addCloseable(sdk); cleanup.addCloseables(closeables); diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/PropagatorFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/PropagatorFactoryTest.java index 2e282e7cbb1..b89fcad833e 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/PropagatorFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/PropagatorFactoryTest.java @@ -37,14 +37,13 @@ class PropagatorFactoryTest { - private final SpiHelper spiHelper = - SpiHelper.create(PropagatorFactoryTest.class.getClassLoader()); + private final DeclarativeConfigContext context = + new DeclarativeConfigContext(SpiHelper.create(PropagatorFactoryTest.class.getClassLoader())); @ParameterizedTest @MethodSource("createArguments") void create(PropagatorModel model, ContextPropagators expectedPropagators) { - ContextPropagators propagators = - PropagatorFactory.getInstance().create(model, spiHelper, Collections.emptyList()); + ContextPropagators propagators = PropagatorFactory.getInstance().create(model, context); assertThat(propagators.toString()).isEqualTo(expectedPropagators.toString()); } @@ -140,10 +139,7 @@ void create_SpiPropagator_Unknown() { assertThatThrownBy( () -> PropagatorFactory.getInstance() - .create( - new PropagatorModel().withCompositeList("foo"), - spiHelper, - Collections.emptyList())) + .create(new PropagatorModel().withCompositeList("foo"), context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage( "No component provider detected for io.opentelemetry.context.propagation.TextMapPropagator with name \"foo\"."); diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceFactoryTest.java index 2ece7c372f8..1ed195376f6 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ResourceFactoryTest.java @@ -7,7 +7,6 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.Mockito.spy; import io.opentelemetry.api.incubator.config.DeclarativeConfigException; import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; @@ -29,11 +28,11 @@ class ResourceFactoryTest { - private SpiHelper spiHelper = SpiHelper.create(ResourceFactoryTest.class.getClassLoader()); + private final DeclarativeConfigContext context = + new DeclarativeConfigContext(SpiHelper.create(ResourceFactoryTest.class.getClassLoader())); @Test void create() { - spiHelper = spy(spiHelper); assertThat( ResourceFactory.getInstance() .create( @@ -47,8 +46,7 @@ void create() { new AttributeNameValueModel() .withName("shape") .withValue("circle"))), - spiHelper, - Collections.emptyList())) + context)) .isEqualTo( Resource.getDefault().toBuilder() .put("shape", "circle") @@ -75,8 +73,7 @@ void createWithDetectors( .withAdditionalProperty("shape_color", null))) .withAttributes( new IncludeExcludeModel().withIncluded(included).withExcluded(excluded))); - Resource resource = - ResourceFactory.getInstance().create(resourceModel, spiHelper, Collections.emptyList()); + Resource resource = ResourceFactory.getInstance().create(resourceModel, context); assertThat(resource).isEqualTo(expectedResource); } @@ -148,8 +145,7 @@ private static Stream createWithDetectorsArgs() { @ParameterizedTest @MethodSource("createInvalidDetectorsArgs") void createWithDetectors_Invalid(ResourceModel model, String expectedMessage) { - assertThatThrownBy( - () -> ResourceFactory.getInstance().create(model, spiHelper, Collections.emptyList())) + assertThatThrownBy(() -> ResourceFactory.getInstance().create(model, context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage(expectedMessage); } diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SamplerFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SamplerFactoryTest.java index 2a2ee15630c..317091fbf19 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SamplerFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SamplerFactoryTest.java @@ -40,7 +40,8 @@ class SamplerFactoryTest { @RegisterExtension CleanupExtension cleanup = new CleanupExtension(); - private final SpiHelper spiHelper = SpiHelper.create(SamplerFactoryTest.class.getClassLoader()); + private final DeclarativeConfigContext context = + new DeclarativeConfigContext(SpiHelper.create(SamplerFactoryTest.class.getClassLoader())); @ParameterizedTest @MethodSource("createArguments") @@ -53,7 +54,7 @@ void create( List closeables = new ArrayList<>(); io.opentelemetry.sdk.trace.samplers.Sampler sampler = - SamplerFactory.getInstance().create(model, spiHelper, closeables); + SamplerFactory.getInstance().create(model, context); cleanup.addCloseables(closeables); assertThat(sampler.toString()).isEqualTo(expectedSampler.toString()); @@ -139,8 +140,7 @@ void create_SpiExporter_Unknown() { new SamplerModel() .withAdditionalProperty( "unknown_key", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>())) + context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage( "No component provider detected for io.opentelemetry.sdk.trace.samplers.Sampler with name \"unknown_key\"."); @@ -154,8 +154,7 @@ void create_SpiExporter_Valid() { .create( new SamplerModel() .withAdditionalProperty("test", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>()); + context); assertThat(sampler).isInstanceOf(SamplerComponentProvider.TestSampler.class); assertThat(((SamplerComponentProvider.TestSampler) sampler).config.getString("key1")) .isEqualTo("value1"); 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 e58fc076817..3bcd13c9731 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 @@ -68,6 +68,7 @@ class SpanExporterFactoryTest { private final SpiHelper spiHelper = spy(SpiHelper.create(SpanExporterFactoryTest.class.getClassLoader())); + private final DeclarativeConfigContext context = new DeclarativeConfigContext(spiHelper); private List> loadedComponentProviders = Collections.emptyList(); @BeforeEach @@ -102,10 +103,7 @@ void create_OtlpHttpDefaults() { SpanExporter exporter = SpanExporterFactory.getInstance() - .create( - new SpanExporterModel().withOtlpHttp(new OtlpHttpExporterModel()), - spiHelper, - closeables); + .create(new SpanExporterModel().withOtlpHttp(new OtlpHttpExporterModel()), context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -170,8 +168,7 @@ void create_OtlpHttpConfigured(@TempDir Path tempDir) .withCertificateFile(certificatePath) .withClientKeyFile(clientKeyPath) .withClientCertificateFile(clientCertificatePath)), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -211,10 +208,7 @@ void create_OtlpGrpcDefaults() { SpanExporter exporter = SpanExporterFactory.getInstance() - .create( - new SpanExporterModel().withOtlpGrpc(new OtlpGrpcExporterModel()), - spiHelper, - closeables); + .create(new SpanExporterModel().withOtlpGrpc(new OtlpGrpcExporterModel()), context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -278,8 +272,7 @@ void create_OtlpGrpcConfigured(@TempDir Path tempDir) .withCertificateFile(certificatePath) .withClientKeyFile(clientKeyPath) .withClientCertificateFile(clientCertificatePath)), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -319,10 +312,7 @@ void create_Console() { SpanExporter exporter = SpanExporterFactory.getInstance() - .create( - new SpanExporterModel().withConsole(new ConsoleExporterModel()), - spiHelper, - closeables); + .create(new SpanExporterModel().withConsole(new ConsoleExporterModel()), context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -338,10 +328,7 @@ void create_ZipkinDefaults() { SpanExporter exporter = SpanExporterFactory.getInstance() - .create( - new SpanExporterModel().withZipkin(new ZipkinSpanExporterModel()), - spiHelper, - closeables); + .create(new SpanExporterModel().withZipkin(new ZipkinSpanExporterModel()), context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -374,8 +361,7 @@ void create_ZipkinConfigured() { new ZipkinSpanExporterModel() .withEndpoint("http://zipkin:9411/v1/v2/spans") .withTimeout(15_000)), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -401,8 +387,7 @@ void create_OtlpFile() { .create( new SpanExporterModel() .withOtlpFileDevelopment(new ExperimentalOtlpFileExporterModel()), - spiHelper, - closeables); + context); cleanup.addCloseable(exporter); cleanup.addCloseables(closeables); @@ -426,8 +411,7 @@ void create_SpiExporter_Unknown() { new SpanExporterModel() .withAdditionalProperty( "unknown_key", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>())) + context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage( "No component provider detected for io.opentelemetry.sdk.trace.export.SpanExporter with name \"unknown_key\"."); @@ -441,8 +425,7 @@ void create_SpiExporter_Valid() { .create( new SpanExporterModel() .withAdditionalProperty("test", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>()); + context); assertThat(spanExporter).isInstanceOf(SpanExporterComponentProvider.TestSpanExporter.class); assertThat( ((SpanExporterComponentProvider.TestSpanExporter) spanExporter) diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanLimitsFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanLimitsFactoryTest.java index c6879ecc529..cfbec8b16eb 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanLimitsFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanLimitsFactoryTest.java @@ -8,10 +8,9 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static org.mockito.Mockito.mock; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AttributeLimitsModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanLimitsModel; -import java.util.Collections; +import io.opentelemetry.sdk.trace.SpanLimits; import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -21,33 +20,24 @@ class SpanLimitsFactoryTest { @ParameterizedTest @MethodSource("createArguments") - void create( - SpanLimitsAndAttributeLimits model, - io.opentelemetry.sdk.trace.SpanLimits expectedSpanLimits) { - assertThat( - SpanLimitsFactory.getInstance() - .create(model, mock(SpiHelper.class), Collections.emptyList())) + void create(SpanLimitsAndAttributeLimits model, SpanLimits expectedSpanLimits) { + assertThat(SpanLimitsFactory.getInstance().create(model, mock(DeclarativeConfigContext.class))) .isEqualTo(expectedSpanLimits); } private static Stream createArguments() { return Stream.of( - Arguments.of( - SpanLimitsAndAttributeLimits.create(null, null), - io.opentelemetry.sdk.trace.SpanLimits.getDefault()), + Arguments.of(SpanLimitsAndAttributeLimits.create(null, null), SpanLimits.getDefault()), Arguments.of( SpanLimitsAndAttributeLimits.create(new AttributeLimitsModel(), new SpanLimitsModel()), - io.opentelemetry.sdk.trace.SpanLimits.getDefault()), + SpanLimits.getDefault()), Arguments.of( SpanLimitsAndAttributeLimits.create( new AttributeLimitsModel() .withAttributeCountLimit(1) .withAttributeValueLengthLimit(2), new SpanLimitsModel()), - io.opentelemetry.sdk.trace.SpanLimits.builder() - .setMaxNumberOfAttributes(1) - .setMaxAttributeValueLength(2) - .build()), + SpanLimits.builder().setMaxNumberOfAttributes(1).setMaxAttributeValueLength(2).build()), Arguments.of( SpanLimitsAndAttributeLimits.create( new AttributeLimitsModel() @@ -60,7 +50,7 @@ private static Stream createArguments() { .withLinkCountLimit(6) .withEventAttributeCountLimit(7) .withLinkAttributeCountLimit(8)), - io.opentelemetry.sdk.trace.SpanLimits.builder() + SpanLimits.builder() .setMaxNumberOfAttributes(3) .setMaxAttributeValueLength(4) .setMaxNumberOfEvents(5) diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanProcessorFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanProcessorFactoryTest.java index bb828d61672..87e9bba97f6 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanProcessorFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SpanProcessorFactoryTest.java @@ -22,7 +22,6 @@ import java.io.Closeable; import java.time.Duration; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; @@ -32,8 +31,9 @@ class SpanProcessorFactoryTest { @RegisterExtension CleanupExtension cleanup = new CleanupExtension(); - private final SpiHelper spiHelper = - SpiHelper.create(SpanProcessorFactoryTest.class.getClassLoader()); + private final DeclarativeConfigContext context = + new DeclarativeConfigContext( + SpiHelper.create(SpanProcessorFactoryTest.class.getClassLoader())); @Test void create_BatchNullExporter() { @@ -41,9 +41,7 @@ void create_BatchNullExporter() { () -> SpanProcessorFactory.getInstance() .create( - new SpanProcessorModel().withBatch(new BatchSpanProcessorModel()), - spiHelper, - Collections.emptyList())) + new SpanProcessorModel().withBatch(new BatchSpanProcessorModel()), context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage("batch span processor exporter is required but is null"); } @@ -65,8 +63,7 @@ void create_BatchDefaults() { new BatchSpanProcessorModel() .withExporter( new SpanExporterModel().withOtlpHttp(new OtlpHttpExporterModel()))), - spiHelper, - closeables); + context); cleanup.addCloseable(processor); cleanup.addCloseables(closeables); @@ -96,8 +93,7 @@ void create_BatchConfigured() { .withScheduleDelay(1) .withMaxExportBatchSize(2) .withExportTimeout(3)), - spiHelper, - closeables); + context); cleanup.addCloseable(processor); cleanup.addCloseables(closeables); @@ -111,8 +107,7 @@ void create_SimpleNullExporter() { SpanProcessorFactory.getInstance() .create( new SpanProcessorModel().withSimple(new SimpleSpanProcessorModel()), - spiHelper, - Collections.emptyList())) + context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage("simple span processor exporter is required but is null"); } @@ -133,8 +128,7 @@ void create_SimpleConfigured() { new SimpleSpanProcessorModel() .withExporter( new SpanExporterModel().withOtlpHttp(new OtlpHttpExporterModel()))), - spiHelper, - closeables); + context); cleanup.addCloseable(processor); cleanup.addCloseables(closeables); @@ -150,8 +144,7 @@ void create_SpiProcessor_Unknown() { new SpanProcessorModel() .withAdditionalProperty( "unknown_key", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>())) + context)) .isInstanceOf(DeclarativeConfigException.class) .hasMessage( "No component provider detected for io.opentelemetry.sdk.trace.SpanProcessor with name \"unknown_key\"."); @@ -164,8 +157,7 @@ void create_SpiExporter_Valid() { .create( new SpanProcessorModel() .withAdditionalProperty("test", ImmutableMap.of("key1", "value1")), - spiHelper, - new ArrayList<>()); + context); assertThat(spanProcessor).isInstanceOf(SpanProcessorComponentProvider.TestSpanProcessor.class); Assertions.assertThat( ((SpanProcessorComponentProvider.TestSpanProcessor) spanProcessor) diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TracerProviderFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TracerProviderFactoryTest.java index 7d036b8e11c..d565b408baa 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TracerProviderFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/TracerProviderFactoryTest.java @@ -44,8 +44,9 @@ class TracerProviderFactoryTest { @RegisterExtension CleanupExtension cleanup = new CleanupExtension(); - private final SpiHelper spiHelper = - SpiHelper.create(TracerProviderFactoryTest.class.getClassLoader()); + private final DeclarativeConfigContext context = + new DeclarativeConfigContext( + SpiHelper.create(TracerProviderFactoryTest.class.getClassLoader())); @ParameterizedTest @MethodSource("createArguments") @@ -53,8 +54,7 @@ void create(TracerProviderAndAttributeLimits model, SdkTracerProvider expectedPr List closeables = new ArrayList<>(); cleanup.addCloseable(expectedProvider); - SdkTracerProvider provider = - TracerProviderFactory.getInstance().create(model, spiHelper, closeables).build(); + SdkTracerProvider provider = TracerProviderFactory.getInstance().create(model, context).build(); cleanup.addCloseable(provider); cleanup.addCloseables(closeables); diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ViewFactoryTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ViewFactoryTest.java index 15758cf65d5..825bc5e1f44 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ViewFactoryTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ViewFactoryTest.java @@ -8,14 +8,12 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat; import static org.mockito.Mockito.mock; -import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AggregationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExplicitBucketHistogramAggregationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.IncludeExcludeModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewStreamModel; import io.opentelemetry.sdk.metrics.View; import java.util.Arrays; -import java.util.Collections; import java.util.HashSet; import org.junit.jupiter.api.Test; @@ -29,8 +27,7 @@ void create_Defaults() { ViewFactory.getInstance() .create( new ViewStreamModel().withAttributeKeys(null), - mock(SpiHelper.class), - Collections.emptyList()); + mock(DeclarativeConfigContext.class)); assertThat(view.toString()).isEqualTo(expectedView.toString()); } @@ -60,8 +57,7 @@ void create() { .withExplicitBucketHistogram( new ExplicitBucketHistogramAggregationModel() .withBoundaries(Arrays.asList(1.0, 2.0)))), - mock(SpiHelper.class), - Collections.emptyList()); + mock(DeclarativeConfigContext.class)); assertThat(view.toString()).isEqualTo(expectedView.toString()); }