Skip to content

Commit cd8955f

Browse files
yuzawa-sanrstoyanchev
authored andcommitted
Remove extra copy in WebClient headers/cookies
See gh-30092
1 parent d18bcb3 commit cd8955f

File tree

2 files changed

+28
-47
lines changed

2 files changed

+28
-47
lines changed

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

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -370,8 +370,8 @@ public ResponseSpec exchange() {
370370

371371
private ClientRequest.Builder initRequestBuilder() {
372372
ClientRequest.Builder builder = ClientRequest.create(this.httpMethod, initUri())
373-
.headers(headers -> headers.addAll(initHeaders()))
374-
.cookies(cookies -> cookies.addAll(initCookies()))
373+
.headers(this::initHeaders)
374+
.cookies(this::initCookies)
375375
.attributes(attributes -> attributes.putAll(this.attributes));
376376
if (this.httpRequestConsumer != null) {
377377
builder.httpRequest(this.httpRequestConsumer);
@@ -383,28 +383,21 @@ private URI initUri() {
383383
return (this.uri != null ? this.uri : uriBuilderFactory.expand(""));
384384
}
385385

386-
private HttpHeaders initHeaders() {
387-
if (CollectionUtils.isEmpty(defaultHeaders)) {
388-
return this.headers;
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);
389392
}
390-
HttpHeaders result = new HttpHeaders();
391-
result.putAll(defaultHeaders);
392-
result.putAll(this.headers);
393-
return result;
394393
}
395394

396-
private MultiValueMap<String, String> initCookies() {
397-
if (CollectionUtils.isEmpty(this.cookies)) {
398-
return (defaultCookies != null ? defaultCookies : new LinkedMultiValueMap<>());
395+
private void initCookies(MultiValueMap<String, String> out) {
396+
if (!CollectionUtils.isEmpty(defaultCookies)) {
397+
out.putAll(defaultCookies);
399398
}
400-
else if (CollectionUtils.isEmpty(defaultCookies)) {
401-
return this.cookies;
402-
}
403-
else {
404-
MultiValueMap<String, String> result = new LinkedMultiValueMap<>();
405-
result.putAll(defaultCookies);
406-
result.putAll(this.cookies);
407-
return result;
399+
if (!CollectionUtils.isEmpty(this.cookies)) {
400+
out.putAll(this.cookies);
408401
}
409402
}
410403
}

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

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -401,8 +401,6 @@ private HttpRequest createRequest() {
401401
return new HttpRequest() {
402402
private final URI uri = initUri();
403403

404-
private final HttpHeaders headers = initHeaders();
405-
406404
@Override
407405
public HttpMethod getMethod() {
408406
return httpMethod;
@@ -415,7 +413,9 @@ public URI getURI() {
415413

416414
@Override
417415
public HttpHeaders getHeaders() {
418-
return this.headers;
416+
HttpHeaders headers = new HttpHeaders();
417+
initHeaders(headers);
418+
return headers;
419419
}
420420
};
421421
}
@@ -488,8 +488,8 @@ private ClientRequest.Builder initRequestBuilder() {
488488
defaultRequest.accept(this);
489489
}
490490
ClientRequest.Builder builder = ClientRequest.create(this.httpMethod, initUri())
491-
.headers(headers -> headers.addAll(initHeaders()))
492-
.cookies(cookies -> cookies.addAll(initCookies()))
491+
.headers(this::initHeaders)
492+
.cookies(this::initCookies)
493493
.attributes(attributes -> attributes.putAll(this.attributes));
494494
if (this.httpRequestConsumer != null) {
495495
builder.httpRequest(this.httpRequestConsumer);
@@ -501,33 +501,21 @@ private URI initUri() {
501501
return (this.uri != null ? this.uri : uriBuilderFactory.expand(""));
502502
}
503503

504-
private HttpHeaders initHeaders() {
505-
if (CollectionUtils.isEmpty(this.headers)) {
506-
return (defaultHeaders != null ? defaultHeaders : new HttpHeaders());
507-
}
508-
else if (CollectionUtils.isEmpty(defaultHeaders)) {
509-
return this.headers;
504+
private void initHeaders(HttpHeaders out) {
505+
if (!CollectionUtils.isEmpty(defaultHeaders)) {
506+
out.putAll(defaultHeaders);
510507
}
511-
else {
512-
HttpHeaders result = new HttpHeaders();
513-
result.putAll(defaultHeaders);
514-
result.putAll(this.headers);
515-
return result;
508+
if (!CollectionUtils.isEmpty(this.headers)) {
509+
out.putAll(this.headers);
516510
}
517511
}
518512

519-
private MultiValueMap<String, String> initCookies() {
520-
if (CollectionUtils.isEmpty(this.cookies)) {
521-
return (defaultCookies != null ? defaultCookies : new LinkedMultiValueMap<>());
522-
}
523-
else if (CollectionUtils.isEmpty(defaultCookies)) {
524-
return this.cookies;
513+
private void initCookies(MultiValueMap<String, String> out) {
514+
if (!CollectionUtils.isEmpty(defaultCookies)) {
515+
out.putAll(defaultCookies);
525516
}
526-
else {
527-
MultiValueMap<String, String> result = new LinkedMultiValueMap<>();
528-
result.putAll(defaultCookies);
529-
result.putAll(this.cookies);
530-
return result;
517+
if (!CollectionUtils.isEmpty(this.cookies)) {
518+
out.putAll(this.cookies);
531519
}
532520
}
533521
}

0 commit comments

Comments
 (0)