From f68d3e98ed76eadff0c501e0ca3924fee1faeef1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Jan 2025 09:05:35 -0500 Subject: [PATCH 1/5] Bump @springio/asciidoctor-extensions in /docs (#2724) Bumps [@springio/asciidoctor-extensions](https://github.com/spring-io/asciidoctor-extensions) from 1.0.0-alpha.14 to 1.0.0-alpha.15. - [Changelog](https://github.com/spring-io/asciidoctor-extensions/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/spring-io/asciidoctor-extensions/compare/v1.0.0-alpha.14...v1.0.0-alpha.15) --- updated-dependencies: - dependency-name: "@springio/asciidoctor-extensions" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index ca5b2ce8..109bcb24 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,6 +5,6 @@ "@antora/collector-extension": "1.0.1", "@asciidoctor/tabs": "1.0.0-beta.6", "@springio/antora-extensions": "1.14.2", - "@springio/asciidoctor-extensions": "1.0.0-alpha.14" + "@springio/asciidoctor-extensions": "1.0.0-alpha.15" } } From 464135d639d6b8f110ae57a9c08999a26edd7caa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 10:29:55 -0500 Subject: [PATCH 2/5] Bump @springio/asciidoctor-extensions in /docs (#2733) Bumps [@springio/asciidoctor-extensions](https://github.com/spring-io/asciidoctor-extensions) from 1.0.0-alpha.15 to 1.0.0-alpha.16. - [Changelog](https://github.com/spring-io/asciidoctor-extensions/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/spring-io/asciidoctor-extensions/compare/v1.0.0-alpha.15...v1.0.0-alpha.16) --- updated-dependencies: - dependency-name: "@springio/asciidoctor-extensions" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index 109bcb24..755f9ee7 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,6 +5,6 @@ "@antora/collector-extension": "1.0.1", "@asciidoctor/tabs": "1.0.0-beta.6", "@springio/antora-extensions": "1.14.2", - "@springio/asciidoctor-extensions": "1.0.0-alpha.15" + "@springio/asciidoctor-extensions": "1.0.0-alpha.16" } } From f51bb1f327cae2edae285a553e766395da04e5b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 10:19:37 -0500 Subject: [PATCH 3/5] Bump @springio/antora-extensions from 1.14.2 to 1.14.4 in /docs (#2759) Bumps [@springio/antora-extensions](https://github.com/spring-io/antora-extensions) from 1.14.2 to 1.14.4. - [Changelog](https://github.com/spring-io/antora-extensions/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/spring-io/antora-extensions/compare/v1.14.2...v1.14.4) --- updated-dependencies: - dependency-name: "@springio/antora-extensions" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index 755f9ee7..9e455a6d 100644 --- a/docs/package.json +++ b/docs/package.json @@ -4,7 +4,7 @@ "@antora/atlas-extension": "1.0.0-alpha.2", "@antora/collector-extension": "1.0.1", "@asciidoctor/tabs": "1.0.0-beta.6", - "@springio/antora-extensions": "1.14.2", + "@springio/antora-extensions": "1.14.4", "@springio/asciidoctor-extensions": "1.0.0-alpha.16" } } From a4599f08f47f1ed78bec8b0f103c3d98f0f418b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 10:20:21 -0500 Subject: [PATCH 4/5] Bump @springio/antora-extensions from 1.14.2 to 1.14.4 in /docs (#2760) Bumps [@springio/antora-extensions](https://github.com/spring-io/antora-extensions) from 1.14.2 to 1.14.4. - [Changelog](https://github.com/spring-io/antora-extensions/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/spring-io/antora-extensions/compare/v1.14.2...v1.14.4) --- updated-dependencies: - dependency-name: "@springio/antora-extensions" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index 755f9ee7..9e455a6d 100644 --- a/docs/package.json +++ b/docs/package.json @@ -4,7 +4,7 @@ "@antora/atlas-extension": "1.0.0-alpha.2", "@antora/collector-extension": "1.0.1", "@asciidoctor/tabs": "1.0.0-beta.6", - "@springio/antora-extensions": "1.14.2", + "@springio/antora-extensions": "1.14.4", "@springio/asciidoctor-extensions": "1.0.0-alpha.16" } } From 47d1b9dad32cda26004d36543941b9458754f22d Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Tue, 25 Feb 2025 09:37:01 -0500 Subject: [PATCH 5/5] Use default values for missing values (#2757) Fixes #2752 --- ...onmentRepositoryObservationConvention.java | 18 ++++---- ...tionEnvironmentRepositoryWrapperTests.java | 45 +++++++++++++++++++ 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/ObservationEnvironmentRepositoryObservationConvention.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/ObservationEnvironmentRepositoryObservationConvention.java index 53e035b8..c99d21ab 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/ObservationEnvironmentRepositoryObservationConvention.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/environment/ObservationEnvironmentRepositoryObservationConvention.java @@ -16,6 +16,7 @@ package org.springframework.cloud.config.server.environment; +import io.micrometer.common.KeyValue; import io.micrometer.common.KeyValues; import io.micrometer.common.docs.KeyName; import io.micrometer.observation.Observation; @@ -35,21 +36,20 @@ class ObservationEnvironmentRepositoryObservationConvention @Override public KeyValues getLowCardinalityKeyValues(ObservationEnvironmentRepositoryContext context) { KeyValues keyValues = KeyValues.empty(); - keyValues = appendIfPresent(keyValues, DocumentedConfigObservation.LowCardinalityTags.ENVIRONMENT_CLASS, + keyValues = appendWithValueOrUseDefault(keyValues, + DocumentedConfigObservation.LowCardinalityTags.ENVIRONMENT_CLASS, context.getEnvironmentRepositoryClass().getName()); - keyValues = appendIfPresent(keyValues, DocumentedConfigObservation.LowCardinalityTags.LABEL, + keyValues = appendWithValueOrUseDefault(keyValues, DocumentedConfigObservation.LowCardinalityTags.LABEL, context.getLabel()); - keyValues = appendIfPresent(keyValues, DocumentedConfigObservation.LowCardinalityTags.PROFILE, + keyValues = appendWithValueOrUseDefault(keyValues, DocumentedConfigObservation.LowCardinalityTags.PROFILE, context.getProfile()); - return appendIfPresent(keyValues, DocumentedConfigObservation.LowCardinalityTags.APPLICATION, + return appendWithValueOrUseDefault(keyValues, DocumentedConfigObservation.LowCardinalityTags.APPLICATION, context.getApplication()); } - private KeyValues appendIfPresent(KeyValues keyValues, KeyName profile, String value) { - if (StringUtils.hasText(value)) { - keyValues = keyValues.and(profile.withValue(value)); - } - return keyValues; + private KeyValues appendWithValueOrUseDefault(KeyValues keyValues, KeyName keyName, String value) { + value = StringUtils.hasText(value) ? value : KeyValue.NONE_VALUE; + return keyValues.and(keyName.withValue(value)); } @Override diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/ObservationEnvironmentRepositoryWrapperTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/ObservationEnvironmentRepositoryWrapperTests.java index 0e72d6e4..fcdefbdf 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/ObservationEnvironmentRepositoryWrapperTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/environment/ObservationEnvironmentRepositoryWrapperTests.java @@ -18,6 +18,7 @@ package org.springframework.cloud.config.server.environment; import java.util.Arrays; +import io.micrometer.common.KeyValue; import io.micrometer.observation.Observation; import io.micrometer.observation.tck.TestObservationRegistry; import org.junit.jupiter.api.Test; @@ -70,6 +71,50 @@ class ObservationEnvironmentRepositoryWrapperTests { }); } + @Test + void shouldCreateRootObservationForCompositeWithDefaultValues() { + TestObservationRegistry registry = TestObservationRegistry.create(); + EnvironmentRepository delegate = new MyEnvRepo(); + EnvironmentRepository composite = new CompositeEnvironmentRepository(Arrays.asList(delegate), registry, true); + EnvironmentRepository wrapper = ObservationEnvironmentRepositoryWrapper.wrap(registry, composite); + + wrapper.findOne("foo", "bar", null); + + assertThat(registry).hasHandledContextsThatSatisfy(contexts -> { + contexts.stream() + .filter(context -> context.getName().equals("spring.cloud.config.environment.find") + && contextExists(context, "spring.cloud.config.environment.class", + "org.springframework.cloud.config.server.environment.CompositeEnvironmentRepository") + && context.getLowCardinalityKeyValue("spring.cloud.config.environment.label") + .getValue() + .equals(KeyValue.NONE_VALUE) + && context.getLowCardinalityKeyValue("spring.cloud.config.environment.application") + .getValue() + .equals("foo") + && context.getLowCardinalityKeyValue("spring.cloud.config.environment.profile") + .getValue() + .equals("bar")) + .findFirst() + .orElseThrow( + () -> new AssertionError("There's no observation for the Composite EnvironmentRepository")); + contexts.stream() + .filter(context -> context.getName().equals("spring.cloud.config.environment.find") && contextExists( + context, "spring.cloud.config.environment.class", + "org.springframework.cloud.config.server.environment.ObservationEnvironmentRepositoryWrapperTests$MyEnvRepo") + && context.getLowCardinalityKeyValue("spring.cloud.config.environment.label") + .getValue() + .equals(KeyValue.NONE_VALUE) + && context.getLowCardinalityKeyValue("spring.cloud.config.environment.application") + .getValue() + .equals("foo") + && context.getLowCardinalityKeyValue("spring.cloud.config.environment.profile") + .getValue() + .equals("bar")) + .findFirst() + .orElseThrow(() -> new AssertionError("There's no observation for the wrapped EnvironmentRepository")); + }); + } + private boolean contextExists(Observation.Context context, String tagName, String tagValue) { return context.getLowCardinalityKeyValues() .stream()