diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtil.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtil.java index daa069f3ae8..2fbcc17cb99 100644 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtil.java +++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtil.java @@ -62,25 +62,33 @@ private static Object resolveValue( @Nullable private static Object getString( String key, DeclarativeConfigProperties declarativeConfigProperties) { - return declarativeConfigProperties.getString(key); + return declarativeConfigProperties.isString(key) + ? declarativeConfigProperties.getString(key) + : null; } @Nullable private static Object getBoolean( String key, DeclarativeConfigProperties declarativeConfigProperties) { - return declarativeConfigProperties.getBoolean(key); + return declarativeConfigProperties.isBoolean(key) + ? declarativeConfigProperties.getBoolean(key) + : null; } @Nullable private static Object getLong( String key, DeclarativeConfigProperties declarativeConfigProperties) { - return declarativeConfigProperties.getLong(key); + return declarativeConfigProperties.isLong(key) + ? declarativeConfigProperties.getLong(key) + : null; } @Nullable private static Object getDouble( String key, DeclarativeConfigProperties declarativeConfigProperties) { - return declarativeConfigProperties.getDouble(key); + return declarativeConfigProperties.isDouble(key) + ? declarativeConfigProperties.getDouble(key) + : null; } @Nullable diff --git a/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtilTest.java b/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtilTest.java new file mode 100644 index 00000000000..ab69ba0781c --- /dev/null +++ b/api/incubator/src/test/java/io/opentelemetry/api/incubator/config/DeclarativeConfigPropertyUtilTest.java @@ -0,0 +1,57 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.api.incubator.config; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.google.common.collect.ImmutableMap; +import io.github.netmikey.logunit.api.LogCapturer; +import io.opentelemetry.common.ComponentLoader; +import io.opentelemetry.sdk.autoconfigure.declarativeconfig.YamlDeclarativeConfigProperties; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +class DeclarativeConfigPropertyUtilTest { + + @RegisterExtension + LogCapturer logCapturer = + LogCapturer.create().captureForType(YamlDeclarativeConfigProperties.class); + + @Test + void toMap_doesNotLogTypeWarnings() { + Map properties = new HashMap<>(); + properties.put("string_key", "value"); + properties.put("bool_key", true); + properties.put("int_key", 1); + properties.put("double_key", 0.25); + properties.put("map_key", Collections.singletonMap("ratio", 0.25)); + properties.put("string_list_key", Arrays.asList("a", "b")); + properties.put( + "structured_list_key", Collections.singletonList(Collections.singletonMap("k", false))); + DeclarativeConfigProperties config = + YamlDeclarativeConfigProperties.create( + properties, ComponentLoader.forClassLoader(getClass().getClassLoader())); + + Map result = DeclarativeConfigProperties.toMap(config); + + assertThat(result) + .containsExactlyInAnyOrderEntriesOf( + ImmutableMap.builder() + .put("string_key", "value") + .put("bool_key", true) + .put("int_key", 1L) + .put("double_key", 0.25) + .put("map_key", ImmutableMap.of("ratio", 0.25)) + .put("string_list_key", Arrays.asList("a", "b")) + .put("structured_list_key", Collections.singletonList(ImmutableMap.of("k", false))) + .build()); + assertThat(logCapturer.getEvents()).isEmpty(); + } +}