Skip to content

Commit 95652e8

Browse files
committed
Change ConfigProvider.getInstrumentationConfig() to not return null
1 parent 40dbfa4 commit 95652e8

File tree

5 files changed

+12
-17
lines changed

5 files changed

+12
-17
lines changed

api/incubator/src/main/java/io/opentelemetry/api/incubator/config/ConfigProvider.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
package io.opentelemetry.api.incubator.config;
77

8-
import javax.annotation.Nullable;
98
import javax.annotation.concurrent.ThreadSafe;
109

1110
/**
@@ -23,15 +22,14 @@ public interface ConfigProvider {
2322
/**
2423
* Returns the {@link DeclarativeConfigProperties} corresponding to <a
2524
* href="https://github.com/open-telemetry/opentelemetry-configuration/blob/main/schema/instrumentation.json">instrumentation
26-
* config</a>, or {@code null} if unavailable.
25+
* config</a>. Returns {@link DeclarativeConfigProperties#empty()} if unavailable.
2726
*
2827
* @return the instrumentation {@link DeclarativeConfigProperties}
2928
*/
30-
@Nullable
3129
DeclarativeConfigProperties getInstrumentationConfig();
3230

3331
/** Returns a no-op {@link ConfigProvider}. */
3432
static ConfigProvider noop() {
35-
return () -> null;
33+
return DeclarativeConfigProperties::empty;
3634
}
3735
}

api/incubator/src/main/java/io/opentelemetry/api/incubator/config/InstrumentationConfigUtil.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,8 @@ public static DeclarativeConfigProperties javaInstrumentationConfig(
124124

125125
/**
126126
* Walk down the {@code segments} of {@link ConfigProvider#getInstrumentationConfig()} and call
127-
* {@code accessor} on the terminal node. Returns null if {@link
128-
* ConfigProvider#getInstrumentationConfig()} is null, or if null is encountered walking the
129-
* {@code segments}, or if {@code accessor} returns null.
127+
* {@code accessor} on the terminal node. Returns null if null is encountered walking the {@code
128+
* segments}, or if {@code accessor} returns null.
130129
*
131130
* <p>See other methods in {@link InstrumentationConfigUtil} for usage examples.
132131
*/
@@ -136,9 +135,6 @@ public static <T> T getOrNull(
136135
Function<DeclarativeConfigProperties, T> accessor,
137136
String... segments) {
138137
DeclarativeConfigProperties config = configProvider.getInstrumentationConfig();
139-
if (config == null) {
140-
return null;
141-
}
142138
for (String segment : segments) {
143139
config = config.getStructured(segment);
144140
if (config == null) {

api/incubator/src/testConvertToModel/java/io/opentelemetry/api/incubator/InstrumentationConfigUtilTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ void toMap_RoundTrip() throws JsonProcessingException {
6161

6262
@Test
6363
void getInstrumentationConfigModel_UnsetConfig() {
64-
ConfigProvider configProvider = () -> null;
64+
ConfigProvider configProvider = DeclarativeConfigProperties::empty;
6565

6666
assertThat(
6767
InstrumentationConfigUtil.getInstrumentationConfigModel(

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/ExtendedOpenTelemetrySdk.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import io.opentelemetry.sdk.OpenTelemetrySdk;
1212
import io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider;
1313
import java.io.Closeable;
14-
import javax.annotation.Nullable;
1514
import javax.annotation.concurrent.ThreadSafe;
1615

1716
/** A new interface for creating OpenTelemetrySdk that supports getting {@link ConfigProvider}. */
@@ -74,7 +73,6 @@ private ObfuscatedConfigProvider(SdkConfigProvider delegate) {
7473
}
7574

7675
@Override
77-
@Nullable
7876
public DeclarativeConfigProperties getInstrumentationConfig() {
7977
return delegate.getInstrumentationConfig();
8078
}

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SdkConfigProvider.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,22 @@
99
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
1010
import io.opentelemetry.common.ComponentLoader;
1111
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
12-
import javax.annotation.Nullable;
1312

1413
/** SDK implementation of {@link ConfigProvider}. */
1514
public final class SdkConfigProvider implements ConfigProvider {
1615

17-
@Nullable private final DeclarativeConfigProperties instrumentationConfig;
16+
private final DeclarativeConfigProperties instrumentationConfig;
1817

1918
private SdkConfigProvider(
2019
OpenTelemetryConfigurationModel model, ComponentLoader componentLoader) {
2120
DeclarativeConfigProperties configProperties =
2221
DeclarativeConfiguration.toConfigProperties(model, componentLoader);
23-
this.instrumentationConfig = configProperties.getStructured("instrumentation/development");
22+
DeclarativeConfigProperties instrumentationConfigOrNull =
23+
configProperties.getStructured("instrumentation/development");
24+
this.instrumentationConfig =
25+
instrumentationConfigOrNull == null
26+
? DeclarativeConfigProperties.empty()
27+
: instrumentationConfigOrNull;
2428
}
2529

2630
/**
@@ -45,7 +49,6 @@ public static SdkConfigProvider create(
4549
return new SdkConfigProvider(model, componentLoader);
4650
}
4751

48-
@Nullable
4952
@Override
5053
public DeclarativeConfigProperties getInstrumentationConfig() {
5154
return instrumentationConfig;

0 commit comments

Comments
 (0)