Skip to content

Commit 3c049a2

Browse files
committed
Polish
See gh-29388
1 parent c03ccb2 commit 3c049a2

File tree

4 files changed

+24
-20
lines changed

4 files changed

+24
-20
lines changed

spring-webflux/src/main/java/org/springframework/web/reactive/function/client/ClientRequestObservationContext.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
/**
2424
* Context that holds information for metadata collection
2525
* during the {@link ClientHttpObservationDocumentation#HTTP_REQUEST HTTP client exchange observations}.
26+
* <p>The {@link #getCarrier() tracing context carrier} is a {@link ClientRequest.Builder request builder},
27+
* since the actual request is immutable. For {@code KeyValue} extraction, the {@link #getRequest() actual request}
28+
* should be used instead.
2629
*
2730
* @author Brian Clozel
2831
* @since 6.0
@@ -35,7 +38,7 @@ public class ClientRequestObservationContext extends RequestReplySenderContext<C
3538
private boolean aborted;
3639

3740
@Nullable
38-
private ClientRequest builtRequest;
41+
private ClientRequest request;
3942

4043

4144
public ClientRequestObservationContext() {
@@ -44,7 +47,7 @@ public ClientRequestObservationContext() {
4447

4548
private static void setRequestHeader(@Nullable ClientRequest.Builder request, String name, String value) {
4649
if (request != null) {
47-
request.header(name, value);
50+
request.headers(headers -> headers.set(name, value));
4851
}
4952
}
5053

@@ -80,16 +83,17 @@ void setAborted(boolean aborted) {
8083
}
8184

8285
/**
83-
* Return the built request.
86+
* Return the immutable client request.
8487
*/
85-
public ClientRequest getBuiltRequest() {
86-
return this.builtRequest;
88+
@Nullable
89+
public ClientRequest getRequest() {
90+
return this.request;
8791
}
8892

8993
/**
90-
* Set the built request.
94+
* Set the client request.
9195
*/
92-
public void setBuiltRequest(ClientRequest builtRequest) {
93-
this.builtRequest = builtRequest;
96+
public void setRequest(ClientRequest request) {
97+
this.request = request;
9498
}
9599
}

spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultClientRequestObservationConvention.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public String getName() {
7979

8080
@Override
8181
public String getContextualName(ClientRequestObservationContext context) {
82-
return "http " + context.getBuiltRequest().method().name().toLowerCase();
82+
return "http " + context.getRequest().method().name().toLowerCase();
8383
}
8484

8585
@Override
@@ -95,8 +95,8 @@ protected KeyValue uri(ClientRequestObservationContext context) {
9595
}
9696

9797
protected KeyValue method(ClientRequestObservationContext context) {
98-
if (context.getBuiltRequest() != null) {
99-
return KeyValue.of(ClientHttpObservationDocumentation.LowCardinalityKeyNames.METHOD, context.getBuiltRequest().method().name());
98+
if (context.getRequest() != null) {
99+
return KeyValue.of(ClientHttpObservationDocumentation.LowCardinalityKeyNames.METHOD, context.getRequest().method().name());
100100
}
101101
else {
102102
return METHOD_NONE;
@@ -143,15 +143,15 @@ public KeyValues getHighCardinalityKeyValues(ClientRequestObservationContext con
143143
}
144144

145145
protected KeyValue httpUrl(ClientRequestObservationContext context) {
146-
if (context.getBuiltRequest() != null) {
147-
return KeyValue.of(ClientHttpObservationDocumentation.HighCardinalityKeyNames.HTTP_URL, context.getBuiltRequest().url().toASCIIString());
146+
if (context.getRequest() != null) {
147+
return KeyValue.of(ClientHttpObservationDocumentation.HighCardinalityKeyNames.HTTP_URL, context.getRequest().url().toASCIIString());
148148
}
149149
return HTTP_URL_NONE;
150150
}
151151

152152
protected KeyValue clientName(ClientRequestObservationContext context) {
153-
if (context.getBuiltRequest() != null && context.getBuiltRequest().url().getHost() != null) {
154-
return KeyValue.of(ClientHttpObservationDocumentation.HighCardinalityKeyNames.CLIENT_NAME, context.getBuiltRequest().url().getHost());
153+
if (context.getRequest() != null && context.getRequest().url().getHost() != null) {
154+
return KeyValue.of(ClientHttpObservationDocumentation.HighCardinalityKeyNames.CLIENT_NAME, context.getRequest().url().getHost());
155155
}
156156
return CLIENT_NAME_NONE;
157157
}

spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ public Mono<ClientResponse> exchange() {
467467
.start();
468468
ClientRequest request = requestBuilder.build();
469469
observationContext.setUriTemplate((String) request.attribute(URI_TEMPLATE_ATTRIBUTE).orElse(null));
470-
observationContext.setBuiltRequest(request);
470+
observationContext.setRequest(request);
471471
Mono<ClientResponse> responseMono = exchangeFunction.exchange(request)
472472
.checkpoint("Request to " + this.httpMethod.name() + " " + this.uri + " [DefaultWebClient]")
473473
.switchIfEmpty(NO_HTTP_CLIENT_RESPONSE_ERROR);

spring-webflux/src/test/java/org/springframework/web/reactive/function/client/DefaultClientRequestObservationConventionTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ void shouldHaveName() {
4545
void shouldHaveContextualName() {
4646
ClientRequestObservationContext context = new ClientRequestObservationContext();
4747
context.setCarrier(ClientRequest.create(HttpMethod.GET, URI.create("/test")));
48-
context.setBuiltRequest(context.getCarrier().build());
48+
context.setRequest(context.getCarrier().build());
4949
assertThat(this.observationConvention.getContextualName(context)).isEqualTo("http get");
5050
}
5151

@@ -82,7 +82,7 @@ void shouldAddKeyValuesForRequestWithUriTemplate() {
8282
.attribute(WebClient.class.getName() + ".uriTemplate", "/resource/{id}");
8383
ClientRequestObservationContext context = createContext(request);
8484
context.setUriTemplate("/resource/{id}");
85-
context.setBuiltRequest(context.getCarrier().build());
85+
context.setRequest(context.getCarrier().build());
8686
assertThat(this.observationConvention.getLowCardinalityKeyValues(context))
8787
.contains(KeyValue.of("exception", "none"), KeyValue.of("method", "GET"), KeyValue.of("uri", "/resource/{id}"),
8888
KeyValue.of("status", "200"), KeyValue.of("outcome", "SUCCESS"));
@@ -93,7 +93,7 @@ void shouldAddKeyValuesForRequestWithUriTemplate() {
9393
@Test
9494
void shouldAddKeyValuesForRequestWithoutUriTemplate() {
9595
ClientRequestObservationContext context = createContext(ClientRequest.create(HttpMethod.GET, URI.create("/resource/42")));
96-
context.setBuiltRequest(context.getCarrier().build());
96+
context.setRequest(context.getCarrier().build());
9797
assertThat(this.observationConvention.getLowCardinalityKeyValues(context))
9898
.contains(KeyValue.of("method", "GET"), KeyValue.of("uri", "none"));
9999
assertThat(this.observationConvention.getHighCardinalityKeyValues(context)).hasSize(2).contains(KeyValue.of("http.url", "/resource/42"));
@@ -102,7 +102,7 @@ void shouldAddKeyValuesForRequestWithoutUriTemplate() {
102102
@Test
103103
void shouldAddClientNameKeyValueForRequestWithHost() {
104104
ClientRequestObservationContext context = createContext(ClientRequest.create(HttpMethod.GET, URI.create("https://localhost:8080/resource/42")));
105-
context.setBuiltRequest(context.getCarrier().build());
105+
context.setRequest(context.getCarrier().build());
106106
assertThat(this.observationConvention.getHighCardinalityKeyValues(context)).contains(KeyValue.of("client.name", "localhost"));
107107
}
108108

0 commit comments

Comments
 (0)