From 4cf51a50ad5092c1a3e706e553e7d6f46b0ffc24 Mon Sep 17 00:00:00 2001 From: Johnny Lim Date: Wed, 16 Apr 2025 22:29:04 +0900 Subject: [PATCH 1/3] Add KeyName.withoutValue() This commit also changes to use it where possible. Signed-off-by: Johnny Lim --- .../src/main/java/io/micrometer/common/docs/KeyName.java | 8 ++++++++ .../hc5/DefaultApacheHttpClientObservationConvention.java | 2 +- .../DefaultApacheHttpClientObservationConventionTest.java | 4 +--- .../hc5/ObservationExecChainHandlerTest.java | 3 +-- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java b/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java index d71dbebf1e..41aee1f41b 100644 --- a/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java +++ b/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java @@ -46,6 +46,14 @@ default KeyValue withValue(String value) { return KeyValue.of(this, value); } + /** + * Creates a key value for the given key name with {@value KeyValue#NONE_VALUE}. + * @return key value + */ + default KeyValue withoutValue() { + return KeyValue.of(this, KeyValue.NONE_VALUE); + } + /** * Creates a key value for the given key name. * @param value value for key diff --git a/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConvention.java b/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConvention.java index dda3ca0431..c9f8f57254 100644 --- a/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConvention.java +++ b/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConvention.java @@ -53,7 +53,7 @@ public class DefaultApacheHttpClientObservationConvention implements ApacheHttpC private static final KeyValue STATUS_CLIENT_ERROR = ApacheHttpClientKeyNames.STATUS.withValue("CLIENT_ERROR"); - private static final KeyValue EXCEPTION_NONE = ApacheHttpClientKeyNames.EXCEPTION.withValue(KeyValue.NONE_VALUE); + private static final KeyValue EXCEPTION_NONE = ApacheHttpClientKeyNames.EXCEPTION.withoutValue(); private static final KeyValue OUTCOME_UNKNOWN = ApacheHttpClientKeyNames.OUTCOME.withValue(Outcome.UNKNOWN.name()); diff --git a/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConventionTest.java b/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConventionTest.java index e465f778b0..24d9db3062 100644 --- a/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConventionTest.java +++ b/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConventionTest.java @@ -15,7 +15,6 @@ */ package io.micrometer.core.instrument.binder.httpcomponents.hc5; -import io.micrometer.common.KeyValue; import org.apache.hc.client5.http.HttpRoute; import org.apache.hc.client5.http.async.methods.SimpleHttpRequest; import org.apache.hc.client5.http.async.methods.SimpleHttpResponse; @@ -67,8 +66,7 @@ void shouldHaveDefaultContextName() { void shouldContributeExceptionNoneWhenSuccess() { HttpClientContext clientContext = HttpClientContext.create(); ApacheHttpClientContext context = new ApacheHttpClientContext(null, clientContext); - assertThat(observationConvention.getLowCardinalityKeyValues(context)) - .contains(EXCEPTION.withValue(KeyValue.NONE_VALUE)); + assertThat(observationConvention.getLowCardinalityKeyValues(context)).contains(EXCEPTION.withoutValue()); } @Test diff --git a/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/ObservationExecChainHandlerTest.java b/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/ObservationExecChainHandlerTest.java index 1dfd3bc567..9b8a4c8e2e 100644 --- a/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/ObservationExecChainHandlerTest.java +++ b/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/ObservationExecChainHandlerTest.java @@ -15,7 +15,6 @@ */ package io.micrometer.core.instrument.binder.httpcomponents.hc5; -import io.micrometer.common.KeyValue; import io.micrometer.common.lang.Nullable; import io.micrometer.observation.tck.TestObservationRegistry; import org.apache.hc.client5.http.HttpRoute; @@ -165,7 +164,7 @@ void shouldInstrumentCancelledRequests() throws Exception { assertThat(observationRegistry).hasObservationWithNameEqualTo("httpcomponents.httpclient.request") .that() .hasLowCardinalityKeyValue(OUTCOME.withValue("UNKNOWN")) - .hasLowCardinalityKeyValue(EXCEPTION.withValue(KeyValue.NONE_VALUE)); + .hasLowCardinalityKeyValue(EXCEPTION.withoutValue()); } } From d633e824764e5515fbc1f1aadbe5b7d986696b7c Mon Sep 17 00:00:00 2001 From: Johnny Lim Date: Thu, 17 Apr 2025 08:55:03 +0900 Subject: [PATCH 2/3] Add Javadoc since for KeyName.withoutValue() Signed-off-by: Johnny Lim --- .../src/main/java/io/micrometer/common/docs/KeyName.java | 1 + 1 file changed, 1 insertion(+) diff --git a/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java b/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java index 41aee1f41b..66816c8736 100644 --- a/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java +++ b/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java @@ -49,6 +49,7 @@ default KeyValue withValue(String value) { /** * Creates a key value for the given key name with {@value KeyValue#NONE_VALUE}. * @return key value + * @since 1.16.0 */ default KeyValue withoutValue() { return KeyValue.of(this, KeyValue.NONE_VALUE); From a4e4bfe83e5f2e458203d862ecda5939abad1eb0 Mon Sep 17 00:00:00 2001 From: Johnny Lim Date: Thu, 17 Apr 2025 14:40:50 +0900 Subject: [PATCH 3/3] Rename KeyName.withoutValue() to withNoneValue() Signed-off-by: Johnny Lim --- .../src/main/java/io/micrometer/common/docs/KeyName.java | 2 +- .../hc5/DefaultApacheHttpClientObservationConvention.java | 2 +- .../hc5/DefaultApacheHttpClientObservationConventionTest.java | 2 +- .../httpcomponents/hc5/ObservationExecChainHandlerTest.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java b/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java index 66816c8736..8ce149a47f 100644 --- a/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java +++ b/micrometer-commons/src/main/java/io/micrometer/common/docs/KeyName.java @@ -51,7 +51,7 @@ default KeyValue withValue(String value) { * @return key value * @since 1.16.0 */ - default KeyValue withoutValue() { + default KeyValue withNoneValue() { return KeyValue.of(this, KeyValue.NONE_VALUE); } diff --git a/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConvention.java b/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConvention.java index c9f8f57254..eb2a3ee761 100644 --- a/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConvention.java +++ b/micrometer-core/src/main/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConvention.java @@ -53,7 +53,7 @@ public class DefaultApacheHttpClientObservationConvention implements ApacheHttpC private static final KeyValue STATUS_CLIENT_ERROR = ApacheHttpClientKeyNames.STATUS.withValue("CLIENT_ERROR"); - private static final KeyValue EXCEPTION_NONE = ApacheHttpClientKeyNames.EXCEPTION.withoutValue(); + private static final KeyValue EXCEPTION_NONE = ApacheHttpClientKeyNames.EXCEPTION.withNoneValue(); private static final KeyValue OUTCOME_UNKNOWN = ApacheHttpClientKeyNames.OUTCOME.withValue(Outcome.UNKNOWN.name()); diff --git a/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConventionTest.java b/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConventionTest.java index 24d9db3062..95ebc30e45 100644 --- a/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConventionTest.java +++ b/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/DefaultApacheHttpClientObservationConventionTest.java @@ -66,7 +66,7 @@ void shouldHaveDefaultContextName() { void shouldContributeExceptionNoneWhenSuccess() { HttpClientContext clientContext = HttpClientContext.create(); ApacheHttpClientContext context = new ApacheHttpClientContext(null, clientContext); - assertThat(observationConvention.getLowCardinalityKeyValues(context)).contains(EXCEPTION.withoutValue()); + assertThat(observationConvention.getLowCardinalityKeyValues(context)).contains(EXCEPTION.withNoneValue()); } @Test diff --git a/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/ObservationExecChainHandlerTest.java b/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/ObservationExecChainHandlerTest.java index 9b8a4c8e2e..07930ca5e7 100644 --- a/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/ObservationExecChainHandlerTest.java +++ b/micrometer-core/src/test/java/io/micrometer/core/instrument/binder/httpcomponents/hc5/ObservationExecChainHandlerTest.java @@ -164,7 +164,7 @@ void shouldInstrumentCancelledRequests() throws Exception { assertThat(observationRegistry).hasObservationWithNameEqualTo("httpcomponents.httpclient.request") .that() .hasLowCardinalityKeyValue(OUTCOME.withValue("UNKNOWN")) - .hasLowCardinalityKeyValue(EXCEPTION.withoutValue()); + .hasLowCardinalityKeyValue(EXCEPTION.withNoneValue()); } }