Skip to content

Commit c3ce847

Browse files
committed
Polishing contribution
Closes gh-30092
1 parent cd8955f commit c3ce847

File tree

2 files changed

+31
-60
lines changed

2 files changed

+31
-60
lines changed

spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClient.java

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2022 the original author or authors.
2+
* Copyright 2002-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -370,36 +370,35 @@ public ResponseSpec exchange() {
370370

371371
private ClientRequest.Builder initRequestBuilder() {
372372
ClientRequest.Builder builder = ClientRequest.create(this.httpMethod, initUri())
373-
.headers(this::initHeaders)
374-
.cookies(this::initCookies)
373+
.headers(headersToUse -> {
374+
if (!CollectionUtils.isEmpty(defaultHeaders)) {
375+
headersToUse.putAll(defaultHeaders);
376+
}
377+
if (!CollectionUtils.isEmpty(this.headers)) {
378+
headersToUse.putAll(this.headers);
379+
}
380+
})
381+
.cookies(cookiesToUse -> {
382+
if (!CollectionUtils.isEmpty(defaultCookies)) {
383+
cookiesToUse.putAll(defaultCookies);
384+
}
385+
if (!CollectionUtils.isEmpty(this.cookies)) {
386+
cookiesToUse.putAll(this.cookies);
387+
}
388+
})
375389
.attributes(attributes -> attributes.putAll(this.attributes));
390+
376391
if (this.httpRequestConsumer != null) {
377392
builder.httpRequest(this.httpRequestConsumer);
378393
}
394+
379395
return builder;
380396
}
381397

382398
private URI initUri() {
383399
return (this.uri != null ? this.uri : uriBuilderFactory.expand(""));
384400
}
385401

386-
private void initHeaders(HttpHeaders out) {
387-
if (!CollectionUtils.isEmpty(defaultHeaders)) {
388-
out.putAll(defaultHeaders);
389-
}
390-
if (!CollectionUtils.isEmpty(this.headers)) {
391-
out.putAll(this.headers);
392-
}
393-
}
394-
395-
private void initCookies(MultiValueMap<String, String> out) {
396-
if (!CollectionUtils.isEmpty(defaultCookies)) {
397-
out.putAll(defaultCookies);
398-
}
399-
if (!CollectionUtils.isEmpty(this.cookies)) {
400-
out.putAll(this.cookies);
401-
}
402-
}
403402
}
404403

405404

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

Lines changed: 12 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import java.util.function.Function;
3131
import java.util.function.IntPredicate;
3232
import java.util.function.Predicate;
33-
import java.util.function.Supplier;
3433

3534
import io.micrometer.observation.Observation;
3635
import io.micrometer.observation.ObservationRegistry;
@@ -43,7 +42,6 @@
4342
import org.springframework.core.ParameterizedTypeReference;
4443
import org.springframework.http.HttpHeaders;
4544
import org.springframework.http.HttpMethod;
46-
import org.springframework.http.HttpRequest;
4745
import org.springframework.http.HttpStatusCode;
4846
import org.springframework.http.MediaType;
4947
import org.springframework.http.ResponseEntity;
@@ -394,30 +392,7 @@ public RequestHeadersSpec<?> syncBody(Object body) {
394392
@Override
395393
public ResponseSpec retrieve() {
396394
return new DefaultResponseSpec(
397-
exchange(), this::createRequest, DefaultWebClient.this.defaultStatusHandlers);
398-
}
399-
400-
private HttpRequest createRequest() {
401-
return new HttpRequest() {
402-
private final URI uri = initUri();
403-
404-
@Override
405-
public HttpMethod getMethod() {
406-
return httpMethod;
407-
}
408-
409-
@Override
410-
public URI getURI() {
411-
return this.uri;
412-
}
413-
414-
@Override
415-
public HttpHeaders getHeaders() {
416-
HttpHeaders headers = new HttpHeaders();
417-
initHeaders(headers);
418-
return headers;
419-
}
420-
};
395+
this.httpMethod, initUri(), exchange(), DefaultWebClient.this.defaultStatusHandlers);
421396
}
422397

423398
@Override
@@ -528,21 +503,25 @@ private static class DefaultResponseSpec implements ResponseSpec {
528503
private static final StatusHandler DEFAULT_STATUS_HANDLER =
529504
new StatusHandler(STATUS_CODE_ERROR, ClientResponse::createException);
530505

531-
private final Mono<ClientResponse> responseMono;
532506

533-
private final Supplier<HttpRequest> requestSupplier;
507+
private final HttpMethod httpMethod;
508+
509+
private final URI uri;
510+
511+
private final Mono<ClientResponse> responseMono;
534512

535513
private final List<StatusHandler> statusHandlers = new ArrayList<>(1);
536514

537515
private final int defaultStatusHandlerCount;
538516

539517

540518
DefaultResponseSpec(
541-
Mono<ClientResponse> responseMono, Supplier<HttpRequest> requestSupplier,
519+
HttpMethod httpMethod, URI uri, Mono<ClientResponse> responseMono,
542520
List<StatusHandler> defaultStatusHandlers) {
543521

522+
this.httpMethod = httpMethod;
523+
this.uri = uri;
544524
this.responseMono = responseMono;
545-
this.requestSupplier = requestSupplier;
546525
this.statusHandlers.addAll(defaultStatusHandlers);
547526
this.statusHandlers.add(DEFAULT_STATUS_HANDLER);
548527
this.defaultStatusHandlerCount = this.statusHandlers.size();
@@ -696,21 +675,14 @@ private <T> Mono<T> applyStatusHandlers(ClientResponse response) {
696675
exMono = releaseIfNotConsumed(response, ex2);
697676
}
698677
Mono<T> result = exMono.flatMap(Mono::error);
699-
HttpRequest request = this.requestSupplier.get();
700-
return insertCheckpoint(result, statusCode, request);
678+
return result.checkpoint(statusCode + " from " +
679+
this.httpMethod + " " + getUriToLog(this.uri) + " [DefaultWebClient]");
701680
}
702681
}
703682
return null;
704683
}
705684

706-
private <T> Mono<T> insertCheckpoint(Mono<T> result, HttpStatusCode statusCode, HttpRequest request) {
707-
HttpMethod method = request.getMethod();
708-
URI uri = getUriToLog(request);
709-
return result.checkpoint(statusCode + " from " + method + " " + uri + " [DefaultWebClient]");
710-
}
711-
712-
private static URI getUriToLog(HttpRequest request) {
713-
URI uri = request.getURI();
685+
private static URI getUriToLog(URI uri) {
714686
if (StringUtils.hasText(uri.getQuery())) {
715687
try {
716688
uri = new URI(uri.getScheme(), uri.getHost(), uri.getPath(), null);

0 commit comments

Comments
 (0)