Skip to content

Commit

Permalink
Copy strategiesConfigurers when cloning WebClient.Builder
Browse files Browse the repository at this point in the history
This commit fixes the missing `strategiesConfigurers` copy when the
`WebClient.Builder` is cloned.

Fixes gh-24329
  • Loading branch information
bclozel committed Jan 10, 2020
1 parent bdb9f95 commit a31a4f8
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -114,6 +114,7 @@ public DefaultWebClientBuilder(DefaultWebClientBuilder other) {
this.filters = other.filters != null ? new ArrayList<>(other.filters) : null;
this.connector = other.connector;
this.strategies = other.strategies;
this.strategiesConfigurers = other.strategiesConfigurers != null ? new ArrayList<>(other.strategiesConfigurers) : null;
this.exchangeFunction = other.exchangeFunction;
}

Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -20,6 +20,7 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Predicate;

import org.junit.jupiter.api.BeforeEach;
Expand All @@ -36,6 +37,7 @@
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.codec.ClientCodecConfigurer;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
Expand Down Expand Up @@ -231,6 +233,23 @@ public void mutateDoesCopy() {
builder1a.defaultCookies(cookies -> assertThat(cookies.size()).isEqualTo(2));
}

@Test
void cloneBuilder() {
Consumer<ClientCodecConfigurer> codecsConfig = c -> {};
ExchangeFunction exchangeFunction = request -> Mono.empty();
WebClient.Builder builder = WebClient.builder().baseUrl("https://example.org")
.exchangeFunction(exchangeFunction)
.filter((request, next) -> Mono.empty())
.codecs(codecsConfig);

WebClient.Builder clonedBuilder = builder.clone();

assertThat(clonedBuilder).extracting("baseUrl").isEqualTo("https://example.org");
assertThat(clonedBuilder).extracting("filters").isNotNull();
assertThat(clonedBuilder).extracting("strategiesConfigurers").isNotNull();
assertThat(clonedBuilder).extracting("exchangeFunction").isEqualTo(exchangeFunction);
}

@Test
public void withStringAttribute() {
Map<String, Object> actual = new HashMap<>();
Expand Down

0 comments on commit a31a4f8

Please sign in to comment.