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;