From 0db77eb839b0af1e7f32b0f7ced29e60edcce005 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 19 Jan 2026 17:39:47 +0100 Subject: [PATCH 1/4] feat: always return ExtendedOpenTelemetry when incubator is available --- .../DeclarativeConfigurationSpiTest.java | 27 ++-- .../AutoConfiguredOpenTelemetrySdkTest.java | 2 +- .../DeclarativeConfigurationTest.java | 23 ++-- .../OpenTelemetryConfigurationFactory.java | 9 +- .../OpenTelemetrySdkBuilderUtil.java | 34 +++++ .../fileconfig/SdkConfigProvider.java | 20 ++- ...OpenTelemetryConfigurationFactoryTest.java | 127 +++++++++--------- .../io/opentelemetry/sdk/IncubatingUtil.java | 57 ++++++++ .../sdk/OpenTelemetrySdkBuilder.java | 37 ++++- 9 files changed, 241 insertions(+), 95 deletions(-) create mode 100644 sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetrySdkBuilderUtil.java create mode 100644 sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java diff --git a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java index 85e79634b61..d9c52bd5eec 100644 --- a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java +++ b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java @@ -13,7 +13,7 @@ import io.opentelemetry.exporter.logging.LoggingSpanExporter; import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.sdk.OpenTelemetrySdk; -import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.extension.incubator.fileconfig.OpenTelemetrySdkBuilderUtil; import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; import io.opentelemetry.sdk.resources.Resource; @@ -28,17 +28,20 @@ class DeclarativeConfigurationSpiTest { @Test void configFromSpi() { - ExtendedOpenTelemetrySdk expectedSdk = - ExtendedOpenTelemetrySdk.create( - OpenTelemetrySdk.builder() - .setTracerProvider( - SdkTracerProvider.builder() - .setResource( - Resource.getDefault().toBuilder().put("service.name", "test").build()) - .addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create())) - .build()) - .build(), - SdkConfigProvider.create(new OpenTelemetryConfigurationModel())); + OpenTelemetrySdk expectedSdk = + OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( + OpenTelemetrySdk.builder() + .setTracerProvider( + SdkTracerProvider.builder() + .setResource( + Resource.getDefault().toBuilder() + .put("service.name", "test") + .build()) + .addSpanProcessor( + SimpleSpanProcessor.create(LoggingSpanExporter.create())) + .build()), + SdkConfigProvider.create(new OpenTelemetryConfigurationModel())) + .build(); cleanup.addCloseable(expectedSdk); AutoConfiguredOpenTelemetrySdkBuilder builder = spy(AutoConfiguredOpenTelemetrySdk.builder()); Thread thread = new Thread(); diff --git a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java index 6feacb1a889..ee313c33a61 100644 --- a/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java +++ b/sdk-extensions/autoconfigure/src/testFullConfig/java/io/opentelemetry/sdk/autoconfigure/AutoConfiguredOpenTelemetrySdkTest.java @@ -91,7 +91,7 @@ void globalOpenTelemetry_AutoConfigureEnabled() { private static OpenTelemetry unobfuscate(OpenTelemetry openTelemetry) { try { Field delegateField = - Class.forName("io.opentelemetry.api.GlobalOpenTelemetry$ObfuscatedOpenTelemetry") + Class.forName("io.opentelemetry.api.incubator.internal.ObfuscatedExtendedOpenTelemetry") .getDeclaredField("delegate"); delegateField.setAccessible(true); Object delegate = delegateField.get(openTelemetry); diff --git a/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java b/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java index 3eb7f3914c5..6bf280147c0 100644 --- a/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java +++ b/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java @@ -30,6 +30,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.extension.incubator.fileconfig.OpenTelemetrySdkBuilderUtil; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; @@ -122,16 +123,18 @@ void configFile_Valid() { OpenTelemetrySdk openTelemetrySdk = autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk(); Resource resource = Resource.getDefault().toBuilder().put("service.name", "test").build(); - ExtendedOpenTelemetrySdk expectedSdk = - ExtendedOpenTelemetrySdk.create( - OpenTelemetrySdk.builder() - .setTracerProvider( - SdkTracerProvider.builder() - .setResource(resource) - .addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create())) - .build()) - .build(), - ((ExtendedOpenTelemetrySdk) openTelemetrySdk).getSdkConfigProvider()); + OpenTelemetrySdk expectedSdk = + OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( + OpenTelemetrySdk.builder() + .setTracerProvider( + SdkTracerProvider.builder() + .setResource(resource) + .addSpanProcessor( + SimpleSpanProcessor.create(LoggingSpanExporter.create())) + .build()), + ((ExtendedOpenTelemetrySdk) openTelemetrySdk).getSdkConfigProvider()) + .build(); + cleanup.addCloseable(expectedSdk); assertThat(openTelemetrySdk.toString()).hasToString(expectedSdk.toString()); // AutoConfiguredOpenTelemetrySdk#getResource() is set to a dummy value when configuring from 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 a7d0a015bfd..023403648bb 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 @@ -34,7 +34,9 @@ public ExtendedOpenTelemetrySdk create( OpenTelemetryConfigurationModel model, DeclarativeConfigContext context) { SdkConfigProvider sdkConfigProvider = SdkConfigProvider.create(model, context.getSpiHelper().getComponentLoader()); - OpenTelemetrySdkBuilder builder = OpenTelemetrySdk.builder(); + OpenTelemetrySdkBuilder builder = + OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( + OpenTelemetrySdk.builder(), sdkConfigProvider); String fileFormat = model.getFileFormat(); if (fileFormat == null || !SUPPORTED_FILE_FORMATS.matcher(fileFormat).matches()) { throw new DeclarativeConfigException( @@ -44,7 +46,7 @@ public ExtendedOpenTelemetrySdk create( // behavior for experimental properties. if (Objects.equals(true, model.getDisabled())) { - return ExtendedOpenTelemetrySdk.create(builder.build(), sdkConfigProvider); + return (ExtendedOpenTelemetrySdk) builder.build(); } if (model.getPropagator() != null) { @@ -92,7 +94,6 @@ public ExtendedOpenTelemetrySdk create( .build())); } - OpenTelemetrySdk openTelemetrySdk = context.addCloseable(builder.build()); - return ExtendedOpenTelemetrySdk.create(openTelemetrySdk, sdkConfigProvider); + return (ExtendedOpenTelemetrySdk) context.addCloseable(builder.build()); } } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetrySdkBuilderUtil.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetrySdkBuilderUtil.java new file mode 100644 index 00000000000..c7c162d73ff --- /dev/null +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetrySdkBuilderUtil.java @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.extension.incubator.fileconfig; + +import io.opentelemetry.sdk.OpenTelemetrySdkBuilder; +import java.lang.reflect.Method; + +/** + * This class is internal and is hence not for public use. Its APIs are unstable and can change at + * any time. + */ +public final class OpenTelemetrySdkBuilderUtil { + + private OpenTelemetrySdkBuilderUtil() {} + + public static OpenTelemetrySdkBuilder setSdkConfigProvider( + OpenTelemetrySdkBuilder builder, SdkConfigProvider sdkConfigProvider) { + try { + Method method = + OpenTelemetrySdkBuilder.class.getDeclaredMethod("setSdkConfigProvider", Object.class); + method.setAccessible(true); + method.invoke(builder, sdkConfigProvider); + return builder; + } catch (NoSuchMethodException + | IllegalAccessException + | java.lang.reflect.InvocationTargetException e) { + throw new IllegalStateException( + "Error calling setSdkConfigProvider on OpenTelemetrySdkBuilder", e); + } + } +} diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java index cc1b3c2f3c1..32f4e9e98e2 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java @@ -19,10 +19,13 @@ public final class SdkConfigProvider implements ConfigProvider { private SdkConfigProvider( OpenTelemetryConfigurationModel model, ComponentLoader componentLoader) { - DeclarativeConfigProperties configProperties = - DeclarativeConfiguration.toConfigProperties(model, componentLoader); - this.instrumentationConfig = - configProperties.getStructured("instrumentation/development", empty()); + this( + DeclarativeConfiguration.toConfigProperties(model, componentLoader) + .getStructured("instrumentation/development", empty())); + } + + private SdkConfigProvider(DeclarativeConfigProperties instrumentationConfig) { + this.instrumentationConfig = instrumentationConfig; } /** @@ -47,6 +50,15 @@ public static SdkConfigProvider create( return new SdkConfigProvider(model, componentLoader); } + /** + * Create a no-op {@link SdkConfigProvider}. + * + * @return the no-op {@link SdkConfigProvider} + */ + public static SdkConfigProvider noop() { + return new SdkConfigProvider(DeclarativeConfigProperties.empty()); + } + @Override public DeclarativeConfigProperties getInstrumentationConfig() { return instrumentationConfig; 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 eefa575cc5e..45baa994861 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 @@ -123,9 +123,10 @@ void create_Defaults() { List closeables = new ArrayList<>(); OpenTelemetryConfigurationModel model = new OpenTelemetryConfigurationModel().withFileFormat("1.0-rc.1"); - ExtendedOpenTelemetrySdk expectedSdk = - ExtendedOpenTelemetrySdk.create( - OpenTelemetrySdk.builder().build(), SdkConfigProvider.create(model)); + OpenTelemetrySdk expectedSdk = + OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( + OpenTelemetrySdk.builder(), SdkConfigProvider.create(model)) + .build(); cleanup.addCloseable(expectedSdk); ExtendedOpenTelemetrySdk sdk = @@ -154,9 +155,10 @@ void create_Disabled() { .withExporter( new LogRecordExporterModel() .withOtlpHttp(new OtlpHttpExporterModel())))))); - ExtendedOpenTelemetrySdk expectedSdk = - ExtendedOpenTelemetrySdk.create( - OpenTelemetrySdk.builder().build(), SdkConfigProvider.create(model)); + OpenTelemetrySdk expectedSdk = + OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( + OpenTelemetrySdk.builder(), SdkConfigProvider.create(model)) + .build(); cleanup.addCloseable(expectedSdk); ExtendedOpenTelemetrySdk sdk = @@ -257,63 +259,64 @@ void create_Configured() throws NoSuchFieldException, IllegalAccessException { .withName("stream-name") .withAttributeKeys(null))))); - ExtendedOpenTelemetrySdk expectedSdk = - ExtendedOpenTelemetrySdk.create( - OpenTelemetrySdk.builder() - .setPropagators( - ContextPropagators.create( - TextMapPropagator.composite( - W3CTraceContextPropagator.getInstance(), - W3CBaggagePropagator.getInstance(), - OtTracePropagator.getInstance(), - B3Propagator.injectingMultiHeaders(), - B3Propagator.injectingSingleHeader(), - JaegerPropagator.getInstance()))) - .setLoggerProvider( - SdkLoggerProvider.builder() - .setResource(expectedResource) - .setLogLimits( - () -> - LogLimits.builder() - .setMaxAttributeValueLength(1) - .setMaxNumberOfAttributes(2) + OpenTelemetrySdk expectedSdk = + OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( + OpenTelemetrySdk.builder() + .setPropagators( + ContextPropagators.create( + TextMapPropagator.composite( + W3CTraceContextPropagator.getInstance(), + W3CBaggagePropagator.getInstance(), + OtTracePropagator.getInstance(), + B3Propagator.injectingMultiHeaders(), + B3Propagator.injectingSingleHeader(), + JaegerPropagator.getInstance()))) + .setLoggerProvider( + SdkLoggerProvider.builder() + .setResource(expectedResource) + .setLogLimits( + () -> + LogLimits.builder() + .setMaxAttributeValueLength(1) + .setMaxNumberOfAttributes(2) + .build()) + .addLogRecordProcessor( + io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor.builder( + OtlpHttpLogRecordExporter.getDefault()) + .build()) + .build()) + .setTracerProvider( + SdkTracerProvider.builder() + .setResource(expectedResource) + .setSpanLimits( + SpanLimits.builder() + .setMaxNumberOfAttributes(1) + .setMaxAttributeValueLength(2) + .setMaxNumberOfEvents(3) + .setMaxNumberOfLinks(4) + .setMaxNumberOfAttributesPerEvent(5) + .setMaxNumberOfAttributesPerLink(6) + .build()) + .setSampler(alwaysOn()) + .addSpanProcessor( + io.opentelemetry.sdk.trace.export.BatchSpanProcessor.builder( + OtlpHttpSpanExporter.getDefault()) .build()) - .addLogRecordProcessor( - io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor.builder( - OtlpHttpLogRecordExporter.getDefault()) - .build()) - .build()) - .setTracerProvider( - SdkTracerProvider.builder() - .setResource(expectedResource) - .setSpanLimits( - SpanLimits.builder() - .setMaxNumberOfAttributes(1) - .setMaxAttributeValueLength(2) - .setMaxNumberOfEvents(3) - .setMaxNumberOfLinks(4) - .setMaxNumberOfAttributesPerEvent(5) - .setMaxNumberOfAttributesPerLink(6) - .build()) - .setSampler(alwaysOn()) - .addSpanProcessor( - io.opentelemetry.sdk.trace.export.BatchSpanProcessor.builder( - OtlpHttpSpanExporter.getDefault()) - .build()) - .build()) - .setMeterProvider( - SdkMeterProvider.builder() - .setResource(expectedResource) - .registerMetricReader( - io.opentelemetry.sdk.metrics.export.PeriodicMetricReader.builder( - OtlpHttpMetricExporter.getDefault()) - .build()) - .registerView( - InstrumentSelector.builder().setName("instrument-name").build(), - View.builder().setName("stream-name").build()) - .build()) - .build(), - SdkConfigProvider.create(model)); + .build()) + .setMeterProvider( + SdkMeterProvider.builder() + .setResource(expectedResource) + .registerMetricReader( + io.opentelemetry.sdk.metrics.export.PeriodicMetricReader.builder( + OtlpHttpMetricExporter.getDefault()) + .build()) + .registerView( + InstrumentSelector.builder().setName("instrument-name").build(), + View.builder().setName("stream-name").build()) + .build()), + SdkConfigProvider.create(model)) + .build(); + cleanup.addCloseable(expectedSdk); ExtendedOpenTelemetrySdk sdk = diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java b/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java new file mode 100644 index 00000000000..8694b045d3f --- /dev/null +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java @@ -0,0 +1,57 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * Utilities for interacting with incubating components ({@code + * io.opentelemetry:opentelemetry-api-incubator} and {@code + * io.opentelemetry:opentelemetry-sdk-extension-incubator}), which are not guaranteed to be present + * on the classpath. For all methods, callers MUST first separately reflectively confirm that the + * incubator is available on the classpath. + */ +final class IncubatingUtil { + + private IncubatingUtil() {} + + static Object noopSdkConfigProvider() { + try { + Class sdkConfigProviderClass = + Class.forName("io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider"); + Method defaultProviderMethod = sdkConfigProviderClass.getMethod("noop"); + return defaultProviderMethod.invoke(null); + } catch (ClassNotFoundException + | NoSuchMethodException + | IllegalAccessException + | InvocationTargetException e) { + throw new IllegalStateException( + "Failed to create default SdkConfigProvider from incubator", e); + } + } + + static OpenTelemetrySdk createExtendedOpenTelemetrySdk( + OpenTelemetrySdk openTelemetrySdk, Object sdkConfigProvider) { + try { + Class extendedSdkClass = + Class.forName("io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk"); + Class sdkConfigProviderClass = + Class.forName("io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider"); + Method createMethod = + extendedSdkClass.getMethod("create", OpenTelemetrySdk.class, sdkConfigProviderClass); + return (OpenTelemetrySdk) + createMethod.invoke( + null, openTelemetrySdk, sdkConfigProviderClass.cast(sdkConfigProvider)); + } catch (ClassNotFoundException + | NoSuchMethodException + | IllegalAccessException + | InvocationTargetException e) { + throw new IllegalStateException( + "Failed to create ExtendedOpenTelemetrySdk from incubator", e); + } + } +} diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java b/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java index f8f079acd6e..eaed7ff27e2 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java @@ -5,6 +5,8 @@ package io.opentelemetry.sdk; +import static java.util.Objects.requireNonNull; + import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.sdk.logs.SdkLoggerProvider; @@ -22,6 +24,26 @@ public final class OpenTelemetrySdkBuilder { @Nullable private SdkMeterProvider meterProvider; @Nullable private SdkLoggerProvider loggerProvider; + @Nullable + private Object sdkConfigProvider = + INCUBATOR_AVAILABLE ? IncubatingUtil.noopSdkConfigProvider() : null; + + private static final boolean INCUBATOR_AVAILABLE; + + static { + boolean incubatorAvailable = false; + try { + Class.forName( + "io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider", + false, + OpenTelemetrySdkBuilder.class.getClassLoader()); + incubatorAvailable = true; + } catch (ClassNotFoundException e) { + // Not available + } + INCUBATOR_AVAILABLE = incubatorAvailable; + } + /** * Package protected to disallow direct initialization. * @@ -66,7 +88,13 @@ public OpenTelemetrySdkBuilder setLoggerProvider(SdkLoggerProvider loggerProvide /** Sets the {@link ContextPropagators} to use. */ public OpenTelemetrySdkBuilder setPropagators(ContextPropagators propagators) { - this.propagators = propagators; + this.propagators = requireNonNull(propagators); + return this; + } + + // called via reflection from incubator module + OpenTelemetrySdkBuilder setSdkConfigProvider(Object sdkConfigProvider) { + this.sdkConfigProvider = requireNonNull(sdkConfigProvider); return this; } @@ -111,6 +139,11 @@ public OpenTelemetrySdk build() { loggerProvider = SdkLoggerProvider.builder().build(); } - return new OpenTelemetrySdk(tracerProvider, meterProvider, loggerProvider, propagators); + OpenTelemetrySdk openTelemetrySdk = + new OpenTelemetrySdk(tracerProvider, meterProvider, loggerProvider, propagators); + return INCUBATOR_AVAILABLE + ? IncubatingUtil.createExtendedOpenTelemetrySdk( + openTelemetrySdk, requireNonNull(sdkConfigProvider)) + : openTelemetrySdk; } } From 495f2af302c2d2341064418ec79a9ed9746b5819 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 19 Jan 2026 18:11:25 +0100 Subject: [PATCH 2/4] feat: always return ExtendedOpenTelemetry when incubator is available --- .../sdk/extension/incubator/fileconfig/SdkConfigProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java index 32f4e9e98e2..65b3876c05a 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java @@ -55,7 +55,7 @@ public static SdkConfigProvider create( * * @return the no-op {@link SdkConfigProvider} */ - public static SdkConfigProvider noop() { + public static ConfigProvider noop() { return new SdkConfigProvider(DeclarativeConfigProperties.empty()); } From e78ae70c6b2709b48e6bb1a83ec626a20af78b63 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Thu, 22 Jan 2026 12:59:24 -0600 Subject: [PATCH 3/4] Move SdkConfigProvider, ExtendedOpenTelemetrySdk to opentelemetry-sdk --- .../incubator/ExtendedOpenTelemetryTest.java | 16 ++--- .../config/InstrumentationConfigUtilTest.java | 10 ++- .../InstrumentationConfigUtilTest.java | 12 ++-- .../DeclarativeConfigurationSpiTest.java | 10 +-- .../DeclarativeConfigurationTest.java | 6 +- .../fileconfig/DeclarativeConfiguration.java | 2 +- .../OpenTelemetryConfigurationFactory.java | 13 ++-- .../OpenTelemetrySdkBuilderUtil.java | 34 --------- .../fileconfig/SdkConfigProvider.java | 71 ------------------- .../DeclarativeConfigurationCreateTest.java | 2 +- ...OpenTelemetryConfigurationFactoryTest.java | 18 +++-- sdk/all/build.gradle.kts | 2 + .../io/opentelemetry/sdk/IncubatingUtil.java | 53 ++++---------- .../sdk/OpenTelemetrySdkBuilder.java | 26 +++---- .../all}/ExtendedOpenTelemetrySdk.java | 14 ++-- .../all/OpenTelemetrySdkBuilderUtil.java | 41 +++++++++++ .../sdk/internal/all/SdkConfigProvider.java | 46 ++++++++++++ 17 files changed, 173 insertions(+), 203 deletions(-) delete mode 100644 sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetrySdkBuilderUtil.java delete mode 100644 sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java rename {sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator => sdk/all/src/main/java/io/opentelemetry/sdk/internal/all}/ExtendedOpenTelemetrySdk.java (86%) create mode 100644 sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/OpenTelemetrySdkBuilderUtil.java create mode 100644 sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/SdkConfigProvider.java diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java index b8ff8ce9289..f3caf5143e8 100644 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java +++ b/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java @@ -12,6 +12,7 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.incubator.config.ConfigProvider; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.logs.ExtendedDefaultLoggerProvider; import io.opentelemetry.api.incubator.logs.ExtendedLogger; import io.opentelemetry.api.incubator.metrics.ExtendedDefaultMeterProvider; @@ -24,10 +25,9 @@ import io.opentelemetry.api.trace.TracerProvider; import io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.sdk.OpenTelemetrySdk; -import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration; -import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider; -import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; +import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.all.SdkConfigProvider; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import java.util.Arrays; @@ -67,7 +67,7 @@ void globalOpenTelemetry() { GlobalOpenTelemetry.set( ExtendedOpenTelemetrySdk.create( OpenTelemetrySdk.builder().build(), - SdkConfigProvider.create(new OpenTelemetryConfigurationModel()))); + SdkConfigProvider.create(DeclarativeConfigProperties.empty()))); assertThat(GlobalOpenTelemetry.get()).isInstanceOf(ExtendedOpenTelemetry.class); } @@ -92,10 +92,10 @@ void instrumentationConfig() { + " example:\n" + " property: \"value\""; - OpenTelemetryConfigurationModel configuration = - DeclarativeConfiguration.parse( - new ByteArrayInputStream(configYaml.getBytes(StandardCharsets.UTF_8))); - SdkConfigProvider configProvider = SdkConfigProvider.create(configuration); + SdkConfigProvider configProvider = + SdkConfigProvider.create( + DeclarativeConfiguration.toConfigProperties( + new ByteArrayInputStream(configYaml.getBytes(StandardCharsets.UTF_8)))); ExtendedOpenTelemetry openTelemetry = ExtendedOpenTelemetrySdk.create(OpenTelemetrySdk.builder().build(), configProvider); diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java index 67f454bd29a..77bd48746d6 100644 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java +++ b/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java @@ -9,9 +9,8 @@ import com.google.common.collect.ImmutableMap; import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration; -import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider; import io.opentelemetry.sdk.extension.incubator.fileconfig.YamlDeclarativeConfigProperties; -import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; +import io.opentelemetry.sdk.internal.all.SdkConfigProvider; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import java.util.Arrays; @@ -61,10 +60,9 @@ class InstrumentationConfigUtilTest { toConfigProvider("instrumentation/development:\n general:\n http:\n"); private static ConfigProvider toConfigProvider(String configYaml) { - OpenTelemetryConfigurationModel configuration = - DeclarativeConfiguration.parse( - new ByteArrayInputStream(configYaml.getBytes(StandardCharsets.UTF_8))); - return SdkConfigProvider.create(configuration); + return SdkConfigProvider.create( + DeclarativeConfiguration.toConfigProperties( + new ByteArrayInputStream(configYaml.getBytes(StandardCharsets.UTF_8)))); } @Test diff --git a/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java b/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java index f4c3ca3353a..060247bcef3 100644 --- a/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java +++ b/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java @@ -15,11 +15,11 @@ import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.api.incubator.config.InstrumentationConfigUtil; import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration; -import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalInstrumentationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationPropertyModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; +import io.opentelemetry.sdk.internal.all.SdkConfigProvider; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import java.util.Arrays; @@ -130,11 +130,13 @@ private static ConfigProvider withInstrumentationConfig( ExperimentalLanguageSpecificInstrumentationModel javaConfig = new ExperimentalLanguageSpecificInstrumentationModel(); javaConfig.setAdditionalProperty(instrumentationName, instrumentationConfig); + DeclarativeConfigProperties modelProperties = + DeclarativeConfiguration.toConfigProperties( + new OpenTelemetryConfigurationModel() + .withInstrumentationDevelopment( + new ExperimentalInstrumentationModel().withJava(javaConfig))); - return SdkConfigProvider.create( - new OpenTelemetryConfigurationModel() - .withInstrumentationDevelopment( - new ExperimentalInstrumentationModel().withJava(javaConfig))); + return SdkConfigProvider.create(modelProperties); } private static class Model { diff --git a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java index d9c52bd5eec..53581519ef4 100644 --- a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java +++ b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java @@ -10,12 +10,12 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.exporter.logging.LoggingSpanExporter; import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.sdk.OpenTelemetrySdk; -import io.opentelemetry.sdk.extension.incubator.fileconfig.OpenTelemetrySdkBuilderUtil; -import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider; -import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; +import io.opentelemetry.sdk.internal.all.OpenTelemetrySdkBuilderUtil; +import io.opentelemetry.sdk.internal.all.SdkConfigProvider; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; @@ -29,7 +29,7 @@ class DeclarativeConfigurationSpiTest { @Test void configFromSpi() { OpenTelemetrySdk expectedSdk = - OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( + OpenTelemetrySdkBuilderUtil.setConfigProvider( OpenTelemetrySdk.builder() .setTracerProvider( SdkTracerProvider.builder() @@ -40,7 +40,7 @@ void configFromSpi() { .addSpanProcessor( SimpleSpanProcessor.create(LoggingSpanExporter.create())) .build()), - SdkConfigProvider.create(new OpenTelemetryConfigurationModel())) + SdkConfigProvider.create(DeclarativeConfigProperties.empty())) .build(); cleanup.addCloseable(expectedSdk); AutoConfiguredOpenTelemetrySdkBuilder builder = spy(AutoConfiguredOpenTelemetrySdk.builder()); diff --git a/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java b/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java index 6bf280147c0..7e6cd4aef78 100644 --- a/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java +++ b/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java @@ -29,8 +29,8 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; -import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; -import io.opentelemetry.sdk.extension.incubator.fileconfig.OpenTelemetrySdkBuilderUtil; +import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.all.OpenTelemetrySdkBuilderUtil; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; @@ -124,7 +124,7 @@ void configFile_Valid() { OpenTelemetrySdk openTelemetrySdk = autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk(); Resource resource = Resource.getDefault().toBuilder().put("service.name", "test").build(); OpenTelemetrySdk expectedSdk = - OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( + OpenTelemetrySdkBuilderUtil.setConfigProvider( OpenTelemetrySdk.builder() .setTracerProvider( SdkTracerProvider.builder() 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 7a643630c7b..365ece18f8d 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 @@ -16,9 +16,9 @@ import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener; import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; -import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SamplerModel; +import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.trace.samplers.Sampler; import java.io.Closeable; import java.io.IOException; 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 023403648bb..c6cd3cb24e4 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 @@ -6,10 +6,13 @@ 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.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdkBuilder; -import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; +import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.all.OpenTelemetrySdkBuilderUtil; +import io.opentelemetry.sdk.internal.all.SdkConfigProvider; import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.opentelemetry.sdk.resources.Resource; import java.util.Objects; @@ -32,10 +35,12 @@ static OpenTelemetryConfigurationFactory getInstance() { @Override public ExtendedOpenTelemetrySdk create( OpenTelemetryConfigurationModel model, DeclarativeConfigContext context) { - SdkConfigProvider sdkConfigProvider = - SdkConfigProvider.create(model, context.getSpiHelper().getComponentLoader()); + DeclarativeConfigProperties modelProperties = + DeclarativeConfiguration.toConfigProperties( + model, context.getSpiHelper().getComponentLoader()); + SdkConfigProvider sdkConfigProvider = SdkConfigProvider.create(modelProperties); OpenTelemetrySdkBuilder builder = - OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( + OpenTelemetrySdkBuilderUtil.setConfigProvider( OpenTelemetrySdk.builder(), sdkConfigProvider); String fileFormat = model.getFileFormat(); if (fileFormat == null || !SUPPORTED_FILE_FORMATS.matcher(fileFormat).matches()) { diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetrySdkBuilderUtil.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetrySdkBuilderUtil.java deleted file mode 100644 index c7c162d73ff..00000000000 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/OpenTelemetrySdkBuilderUtil.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.incubator.fileconfig; - -import io.opentelemetry.sdk.OpenTelemetrySdkBuilder; -import java.lang.reflect.Method; - -/** - * This class is internal and is hence not for public use. Its APIs are unstable and can change at - * any time. - */ -public final class OpenTelemetrySdkBuilderUtil { - - private OpenTelemetrySdkBuilderUtil() {} - - public static OpenTelemetrySdkBuilder setSdkConfigProvider( - OpenTelemetrySdkBuilder builder, SdkConfigProvider sdkConfigProvider) { - try { - Method method = - OpenTelemetrySdkBuilder.class.getDeclaredMethod("setSdkConfigProvider", Object.class); - method.setAccessible(true); - method.invoke(builder, sdkConfigProvider); - return builder; - } catch (NoSuchMethodException - | IllegalAccessException - | java.lang.reflect.InvocationTargetException e) { - throw new IllegalStateException( - "Error calling setSdkConfigProvider on OpenTelemetrySdkBuilder", e); - } - } -} diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java deleted file mode 100644 index 65b3876c05a..00000000000 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.sdk.extension.incubator.fileconfig; - -import static io.opentelemetry.api.incubator.config.DeclarativeConfigProperties.empty; - -import io.opentelemetry.api.incubator.config.ConfigProvider; -import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.common.ComponentLoader; -import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; - -/** SDK implementation of {@link ConfigProvider}. */ -public final class SdkConfigProvider implements ConfigProvider { - - private final DeclarativeConfigProperties instrumentationConfig; - - private SdkConfigProvider( - OpenTelemetryConfigurationModel model, ComponentLoader componentLoader) { - this( - DeclarativeConfiguration.toConfigProperties(model, componentLoader) - .getStructured("instrumentation/development", empty())); - } - - private SdkConfigProvider(DeclarativeConfigProperties instrumentationConfig) { - this.instrumentationConfig = instrumentationConfig; - } - - /** - * Create a {@link SdkConfigProvider} from the {@code model}. - * - * @param model the configuration model - * @return the {@link SdkConfigProvider} - */ - public static SdkConfigProvider create(OpenTelemetryConfigurationModel model) { - return create(model, ComponentLoader.forClassLoader(SdkConfigProvider.class.getClassLoader())); - } - - /** - * Create a {@link SdkConfigProvider} from the {@code model}. - * - * @param model the configuration model - * @param componentLoader the component loader used to load SPIs - * @return the {@link SdkConfigProvider} - */ - public static SdkConfigProvider create( - OpenTelemetryConfigurationModel model, ComponentLoader componentLoader) { - return new SdkConfigProvider(model, componentLoader); - } - - /** - * Create a no-op {@link SdkConfigProvider}. - * - * @return the no-op {@link SdkConfigProvider} - */ - public static ConfigProvider noop() { - return new SdkConfigProvider(DeclarativeConfigProperties.empty()); - } - - @Override - public DeclarativeConfigProperties getInstrumentationConfig() { - return instrumentationConfig; - } - - @Override - public String toString() { - return "SdkConfigProvider{" + "instrumentationConfig=" + instrumentationConfig + '}'; - } -} diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java index 2efc5265f75..4bed87dcf6f 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java @@ -20,10 +20,10 @@ import io.opentelemetry.internal.testing.slf4j.SuppressLogger; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; -import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanProcessorModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel; +import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.trace.samplers.ParentBasedSamplerBuilder; import java.io.ByteArrayInputStream; import java.io.File; 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 45baa994861..9c28eb6651f 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 @@ -24,7 +24,6 @@ import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper; -import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AlwaysOnSamplerModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.AttributeNameValueModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.BatchLogRecordProcessorModel; @@ -53,6 +52,9 @@ import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewSelectorModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewStreamModel; +import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.all.OpenTelemetrySdkBuilderUtil; +import io.opentelemetry.sdk.internal.all.SdkConfigProvider; import io.opentelemetry.sdk.logs.LogLimits; import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.metrics.InstrumentSelector; @@ -124,8 +126,9 @@ void create_Defaults() { OpenTelemetryConfigurationModel model = new OpenTelemetryConfigurationModel().withFileFormat("1.0-rc.1"); OpenTelemetrySdk expectedSdk = - OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( - OpenTelemetrySdk.builder(), SdkConfigProvider.create(model)) + OpenTelemetrySdkBuilderUtil.setConfigProvider( + OpenTelemetrySdk.builder(), + SdkConfigProvider.create(DeclarativeConfiguration.toConfigProperties(model))) .build(); cleanup.addCloseable(expectedSdk); @@ -156,8 +159,9 @@ void create_Disabled() { new LogRecordExporterModel() .withOtlpHttp(new OtlpHttpExporterModel())))))); OpenTelemetrySdk expectedSdk = - OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( - OpenTelemetrySdk.builder(), SdkConfigProvider.create(model)) + OpenTelemetrySdkBuilderUtil.setConfigProvider( + OpenTelemetrySdk.builder(), + SdkConfigProvider.create(DeclarativeConfiguration.toConfigProperties(model))) .build(); cleanup.addCloseable(expectedSdk); @@ -260,7 +264,7 @@ void create_Configured() throws NoSuchFieldException, IllegalAccessException { .withAttributeKeys(null))))); OpenTelemetrySdk expectedSdk = - OpenTelemetrySdkBuilderUtil.setSdkConfigProvider( + OpenTelemetrySdkBuilderUtil.setConfigProvider( OpenTelemetrySdk.builder() .setPropagators( ContextPropagators.create( @@ -314,7 +318,7 @@ void create_Configured() throws NoSuchFieldException, IllegalAccessException { InstrumentSelector.builder().setName("instrument-name").build(), View.builder().setName("stream-name").build()) .build()), - SdkConfigProvider.create(model)) + SdkConfigProvider.create(DeclarativeConfiguration.toConfigProperties(model))) .build(); cleanup.addCloseable(expectedSdk); diff --git a/sdk/all/build.gradle.kts b/sdk/all/build.gradle.kts index 88d18b78ac7..e6ceffa6dbe 100644 --- a/sdk/all/build.gradle.kts +++ b/sdk/all/build.gradle.kts @@ -17,6 +17,8 @@ dependencies { api(project(":sdk:metrics")) api(project(":sdk:logs")) + compileOnly(project(":api:incubator")) + annotationProcessor("com.google.auto.value:auto-value") testAnnotationProcessor("com.google.auto.value:auto-value") diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java b/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java index 8694b045d3f..f844fe335ce 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java @@ -5,53 +5,26 @@ package io.opentelemetry.sdk; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; +import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.all.SdkConfigProvider; +import javax.annotation.Nullable; /** - * Utilities for interacting with incubating components ({@code - * io.opentelemetry:opentelemetry-api-incubator} and {@code - * io.opentelemetry:opentelemetry-sdk-extension-incubator}), which are not guaranteed to be present - * on the classpath. For all methods, callers MUST first separately reflectively confirm that the - * incubator is available on the classpath. + * Utilities for interacting with {@code io.opentelemetry:opentelemetry-api-incubator}, which is not + * guaranteed to be present on the classpath. For all methods, callers MUST first separately + * reflectively confirm that the incubator is available on the classpath. */ final class IncubatingUtil { private IncubatingUtil() {} - static Object noopSdkConfigProvider() { - try { - Class sdkConfigProviderClass = - Class.forName("io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider"); - Method defaultProviderMethod = sdkConfigProviderClass.getMethod("noop"); - return defaultProviderMethod.invoke(null); - } catch (ClassNotFoundException - | NoSuchMethodException - | IllegalAccessException - | InvocationTargetException e) { - throw new IllegalStateException( - "Failed to create default SdkConfigProvider from incubator", e); - } - } - static OpenTelemetrySdk createExtendedOpenTelemetrySdk( - OpenTelemetrySdk openTelemetrySdk, Object sdkConfigProvider) { - try { - Class extendedSdkClass = - Class.forName("io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk"); - Class sdkConfigProviderClass = - Class.forName("io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider"); - Method createMethod = - extendedSdkClass.getMethod("create", OpenTelemetrySdk.class, sdkConfigProviderClass); - return (OpenTelemetrySdk) - createMethod.invoke( - null, openTelemetrySdk, sdkConfigProviderClass.cast(sdkConfigProvider)); - } catch (ClassNotFoundException - | NoSuchMethodException - | IllegalAccessException - | InvocationTargetException e) { - throw new IllegalStateException( - "Failed to create ExtendedOpenTelemetrySdk from incubator", e); - } + OpenTelemetrySdk openTelemetrySdk, @Nullable Object sdkConfigProvider) { + SdkConfigProvider resolvedConfigProvider = + sdkConfigProvider == null + ? SdkConfigProvider.create(DeclarativeConfigProperties.empty()) + : (SdkConfigProvider) sdkConfigProvider; + return ExtendedOpenTelemetrySdk.create(openTelemetrySdk, resolvedConfigProvider); } } diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java b/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java index eaed7ff27e2..10e06df90c3 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java @@ -9,6 +9,8 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.context.propagation.ContextPropagators; +import io.opentelemetry.sdk.internal.all.OpenTelemetrySdkBuilderUtil; +import io.opentelemetry.sdk.internal.all.SdkConfigProvider; import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder; import io.opentelemetry.sdk.metrics.SdkMeterProvider; @@ -23,20 +25,14 @@ public final class OpenTelemetrySdkBuilder { @Nullable private SdkTracerProvider tracerProvider; @Nullable private SdkMeterProvider meterProvider; @Nullable private SdkLoggerProvider loggerProvider; - - @Nullable - private Object sdkConfigProvider = - INCUBATOR_AVAILABLE ? IncubatingUtil.noopSdkConfigProvider() : null; + @Nullable private Object configProvider; private static final boolean INCUBATOR_AVAILABLE; static { boolean incubatorAvailable = false; try { - Class.forName( - "io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider", - false, - OpenTelemetrySdkBuilder.class.getClassLoader()); + Class.forName("io.opentelemetry.api.incubator.ExtendedOpenTelemetry"); incubatorAvailable = true; } catch (ClassNotFoundException e) { // Not available @@ -92,9 +88,14 @@ public OpenTelemetrySdkBuilder setPropagators(ContextPropagators propagators) { return this; } - // called via reflection from incubator module - OpenTelemetrySdkBuilder setSdkConfigProvider(Object sdkConfigProvider) { - this.sdkConfigProvider = requireNonNull(sdkConfigProvider); + /** + * Sets the {@link SdkConfigProvider} to use. + * + *

This method is experimental so not public. You may reflectively call it using {@link + * OpenTelemetrySdkBuilderUtil#setConfigProvider(OpenTelemetrySdkBuilder, SdkConfigProvider)}. + */ + OpenTelemetrySdkBuilder setConfigProvider(SdkConfigProvider configProvider) { + this.configProvider = requireNonNull(configProvider); return this; } @@ -142,8 +143,7 @@ public OpenTelemetrySdk build() { OpenTelemetrySdk openTelemetrySdk = new OpenTelemetrySdk(tracerProvider, meterProvider, loggerProvider, propagators); return INCUBATOR_AVAILABLE - ? IncubatingUtil.createExtendedOpenTelemetrySdk( - openTelemetrySdk, requireNonNull(sdkConfigProvider)) + ? IncubatingUtil.createExtendedOpenTelemetrySdk(openTelemetrySdk, configProvider) : openTelemetrySdk; } } diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/ExtendedOpenTelemetrySdk.java similarity index 86% rename from sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java rename to sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/ExtendedOpenTelemetrySdk.java index f7f838e04cc..330b5dcead9 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/ExtendedOpenTelemetrySdk.java @@ -3,19 +3,23 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.sdk.extension.incubator; +package io.opentelemetry.sdk.internal.all; import io.opentelemetry.api.incubator.ExtendedOpenTelemetry; import io.opentelemetry.api.incubator.config.ConfigProvider; import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.sdk.OpenTelemetrySdk; -import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider; -import java.io.Closeable; import javax.annotation.concurrent.ThreadSafe; -/** A new interface for creating OpenTelemetrySdk that supports getting {@link ConfigProvider}. */ +/** + * {@link ExtendedOpenTelemetrySdk} is SDK implementation of {@link ExtendedOpenTelemetry}. + * + *

This class is internal and experimental. Its APIs are unstable and can change at any time. Its + * APIs (or a version of them) may be promoted to the public stable API in the future, but no + * guarantees are made. + */ public final class ExtendedOpenTelemetrySdk extends OpenTelemetrySdk - implements ExtendedOpenTelemetry, Closeable { + implements ExtendedOpenTelemetry { private final OpenTelemetrySdk openTelemetrySdk; private final ObfuscatedConfigProvider configProvider; diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/OpenTelemetrySdkBuilderUtil.java b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/OpenTelemetrySdkBuilderUtil.java new file mode 100644 index 00000000000..18af6273c31 --- /dev/null +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/OpenTelemetrySdkBuilderUtil.java @@ -0,0 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.internal.all; + +import io.opentelemetry.sdk.OpenTelemetrySdkBuilder; +import io.opentelemetry.sdk.internal.ScopeConfigurator; +import io.opentelemetry.sdk.trace.SdkTracerProvider; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * A collection of methods that allow use of experimental features prior to availability in public + * APIs. + * + *

This class is internal and experimental. Its APIs are unstable and can change at any time. Its + * APIs (or a version of them) may be promoted to the public stable API in the future, but no + * guarantees are made. + */ +public final class OpenTelemetrySdkBuilderUtil { + + private OpenTelemetrySdkBuilderUtil() {} + + /** Reflectively set the {@link ScopeConfigurator} to the {@link SdkTracerProvider}. */ + public static OpenTelemetrySdkBuilder setConfigProvider( + OpenTelemetrySdkBuilder builder, SdkConfigProvider configProvider) { + try { + Method method = + OpenTelemetrySdkBuilder.class.getDeclaredMethod( + "setConfigProvider", SdkConfigProvider.class); + method.setAccessible(true); + method.invoke(builder, configProvider); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException( + "Error calling setConfigProvider on OpenTelemetrySdkBuilder", e); + } + return builder; + } +} diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/SdkConfigProvider.java b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/SdkConfigProvider.java new file mode 100644 index 00000000000..36964683abd --- /dev/null +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/SdkConfigProvider.java @@ -0,0 +1,46 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.sdk.internal.all; + +import io.opentelemetry.api.incubator.config.ConfigProvider; +import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; + +/** + * SDK implementation of {@link ConfigProvider}. + * + *

This class is internal and experimental. Its APIs are unstable and can change at any time. Its + * APIs (or a version of them) may be promoted to the public stable API in the future, but no + * guarantees are made. + */ +public final class SdkConfigProvider implements ConfigProvider { + + private final DeclarativeConfigProperties instrumentationConfig; + + private SdkConfigProvider(DeclarativeConfigProperties openTelemetryConfigModel) { + this.instrumentationConfig = openTelemetryConfigModel.get("instrumentation/development"); + } + + /** + * Create a {@link SdkConfigProvider}. + * + * @param openTelemetryConfigModel {@link DeclarativeConfigProperties} corresponding to the {@code + * OpenTelemetryConfiguration} type, i.e. the root node. + * @return the {@link SdkConfigProvider} instance + */ + public static SdkConfigProvider create(DeclarativeConfigProperties openTelemetryConfigModel) { + return new SdkConfigProvider(openTelemetryConfigModel); + } + + @Override + public DeclarativeConfigProperties getInstrumentationConfig() { + return instrumentationConfig; + } + + @Override + public String toString() { + return "SdkConfigProvider{" + "instrumentationConfig=" + instrumentationConfig + '}'; + } +} From c90b809191e627a86ec82e208dfd462423732d98 Mon Sep 17 00:00:00 2001 From: Jack Berg Date: Mon, 26 Jan 2026 10:51:50 -0600 Subject: [PATCH 4/4] opentelemetry-sdk internal package to io.opentelemetry.sdk.internal --- .../api/incubator/ExtendedOpenTelemetryTest.java | 4 ++-- .../api/incubator/config/InstrumentationConfigUtilTest.java | 2 +- .../api/incubator/InstrumentationConfigUtilTest.java | 2 +- .../sdk/autoconfigure/DeclarativeConfigurationSpiTest.java | 4 ++-- .../sdk/autoconfigure/DeclarativeConfigurationTest.java | 4 ++-- .../incubator/fileconfig/DeclarativeConfiguration.java | 2 +- .../fileconfig/OpenTelemetryConfigurationFactory.java | 6 +++--- .../fileconfig/DeclarativeConfigurationCreateTest.java | 2 +- .../fileconfig/OpenTelemetryConfigurationFactoryTest.java | 6 +++--- .../src/main/java/io/opentelemetry/sdk/IncubatingUtil.java | 4 ++-- .../java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java | 4 ++-- .../sdk/internal/{all => }/ExtendedOpenTelemetrySdk.java | 2 +- .../sdk/internal/{all => }/OpenTelemetrySdkBuilderUtil.java | 3 +-- .../sdk/internal/{all => }/SdkConfigProvider.java | 2 +- 14 files changed, 23 insertions(+), 24 deletions(-) rename sdk/all/src/main/java/io/opentelemetry/sdk/internal/{all => }/ExtendedOpenTelemetrySdk.java (98%) rename sdk/all/src/main/java/io/opentelemetry/sdk/internal/{all => }/OpenTelemetrySdkBuilderUtil.java (93%) rename sdk/all/src/main/java/io/opentelemetry/sdk/internal/{all => }/SdkConfigProvider.java (97%) diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java index f3caf5143e8..017e691946d 100644 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java +++ b/api/incubator/src/test/java/io/opentelemetry/api/incubator/ExtendedOpenTelemetryTest.java @@ -26,8 +26,8 @@ import io.opentelemetry.context.propagation.ContextPropagators; import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration; -import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; -import io.opentelemetry.sdk.internal.all.SdkConfigProvider; +import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.SdkConfigProvider; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import java.util.Arrays; diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java index 77bd48746d6..18fc13888db 100644 --- a/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java +++ b/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtilTest.java @@ -10,7 +10,7 @@ import com.google.common.collect.ImmutableMap; import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration; import io.opentelemetry.sdk.extension.incubator.fileconfig.YamlDeclarativeConfigProperties; -import io.opentelemetry.sdk.internal.all.SdkConfigProvider; +import io.opentelemetry.sdk.internal.SdkConfigProvider; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import java.util.Arrays; diff --git a/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java b/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java index 060247bcef3..8e294ee4c7a 100644 --- a/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java +++ b/api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java @@ -19,7 +19,7 @@ import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLanguageSpecificInstrumentationPropertyModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; -import io.opentelemetry.sdk.internal.all.SdkConfigProvider; +import io.opentelemetry.sdk.internal.SdkConfigProvider; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; import java.util.Arrays; diff --git a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java index 53581519ef4..314fa4666b9 100644 --- a/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java +++ b/sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationSpiTest.java @@ -14,8 +14,8 @@ import io.opentelemetry.exporter.logging.LoggingSpanExporter; import io.opentelemetry.internal.testing.CleanupExtension; import io.opentelemetry.sdk.OpenTelemetrySdk; -import io.opentelemetry.sdk.internal.all.OpenTelemetrySdkBuilderUtil; -import io.opentelemetry.sdk.internal.all.SdkConfigProvider; +import io.opentelemetry.sdk.internal.OpenTelemetrySdkBuilderUtil; +import io.opentelemetry.sdk.internal.SdkConfigProvider; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; diff --git a/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java b/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java index 7e6cd4aef78..3081ca9cff7 100644 --- a/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java +++ b/sdk-extensions/autoconfigure/src/testIncubating/java/io/opentelemetry/sdk/autoconfigure/DeclarativeConfigurationTest.java @@ -29,8 +29,8 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException; import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties; -import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; -import io.opentelemetry.sdk.internal.all.OpenTelemetrySdkBuilderUtil; +import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.OpenTelemetrySdkBuilderUtil; import io.opentelemetry.sdk.resources.Resource; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; 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 365ece18f8d..6e67bd0bdb4 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 @@ -18,7 +18,7 @@ import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SamplerModel; -import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.trace.samplers.Sampler; import java.io.Closeable; import java.io.IOException; 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 c6cd3cb24e4..649df9abb98 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 @@ -10,9 +10,9 @@ import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdkBuilder; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; -import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; -import io.opentelemetry.sdk.internal.all.OpenTelemetrySdkBuilderUtil; -import io.opentelemetry.sdk.internal.all.SdkConfigProvider; +import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.OpenTelemetrySdkBuilderUtil; +import io.opentelemetry.sdk.internal.SdkConfigProvider; import io.opentelemetry.sdk.metrics.SdkMeterProvider; import io.opentelemetry.sdk.resources.Resource; import java.util.Objects; diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java index 4bed87dcf6f..32445285793 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java @@ -23,7 +23,7 @@ import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanProcessorModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel; -import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk; import io.opentelemetry.sdk.trace.samplers.ParentBasedSamplerBuilder; import java.io.ByteArrayInputStream; import java.io.File; 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 9c28eb6651f..f809d423561 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 @@ -52,9 +52,9 @@ import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewSelectorModel; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewStreamModel; -import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; -import io.opentelemetry.sdk.internal.all.OpenTelemetrySdkBuilderUtil; -import io.opentelemetry.sdk.internal.all.SdkConfigProvider; +import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.OpenTelemetrySdkBuilderUtil; +import io.opentelemetry.sdk.internal.SdkConfigProvider; import io.opentelemetry.sdk.logs.LogLimits; import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.metrics.InstrumentSelector; diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java b/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java index f844fe335ce..281c065f64c 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/IncubatingUtil.java @@ -6,8 +6,8 @@ package io.opentelemetry.sdk; import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; -import io.opentelemetry.sdk.internal.all.ExtendedOpenTelemetrySdk; -import io.opentelemetry.sdk.internal.all.SdkConfigProvider; +import io.opentelemetry.sdk.internal.ExtendedOpenTelemetrySdk; +import io.opentelemetry.sdk.internal.SdkConfigProvider; import javax.annotation.Nullable; /** diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java b/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java index 10e06df90c3..c7168599554 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/OpenTelemetrySdkBuilder.java @@ -9,8 +9,8 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.context.propagation.ContextPropagators; -import io.opentelemetry.sdk.internal.all.OpenTelemetrySdkBuilderUtil; -import io.opentelemetry.sdk.internal.all.SdkConfigProvider; +import io.opentelemetry.sdk.internal.OpenTelemetrySdkBuilderUtil; +import io.opentelemetry.sdk.internal.SdkConfigProvider; import io.opentelemetry.sdk.logs.SdkLoggerProvider; import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder; import io.opentelemetry.sdk.metrics.SdkMeterProvider; diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/ExtendedOpenTelemetrySdk.java b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/ExtendedOpenTelemetrySdk.java similarity index 98% rename from sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/ExtendedOpenTelemetrySdk.java rename to sdk/all/src/main/java/io/opentelemetry/sdk/internal/ExtendedOpenTelemetrySdk.java index 330b5dcead9..dc89b116108 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/ExtendedOpenTelemetrySdk.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/ExtendedOpenTelemetrySdk.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.sdk.internal.all; +package io.opentelemetry.sdk.internal; import io.opentelemetry.api.incubator.ExtendedOpenTelemetry; import io.opentelemetry.api.incubator.config.ConfigProvider; diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/OpenTelemetrySdkBuilderUtil.java b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/OpenTelemetrySdkBuilderUtil.java similarity index 93% rename from sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/OpenTelemetrySdkBuilderUtil.java rename to sdk/all/src/main/java/io/opentelemetry/sdk/internal/OpenTelemetrySdkBuilderUtil.java index 18af6273c31..ff017d64fc0 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/OpenTelemetrySdkBuilderUtil.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/OpenTelemetrySdkBuilderUtil.java @@ -3,10 +3,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.sdk.internal.all; +package io.opentelemetry.sdk.internal; import io.opentelemetry.sdk.OpenTelemetrySdkBuilder; -import io.opentelemetry.sdk.internal.ScopeConfigurator; import io.opentelemetry.sdk.trace.SdkTracerProvider; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; diff --git a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/SdkConfigProvider.java b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/SdkConfigProvider.java similarity index 97% rename from sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/SdkConfigProvider.java rename to sdk/all/src/main/java/io/opentelemetry/sdk/internal/SdkConfigProvider.java index 36964683abd..a5399ed4a23 100644 --- a/sdk/all/src/main/java/io/opentelemetry/sdk/internal/all/SdkConfigProvider.java +++ b/sdk/all/src/main/java/io/opentelemetry/sdk/internal/SdkConfigProvider.java @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package io.opentelemetry.sdk.internal.all; +package io.opentelemetry.sdk.internal; import io.opentelemetry.api.incubator.config.ConfigProvider; import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;