From fae075d063d99cac117a864b165826c0110bc6d2 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 16 Dec 2025 11:47:05 +0100 Subject: [PATCH 1/5] add "get" method to DeclarativeConfigProperties --- .../incubator/config/DeclarativeConfigProperties.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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..da34ec14451 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,17 @@ default DeclarativeConfigProperties getStructured( return defaultIfNull(getStructured(name), defaultValue); } + /** + * Returns a {@link DeclarativeConfigProperties} configuration property. + * + * @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 defaultIfNull(getStructured(name), empty()); + } + /** * Returns a list of {@link DeclarativeConfigProperties} configuration property. * From d914d52153c77200ea2c85631f86e533ef40c08f Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 16 Dec 2025 17:02:01 +0100 Subject: [PATCH 2/5] Update api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigProperties.java Co-authored-by: Trask Stalnaker --- .../api/incubator/config/DeclarativeConfigProperties.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 da34ec14451..6e34a9886f4 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 @@ -209,7 +209,7 @@ default DeclarativeConfigProperties getStructured( * @throws DeclarativeConfigException if the property is not a mapping */ default DeclarativeConfigProperties get(String name) { - return defaultIfNull(getStructured(name), empty()); + return getStructured(name, empty()); } /** From 2f5876ec5bef13c2815b23463bf9e377bb8624a4 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Tue, 16 Dec 2025 17:04:49 +0100 Subject: [PATCH 3/5] add "get" method to DeclarativeConfigProperties --- .../fileconfig/YamlDeclarativeConfigPropertiesTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); From 0eacadca6fcee67dfed4a09776649b9daf778519 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 17 Dec 2025 18:32:15 +0100 Subject: [PATCH 4/5] Update api/incubator/src/main/java/io/opentelemetry/api/incubator/config/DeclarativeConfigProperties.java Co-authored-by: Jack Berg <34418638+jack-berg@users.noreply.github.com> --- .../api/incubator/config/DeclarativeConfigProperties.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 6e34a9886f4..54c464e20c0 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 @@ -202,7 +202,9 @@ default DeclarativeConfigProperties getStructured( } /** - * Returns a {@link DeclarativeConfigProperties} configuration property. + * 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 From b7ebfeb3ff2afad529ec7e058936702af6aee55c Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Thu, 18 Dec 2025 12:54:44 +0100 Subject: [PATCH 5/5] fix --- .../incubator/config/DeclarativeConfigProperties.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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 54c464e20c0..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 @@ -202,9 +202,12 @@ default DeclarativeConfigProperties getStructured( } /** - * 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)}. + * 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