Browse Source

Copy strategiesConfigurers when cloning WebClient.Builder

This commit fixes the missing `strategiesConfigurers` copy when the
`WebClient.Builder` is cloned.

Fixes gh-24329
pull/24332/head
Brian Clozel 5 years ago
parent
commit
a31a4f8148
  1. 3
      spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java
  2. 21
      spring-webflux/src/test/java/org/springframework/web/reactive/function/client/DefaultWebClientTests.java

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

@ -1,5 +1,5 @@ @@ -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.
@ -114,6 +114,7 @@ final class DefaultWebClientBuilder implements WebClient.Builder { @@ -114,6 +114,7 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
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;
}

21
spring-webflux/src/test/java/org/springframework/web/reactive/function/client/DefaultWebClientTests.java

@ -1,5 +1,5 @@ @@ -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.
@ -20,6 +20,7 @@ import java.time.Duration; @@ -20,6 +20,7 @@ import java.time.Duration;
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;
@ -36,6 +37,7 @@ import org.springframework.core.NamedThreadLocal; @@ -36,6 +37,7 @@ import org.springframework.core.NamedThreadLocal;
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;
@ -231,6 +233,23 @@ public class DefaultWebClientTests { @@ -231,6 +233,23 @@ public class DefaultWebClientTests {
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<>();

Loading…
Cancel
Save