From 2b113e3fd019519573fd4a5ba59aab9f84f6e3ff Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Wed, 23 Oct 2024 11:25:20 +0100 Subject: [PATCH] Minor refactoring Closes gh-33697 --- .../web/client/DefaultRestClient.java | 66 ++++++++++--------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/client/DefaultRestClient.java b/spring-web/src/main/java/org/springframework/web/client/DefaultRestClient.java index a2cf1eee6da..2273e74e61c 100644 --- a/spring-web/src/main/java/org/springframework/web/client/DefaultRestClient.java +++ b/spring-web/src/main/java/org/springframework/web/client/DefaultRestClient.java @@ -553,14 +553,16 @@ final class DefaultRestClient implements RestClient { URI uri = null; try { uri = initUri(); - HttpHeaders headers = initHeaders(); - MultiValueMap cookies = initCookies(); - if (!CollectionUtils.isEmpty(cookies)) { - headers.set(HttpHeaders.COOKIE, serializeCookies(cookies)); + String serializedCookies = serializeCookies(); + if (serializedCookies != null) { + getHeaders().set(HttpHeaders.COOKIE, serializedCookies); } + HttpHeaders headers = initHeaders(); ClientHttpRequest clientRequest = createRequest(uri); - clientRequest.getHeaders().addAll(headers); + if (headers != null) { + clientRequest.getHeaders().addAll(headers); + } Map attributes = getAttributes(); clientRequest.getAttributes().putAll(attributes); ClientRequestObservationContext observationContext = new ClientRequestObservationContext(clientRequest); @@ -617,42 +619,28 @@ final class DefaultRestClient implements RestClient { return (this.uri != null ? this.uri : DefaultRestClient.this.uriBuilderFactory.expand("")); } - private HttpHeaders initHeaders() { - HttpHeaders defaultHeaders = DefaultRestClient.this.defaultHeaders; - if (CollectionUtils.isEmpty(this.headers)) { - return (defaultHeaders != null ? defaultHeaders : new HttpHeaders()); - } - else if (CollectionUtils.isEmpty(defaultHeaders)) { - return this.headers; - } - else { - HttpHeaders result = new HttpHeaders(); - result.putAll(defaultHeaders); - result.putAll(this.headers); - return result; - } - } - - private MultiValueMap initCookies() { + @Nullable + private String serializeCookies() { + MultiValueMap map; MultiValueMap defaultCookies = DefaultRestClient.this.defaultCookies; if (CollectionUtils.isEmpty(this.cookies)) { - return (defaultCookies != null ? defaultCookies : new LinkedMultiValueMap<>()); + map = defaultCookies; } else if (CollectionUtils.isEmpty(defaultCookies)) { - return this.cookies; + map = this.cookies; } else { - MultiValueMap map = new LinkedMultiValueMap<>(); - map.putAll(DefaultRestClient.this.defaultCookies); + map = new LinkedMultiValueMap<>(defaultCookies.size() + this.cookies.size()); + map.putAll(defaultCookies); map.putAll(this.cookies); - return map; } + return (!CollectionUtils.isEmpty(map) ? serializeCookies(map) : null); } - private String serializeCookies(MultiValueMap cookies) { + private static String serializeCookies(MultiValueMap map) { boolean first = true; StringBuilder sb = new StringBuilder(); - for (Map.Entry> entry : cookies.entrySet()) { + for (Map.Entry> entry : map.entrySet()) { for (String value : entry.getValue()) { if (!first) { sb.append("; "); @@ -666,12 +654,30 @@ final class DefaultRestClient implements RestClient { return sb.toString(); } + @Nullable + private HttpHeaders initHeaders() { + HttpHeaders defaultHeaders = DefaultRestClient.this.defaultHeaders; + if (CollectionUtils.isEmpty(this.headers)) { + return defaultHeaders; + } + else if (CollectionUtils.isEmpty(defaultHeaders)) { + return this.headers; + } + else { + HttpHeaders result = new HttpHeaders(); + result.putAll(defaultHeaders); + result.putAll(this.headers); + return result; + } + } + private ClientHttpRequest createRequest(URI uri) throws IOException { ClientHttpRequestFactory factory; if (DefaultRestClient.this.interceptors != null) { factory = DefaultRestClient.this.interceptingRequestFactory; if (factory == null) { - factory = new InterceptingClientHttpRequestFactory(DefaultRestClient.this.clientRequestFactory, DefaultRestClient.this.interceptors); + factory = new InterceptingClientHttpRequestFactory( + DefaultRestClient.this.clientRequestFactory, DefaultRestClient.this.interceptors); DefaultRestClient.this.interceptingRequestFactory = factory; } }