From 95652e8925e3eecaa66192cddff0eec675f2250a Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Mon, 15 Dec 2025 15:07:13 -0800 Subject: [PATCH] Change ConfigProvider.getInstrumentationConfig() to not return null --- .../api/incubator/config/ConfigProvider.java | 6 ++---- .../incubator/config/InstrumentationConfigUtil.java | 8 ++------ .../api/incubator/InstrumentationConfigUtilTest.java | 2 +- .../extension/incubator/ExtendedOpenTelemetrySdk.java | 2 -- .../incubator/fileconfig/SdkConfigProvider.java | 11 +++++++---- 5 files changed, 12 insertions(+), 17 deletions(-) diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/ConfigProvider.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/ConfigProvider.java index 62cc044e653..c2dc0693f58 100644 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/ConfigProvider.java +++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/ConfigProvider.java @@ -5,7 +5,6 @@ package io.opentelemetry.api.incubator.config; -import javax.annotation.Nullable; import javax.annotation.concurrent.ThreadSafe; /** @@ -23,15 +22,14 @@ public interface ConfigProvider { /** * Returns the {@link DeclarativeConfigProperties} corresponding to instrumentation - * config, or {@code null} if unavailable. + * config. Returns {@link DeclarativeConfigProperties#empty()} if unavailable. * * @return the instrumentation {@link DeclarativeConfigProperties} */ - @Nullable DeclarativeConfigProperties getInstrumentationConfig(); /** Returns a no-op {@link ConfigProvider}. */ static ConfigProvider noop() { - return () -> null; + return DeclarativeConfigProperties::empty; } } diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtil.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtil.java index 1a37ace2dca..dd35b1afea0 100644 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtil.java +++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtil.java @@ -124,9 +124,8 @@ public static DeclarativeConfigProperties javaInstrumentationConfig( /** * Walk down the {@code segments} of {@link ConfigProvider#getInstrumentationConfig()} and call - * {@code accessor} on the terminal node. Returns null if {@link - * ConfigProvider#getInstrumentationConfig()} is null, or if null is encountered walking the - * {@code segments}, or if {@code accessor} returns null. + * {@code accessor} on the terminal node. Returns null if null is encountered walking the {@code + * segments}, or if {@code accessor} returns null. * *

See other methods in {@link InstrumentationConfigUtil} for usage examples. */ @@ -136,9 +135,6 @@ public static T getOrNull( Function accessor, String... segments) { DeclarativeConfigProperties config = configProvider.getInstrumentationConfig(); - if (config == null) { - return null; - } for (String segment : segments) { config = config.getStructured(segment); if (config == null) { 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 ef936a5fd56..846633adec3 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 @@ -61,7 +61,7 @@ void toMap_RoundTrip() throws JsonProcessingException { @Test void getInstrumentationConfigModel_UnsetConfig() { - ConfigProvider configProvider = () -> null; + ConfigProvider configProvider = DeclarativeConfigProperties::empty; assertThat( InstrumentationConfigUtil.getInstrumentationConfigModel( diff --git a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java index 5b24dbfd035..f7f838e04cc 100644 --- a/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java +++ b/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java @@ -11,7 +11,6 @@ import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider; import java.io.Closeable; -import javax.annotation.Nullable; import javax.annotation.concurrent.ThreadSafe; /** A new interface for creating OpenTelemetrySdk that supports getting {@link ConfigProvider}. */ @@ -74,7 +73,6 @@ private ObfuscatedConfigProvider(SdkConfigProvider delegate) { } @Override - @Nullable public DeclarativeConfigProperties getInstrumentationConfig() { return delegate.getInstrumentationConfig(); } 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 561800d9949..fd42c712290 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 @@ -9,18 +9,22 @@ import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties; import io.opentelemetry.common.ComponentLoader; import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel; -import javax.annotation.Nullable; /** SDK implementation of {@link ConfigProvider}. */ public final class SdkConfigProvider implements ConfigProvider { - @Nullable private final DeclarativeConfigProperties instrumentationConfig; + private final DeclarativeConfigProperties instrumentationConfig; private SdkConfigProvider( OpenTelemetryConfigurationModel model, ComponentLoader componentLoader) { DeclarativeConfigProperties configProperties = DeclarativeConfiguration.toConfigProperties(model, componentLoader); - this.instrumentationConfig = configProperties.getStructured("instrumentation/development"); + DeclarativeConfigProperties instrumentationConfigOrNull = + configProperties.getStructured("instrumentation/development"); + this.instrumentationConfig = + instrumentationConfigOrNull == null + ? DeclarativeConfigProperties.empty() + : instrumentationConfigOrNull; } /** @@ -45,7 +49,6 @@ public static SdkConfigProvider create( return new SdkConfigProvider(model, componentLoader); } - @Nullable @Override public DeclarativeConfigProperties getInstrumentationConfig() { return instrumentationConfig;