Skip to content

Commit cf5bbce

Browse files
committed
Avoid unnecessary copy of cookies map in DefaultWebClientBuilder
See gh-25034
1 parent a80e36f commit cf5bbce

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

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

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -101,20 +101,24 @@ public DefaultWebClientBuilder(DefaultWebClientBuilder other) {
101101
this.defaultUriVariables = (other.defaultUriVariables != null ?
102102
new LinkedHashMap<>(other.defaultUriVariables) : null);
103103
this.uriBuilderFactory = other.uriBuilderFactory;
104+
104105
if (other.defaultHeaders != null) {
105106
this.defaultHeaders = new HttpHeaders();
106107
this.defaultHeaders.putAll(other.defaultHeaders);
107108
}
108109
else {
109110
this.defaultHeaders = null;
110111
}
112+
111113
this.defaultCookies = (other.defaultCookies != null ?
112114
new LinkedMultiValueMap<>(other.defaultCookies) : null);
113115
this.defaultRequest = other.defaultRequest;
114-
this.filters = other.filters != null ? new ArrayList<>(other.filters) : null;
116+
this.filters = (other.filters != null ? new ArrayList<>(other.filters) : null);
117+
115118
this.connector = other.connector;
116119
this.strategies = other.strategies;
117-
this.strategiesConfigurers = other.strategiesConfigurers != null ? new ArrayList<>(other.strategiesConfigurers) : null;
120+
this.strategiesConfigurers = (other.strategiesConfigurers != null ?
121+
new ArrayList<>(other.strategiesConfigurers) : null);
118122
this.exchangeFunction = other.exchangeFunction;
119123
}
120124

@@ -260,8 +264,8 @@ public WebClient build() {
260264
.map(filter -> filter.apply(exchange))
261265
.orElse(exchange) : exchange);
262266
return new DefaultWebClient(filteredExchange, initUriBuilderFactory(),
263-
this.defaultHeaders != null ? unmodifiableCopy(this.defaultHeaders) : null,
264-
this.defaultCookies != null ? unmodifiableCopy(this.defaultCookies) : null,
267+
this.defaultHeaders != null ? HttpHeaders.readOnlyHttpHeaders(this.defaultHeaders) : null,
268+
this.defaultCookies != null ? CollectionUtils.unmodifiableMultiValueMap(this.defaultCookies) : null,
265269
this.defaultRequest, new DefaultWebClientBuilder(this));
266270
}
267271

@@ -280,10 +284,10 @@ else if (jettyClientPresent) {
280284

281285
private ExchangeStrategies initExchangeStrategies() {
282286
if (CollectionUtils.isEmpty(this.strategiesConfigurers)) {
283-
return this.strategies != null ? this.strategies : ExchangeStrategies.withDefaults();
287+
return (this.strategies != null ? this.strategies : ExchangeStrategies.withDefaults());
284288
}
285289
ExchangeStrategies.Builder builder =
286-
this.strategies != null ? this.strategies.mutate() : ExchangeStrategies.builder();
290+
(this.strategies != null ? this.strategies.mutate() : ExchangeStrategies.builder());
287291
this.strategiesConfigurers.forEach(configurer -> configurer.accept(builder));
288292
return builder.build();
289293
}
@@ -292,18 +296,10 @@ private UriBuilderFactory initUriBuilderFactory() {
292296
if (this.uriBuilderFactory != null) {
293297
return this.uriBuilderFactory;
294298
}
295-
DefaultUriBuilderFactory factory = this.baseUrl != null ?
296-
new DefaultUriBuilderFactory(this.baseUrl) : new DefaultUriBuilderFactory();
299+
DefaultUriBuilderFactory factory = (this.baseUrl != null ?
300+
new DefaultUriBuilderFactory(this.baseUrl) : new DefaultUriBuilderFactory());
297301
factory.setDefaultUriVariables(this.defaultUriVariables);
298302
return factory;
299303
}
300304

301-
private static HttpHeaders unmodifiableCopy(HttpHeaders headers) {
302-
return HttpHeaders.readOnlyHttpHeaders(headers);
303-
}
304-
305-
private static <K, V> MultiValueMap<K, V> unmodifiableCopy(MultiValueMap<K, V> map) {
306-
return CollectionUtils.unmodifiableMultiValueMap(new LinkedMultiValueMap<>(map));
307-
}
308-
309305
}

0 commit comments

Comments
 (0)