diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigProperties.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigProperties.java index cf98312c9e8..425a3d768be 100644 --- a/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigProperties.java +++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigProperties.java @@ -201,6 +201,22 @@ default DeclarativeConfigProperties getStructured( return defaultIfNull(getStructured(name), defaultValue); } + /** + * Returns a {@link DeclarativeConfigProperties} configuration property, or {@link #empty()} if a + * property with {@code name} has not been configured. + * + *
This is syntactic sugar for the common operation of calling {@code + * config.getStructured(name, empty())}. If you need to distinguish between a property being set + * but empty vs. not set, use {@link #getStructured(String)}. + * + * @return a map-valued configuration property, or an empty {@link DeclarativeConfigProperties} + * instance if {@code name} has not been configured + * @throws DeclarativeConfigException if the property is not a mapping + */ + default DeclarativeConfigProperties get(String name) { + return getStructured(name, empty()); + } + /** * Returns a list of {@link DeclarativeConfigProperties} configuration property. * diff --git a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/YamlDeclarativeConfigPropertiesTest.java b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/YamlDeclarativeConfigPropertiesTest.java index 4e5bbbf9121..3e2d5bee2fe 100644 --- a/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/YamlDeclarativeConfigPropertiesTest.java +++ b/sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/YamlDeclarativeConfigPropertiesTest.java @@ -183,7 +183,7 @@ void treeWalking() { // Access string at .foo.bar.baz without null checking and without exception. assertThat( structuredConfigProps - .getStructured("foo", empty()) + .get("foo") // short for getStructured("foo", empty()) .getStructured("bar", empty()) .getString("baz")) .isNull();