Skip to content

Commit 2b113e3

Browse files
committed
Minor refactoring
Closes gh-33697
1 parent 73e5aa3 commit 2b113e3

File tree

1 file changed

+36
-30
lines changed

1 file changed

+36
-30
lines changed

spring-web/src/main/java/org/springframework/web/client/DefaultRestClient.java

+36-30
Original file line numberDiff line numberDiff line change
@@ -553,14 +553,16 @@ private <T> T exchangeInternal(ExchangeFunction<T> exchangeFunction, boolean clo
553553
URI uri = null;
554554
try {
555555
uri = initUri();
556-
HttpHeaders headers = initHeaders();
557-
MultiValueMap<String, String> cookies = initCookies();
558-
if (!CollectionUtils.isEmpty(cookies)) {
559-
headers.set(HttpHeaders.COOKIE, serializeCookies(cookies));
556+
String serializedCookies = serializeCookies();
557+
if (serializedCookies != null) {
558+
getHeaders().set(HttpHeaders.COOKIE, serializedCookies);
560559
}
560+
HttpHeaders headers = initHeaders();
561561

562562
ClientHttpRequest clientRequest = createRequest(uri);
563-
clientRequest.getHeaders().addAll(headers);
563+
if (headers != null) {
564+
clientRequest.getHeaders().addAll(headers);
565+
}
564566
Map<String, Object> attributes = getAttributes();
565567
clientRequest.getAttributes().putAll(attributes);
566568
ClientRequestObservationContext observationContext = new ClientRequestObservationContext(clientRequest);
@@ -617,42 +619,28 @@ private URI initUri() {
617619
return (this.uri != null ? this.uri : DefaultRestClient.this.uriBuilderFactory.expand(""));
618620
}
619621

620-
private HttpHeaders initHeaders() {
621-
HttpHeaders defaultHeaders = DefaultRestClient.this.defaultHeaders;
622-
if (CollectionUtils.isEmpty(this.headers)) {
623-
return (defaultHeaders != null ? defaultHeaders : new HttpHeaders());
624-
}
625-
else if (CollectionUtils.isEmpty(defaultHeaders)) {
626-
return this.headers;
627-
}
628-
else {
629-
HttpHeaders result = new HttpHeaders();
630-
result.putAll(defaultHeaders);
631-
result.putAll(this.headers);
632-
return result;
633-
}
634-
}
635-
636-
private MultiValueMap<String, String> initCookies() {
622+
@Nullable
623+
private String serializeCookies() {
624+
MultiValueMap<String, String> map;
637625
MultiValueMap<String, String> defaultCookies = DefaultRestClient.this.defaultCookies;
638626
if (CollectionUtils.isEmpty(this.cookies)) {
639-
return (defaultCookies != null ? defaultCookies : new LinkedMultiValueMap<>());
627+
map = defaultCookies;
640628
}
641629
else if (CollectionUtils.isEmpty(defaultCookies)) {
642-
return this.cookies;
630+
map = this.cookies;
643631
}
644632
else {
645-
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
646-
map.putAll(DefaultRestClient.this.defaultCookies);
633+
map = new LinkedMultiValueMap<>(defaultCookies.size() + this.cookies.size());
634+
map.putAll(defaultCookies);
647635
map.putAll(this.cookies);
648-
return map;
649636
}
637+
return (!CollectionUtils.isEmpty(map) ? serializeCookies(map) : null);
650638
}
651639

652-
private String serializeCookies(MultiValueMap<String, String> cookies) {
640+
private static String serializeCookies(MultiValueMap<String, String> map) {
653641
boolean first = true;
654642
StringBuilder sb = new StringBuilder();
655-
for (Map.Entry<String, List<String>> entry : cookies.entrySet()) {
643+
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
656644
for (String value : entry.getValue()) {
657645
if (!first) {
658646
sb.append("; ");
@@ -666,12 +654,30 @@ private String serializeCookies(MultiValueMap<String, String> cookies) {
666654
return sb.toString();
667655
}
668656

657+
@Nullable
658+
private HttpHeaders initHeaders() {
659+
HttpHeaders defaultHeaders = DefaultRestClient.this.defaultHeaders;
660+
if (CollectionUtils.isEmpty(this.headers)) {
661+
return defaultHeaders;
662+
}
663+
else if (CollectionUtils.isEmpty(defaultHeaders)) {
664+
return this.headers;
665+
}
666+
else {
667+
HttpHeaders result = new HttpHeaders();
668+
result.putAll(defaultHeaders);
669+
result.putAll(this.headers);
670+
return result;
671+
}
672+
}
673+
669674
private ClientHttpRequest createRequest(URI uri) throws IOException {
670675
ClientHttpRequestFactory factory;
671676
if (DefaultRestClient.this.interceptors != null) {
672677
factory = DefaultRestClient.this.interceptingRequestFactory;
673678
if (factory == null) {
674-
factory = new InterceptingClientHttpRequestFactory(DefaultRestClient.this.clientRequestFactory, DefaultRestClient.this.interceptors);
679+
factory = new InterceptingClientHttpRequestFactory(
680+
DefaultRestClient.this.clientRequestFactory, DefaultRestClient.this.interceptors);
675681
DefaultRestClient.this.interceptingRequestFactory = factory;
676682
}
677683
}

0 commit comments

Comments
 (0)