|
30 | 30 | import java.util.function.Function;
|
31 | 31 | import java.util.function.IntPredicate;
|
32 | 32 | import java.util.function.Predicate;
|
33 |
| -import java.util.function.Supplier; |
34 | 33 |
|
35 | 34 | import io.micrometer.observation.Observation;
|
36 | 35 | import io.micrometer.observation.ObservationRegistry;
|
|
43 | 42 | import org.springframework.core.ParameterizedTypeReference;
|
44 | 43 | import org.springframework.http.HttpHeaders;
|
45 | 44 | import org.springframework.http.HttpMethod;
|
46 |
| -import org.springframework.http.HttpRequest; |
47 | 45 | import org.springframework.http.HttpStatusCode;
|
48 | 46 | import org.springframework.http.MediaType;
|
49 | 47 | import org.springframework.http.ResponseEntity;
|
@@ -394,30 +392,7 @@ public RequestHeadersSpec<?> syncBody(Object body) {
|
394 | 392 | @Override
|
395 | 393 | public ResponseSpec retrieve() {
|
396 | 394 | 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); |
421 | 396 | }
|
422 | 397 |
|
423 | 398 | @Override
|
@@ -528,21 +503,25 @@ private static class DefaultResponseSpec implements ResponseSpec {
|
528 | 503 | private static final StatusHandler DEFAULT_STATUS_HANDLER =
|
529 | 504 | new StatusHandler(STATUS_CODE_ERROR, ClientResponse::createException);
|
530 | 505 |
|
531 |
| - private final Mono<ClientResponse> responseMono; |
532 | 506 |
|
533 |
| - private final Supplier<HttpRequest> requestSupplier; |
| 507 | + private final HttpMethod httpMethod; |
| 508 | + |
| 509 | + private final URI uri; |
| 510 | + |
| 511 | + private final Mono<ClientResponse> responseMono; |
534 | 512 |
|
535 | 513 | private final List<StatusHandler> statusHandlers = new ArrayList<>(1);
|
536 | 514 |
|
537 | 515 | private final int defaultStatusHandlerCount;
|
538 | 516 |
|
539 | 517 |
|
540 | 518 | DefaultResponseSpec(
|
541 |
| - Mono<ClientResponse> responseMono, Supplier<HttpRequest> requestSupplier, |
| 519 | + HttpMethod httpMethod, URI uri, Mono<ClientResponse> responseMono, |
542 | 520 | List<StatusHandler> defaultStatusHandlers) {
|
543 | 521 |
|
| 522 | + this.httpMethod = httpMethod; |
| 523 | + this.uri = uri; |
544 | 524 | this.responseMono = responseMono;
|
545 |
| - this.requestSupplier = requestSupplier; |
546 | 525 | this.statusHandlers.addAll(defaultStatusHandlers);
|
547 | 526 | this.statusHandlers.add(DEFAULT_STATUS_HANDLER);
|
548 | 527 | this.defaultStatusHandlerCount = this.statusHandlers.size();
|
@@ -696,21 +675,14 @@ private <T> Mono<T> applyStatusHandlers(ClientResponse response) {
|
696 | 675 | exMono = releaseIfNotConsumed(response, ex2);
|
697 | 676 | }
|
698 | 677 | 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]"); |
701 | 680 | }
|
702 | 681 | }
|
703 | 682 | return null;
|
704 | 683 | }
|
705 | 684 |
|
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) { |
714 | 686 | if (StringUtils.hasText(uri.getQuery())) {
|
715 | 687 | try {
|
716 | 688 | uri = new URI(uri.getScheme(), uri.getHost(), uri.getPath(), null);
|
|
0 commit comments