diff --git a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/RSocketRequester.java b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/RSocketRequester.java
index 3cccb614080..320b45f3510 100644
--- a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/RSocketRequester.java
+++ b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/RSocketRequester.java
@@ -169,19 +169,18 @@ public interface RSocketRequester {
RSocketRequester.Builder setupMetadata(Object value, @Nullable MimeType mimeType);
/**
- * Provide the {@link RSocketStrategies} to use.
- *
This is useful for changing the default settings, yet still allowing
- * further customizations via {@link #rsocketStrategies(Consumer)}.
- * If not set, defaults are obtained from {@link RSocketStrategies#builder()}.
- * @param strategies the strategies to use
+ * Provide {@link RSocketStrategies} to use.
+ *
By default this is based on default settings of
+ * {@link RSocketStrategies.Builder} but may be further customized via
+ * {@link #rsocketStrategies(Consumer)}.
*/
RSocketRequester.Builder rsocketStrategies(@Nullable RSocketStrategies strategies);
/**
* Customize the {@link RSocketStrategies}.
- *
Allows further customization on {@link RSocketStrategies},
- * mutating them if they were {@link #rsocketStrategies(RSocketStrategies) set},
- * or starting from {@link RSocketStrategies#builder()} defaults}.
+ *
By default this starts out as {@link RSocketStrategies#builder()}.
+ * However if strategies were {@link #rsocketStrategies(RSocketStrategies) set}
+ * explicitly, then they are {@link RSocketStrategies#mutate() mutated}.
*/
RSocketRequester.Builder rsocketStrategies(Consumer configurer);
diff --git a/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java b/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java
index 4d5aeca17eb..f314b4455da 100644
--- a/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java
+++ b/spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 the original author or authors.
+ * Copyright 2002-2018 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.
@@ -137,24 +137,11 @@ class DefaultWebTestClientBuilder implements WebTestClient.Builder {
}
@Override
- @Deprecated
public WebTestClient.Builder exchangeStrategies(ExchangeStrategies strategies) {
this.webClientBuilder.exchangeStrategies(strategies);
return this;
}
- @Override
- public WebTestClient.Builder exchangeStrategies(ExchangeStrategies.Builder strategies) {
- this.webClientBuilder.exchangeStrategies(strategies);
- return this;
- }
-
- @Override
- public WebTestClient.Builder exchangeStrategies(Consumer configurer) {
- this.webClientBuilder.exchangeStrategies(configurer);
- return this;
- }
-
@Override
public WebTestClient.Builder responseTimeout(Duration timeout) {
this.responseTimeout = timeout;
diff --git a/spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClient.java b/spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClient.java
index f7a0e78824d..7111b8d5284 100644
--- a/spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClient.java
+++ b/spring-test/src/main/java/org/springframework/test/web/reactive/server/WebTestClient.java
@@ -84,7 +84,6 @@ import org.springframework.web.util.UriBuilderFactory;
* perform integration tests on an embedded WebFlux server.
*
* @author Rossen Stoyanchev
- * @author Brian Clozel
* @since 5.0
* @see StatusAssertions
* @see HeaderAssertions
@@ -444,34 +443,11 @@ public interface WebTestClient {
/**
* Configure the {@link ExchangeStrategies} to use.
- * This is useful for changing the default settings, yet still allowing
- * further customizations via {@link #exchangeStrategies(Consumer)}.
- * By default {@link ExchangeStrategies#withDefaults()} is used.
+ *
By default {@link ExchangeStrategies#withDefaults()} is used.
* @param strategies the strategies to use
- * @deprecated as of 5.1 in favor of {@link #exchangeStrategies(ExchangeStrategies.Builder)}
*/
- @Deprecated
Builder exchangeStrategies(ExchangeStrategies strategies);
- /**
- * Configure the {@link ExchangeStrategies.Builder} to use.
- *
This is useful for changing the default settings, yet still allowing
- * further customizations via {@link #exchangeStrategies(Consumer)}.
- * By default {@link ExchangeStrategies#builder()} is used.
- * @param strategies the strategies to use
- * @since 5.1.12
- */
- Builder exchangeStrategies(ExchangeStrategies.Builder strategies);
-
- /**
- * Customize the {@link ExchangeStrategies}.
- *
Allows further customization on {@link ExchangeStrategies},
- * mutating them if they were {@link #exchangeStrategies(ExchangeStrategies) set},
- * or starting from {@link ExchangeStrategies#withDefaults() defaults}.
- * @since 5.1.12
- */
- Builder exchangeStrategies(Consumer configurer);
-
/**
* Max amount of time to wait for responses.
* By default 5 seconds.
@@ -952,7 +928,7 @@ public interface WebTestClient {
* @since 5.1
* @see #xpath(String, Map, Object...)
*/
- default XpathAssertions xpath(String expression, Object... args) {
+ default XpathAssertions xpath(String expression, Object... args){
return xpath(expression, null, args);
}
@@ -966,7 +942,7 @@ public interface WebTestClient {
* @param args arguments to parameterize the expression
* @since 5.1
*/
- XpathAssertions xpath(String expression, @Nullable Map namespaces, Object... args);
+ XpathAssertions xpath(String expression, @Nullable Map namespaces, Object... args);
/**
* Assert the response body content with the given {@link Consumer}.
diff --git a/spring-web/src/main/java/org/springframework/http/codec/ClientCodecConfigurer.java b/spring-web/src/main/java/org/springframework/http/codec/ClientCodecConfigurer.java
index 028d85af381..db31e97218a 100644
--- a/spring-web/src/main/java/org/springframework/http/codec/ClientCodecConfigurer.java
+++ b/spring-web/src/main/java/org/springframework/http/codec/ClientCodecConfigurer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 the original author or authors.
+ * Copyright 2002-2018 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.
@@ -63,11 +63,6 @@ public interface ClientCodecConfigurer extends CodecConfigurer {
@Override
ClientDefaultCodecs defaultCodecs();
- /**
- * Clone this {@link ClientCodecConfigurer}.
- */
- @Override
- ClientCodecConfigurer clone();
/**
* Static factory method for a {@code ClientCodecConfigurer}.
diff --git a/spring-web/src/main/java/org/springframework/http/codec/CodecConfigurer.java b/spring-web/src/main/java/org/springframework/http/codec/CodecConfigurer.java
index 55184522c53..4e1ca8bd013 100644
--- a/spring-web/src/main/java/org/springframework/http/codec/CodecConfigurer.java
+++ b/spring-web/src/main/java/org/springframework/http/codec/CodecConfigurer.java
@@ -87,12 +87,6 @@ public interface CodecConfigurer {
*/
List> getWriters();
- /**
- * Clone this {@link CodecConfigurer}.
- * @since 5.1.12
- */
- CodecConfigurer clone();
-
/**
* Customize or replace the HTTP message readers and writers registered by
diff --git a/spring-web/src/main/java/org/springframework/http/codec/support/BaseCodecConfigurer.java b/spring-web/src/main/java/org/springframework/http/codec/support/BaseCodecConfigurer.java
index 6d7c6193884..3c6b367c22a 100644
--- a/spring-web/src/main/java/org/springframework/http/codec/support/BaseCodecConfigurer.java
+++ b/spring-web/src/main/java/org/springframework/http/codec/support/BaseCodecConfigurer.java
@@ -34,14 +34,13 @@ import org.springframework.util.Assert;
* client and server specific variants.
*
* @author Rossen Stoyanchev
- * @author Brian Clozel
* @since 5.0
*/
class BaseCodecConfigurer implements CodecConfigurer {
- protected final BaseDefaultCodecs defaultCodecs;
+ private final BaseDefaultCodecs defaultCodecs;
- protected final DefaultCustomCodecs customCodecs;
+ private final DefaultCustomCodecs customCodecs = new DefaultCustomCodecs();
/**
@@ -51,16 +50,6 @@ class BaseCodecConfigurer implements CodecConfigurer {
BaseCodecConfigurer(BaseDefaultCodecs defaultCodecs) {
Assert.notNull(defaultCodecs, "'defaultCodecs' is required");
this.defaultCodecs = defaultCodecs;
- this.customCodecs = new DefaultCustomCodecs();
- }
-
- /**
- * Constructor with another {@link BaseCodecConfigurer} to copy
- * the configuration from.
- */
- BaseCodecConfigurer(BaseCodecConfigurer other) {
- this.defaultCodecs = other.cloneDefaultCodecs();
- this.customCodecs = new DefaultCustomCodecs(other.customCodecs);
}
@@ -98,17 +87,6 @@ class BaseCodecConfigurer implements CodecConfigurer {
return getWritersInternal(false);
}
-
- @Override
- public CodecConfigurer clone() {
- return new BaseCodecConfigurer(this);
- }
-
- protected BaseDefaultCodecs cloneDefaultCodecs() {
- return new BaseDefaultCodecs(this.defaultCodecs);
- }
-
-
/**
* Internal method that returns the configured writers.
* @param forMultipart whether to returns writers for general use ("false"),
@@ -132,7 +110,7 @@ class BaseCodecConfigurer implements CodecConfigurer {
/**
* Default implementation of {@code CustomCodecs}.
*/
- protected static final class DefaultCustomCodecs implements CustomCodecs {
+ private static final class DefaultCustomCodecs implements CustomCodecs {
private final List> typedReaders = new ArrayList<>();
@@ -143,16 +121,6 @@ class BaseCodecConfigurer implements CodecConfigurer {
private final List> objectWriters = new ArrayList<>();
- DefaultCustomCodecs() {
- }
-
- DefaultCustomCodecs(DefaultCustomCodecs other) {
- other.typedReaders.addAll(this.typedReaders);
- other.typedWriters.addAll(this.typedWriters);
- other.objectReaders.addAll(this.objectReaders);
- other.objectWriters.addAll(this.objectWriters);
- }
-
@Override
public void decoder(Decoder> decoder) {
reader(new DecoderHttpMessageReader<>(decoder));
@@ -175,6 +143,7 @@ class BaseCodecConfigurer implements CodecConfigurer {
(canWriteObject ? this.objectWriters : this.typedWriters).add(writer);
}
+
// Package private accessors...
List> getTypedReaders() {
diff --git a/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java b/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java
index 1020db44d90..39d76ad0ddb 100644
--- a/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java
+++ b/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java
@@ -106,21 +106,6 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs {
private boolean registerDefaults = true;
- BaseDefaultCodecs() {
- }
-
- protected BaseDefaultCodecs(BaseDefaultCodecs other) {
- this.jackson2JsonDecoder = other.jackson2JsonDecoder;
- this.jackson2JsonEncoder = other.jackson2JsonEncoder;
- this.protobufDecoder = other.protobufDecoder;
- this.protobufEncoder = other.protobufEncoder;
- this.jaxb2Decoder = other.jaxb2Decoder;
- this.jaxb2Encoder = other.jaxb2Encoder;
- this.maxInMemorySize = other.maxInMemorySize;
- this.enableLoggingRequestDetails = other.enableLoggingRequestDetails;
- this.registerDefaults = other.registerDefaults;
- }
-
@Override
public void jackson2JsonDecoder(Decoder> decoder) {
this.jackson2JsonDecoder = decoder;
diff --git a/spring-web/src/main/java/org/springframework/http/codec/support/ClientDefaultCodecsImpl.java b/spring-web/src/main/java/org/springframework/http/codec/support/ClientDefaultCodecsImpl.java
index e764cb96961..9f578b7320a 100644
--- a/spring-web/src/main/java/org/springframework/http/codec/support/ClientDefaultCodecsImpl.java
+++ b/spring-web/src/main/java/org/springframework/http/codec/support/ClientDefaultCodecsImpl.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 the original author or authors.
+ * Copyright 2002-2018 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.
@@ -49,17 +49,6 @@ class ClientDefaultCodecsImpl extends BaseDefaultCodecs implements ClientCodecCo
private Supplier>> partWritersSupplier;
- ClientDefaultCodecsImpl() {
- }
-
- ClientDefaultCodecsImpl(ClientDefaultCodecsImpl other) {
- super(other);
- this.multipartCodecs = new DefaultMultipartCodecs(other.multipartCodecs);
- this.sseDecoder = other.sseDecoder;
- this.partWritersSupplier = other.partWritersSupplier;
- }
-
-
/**
* Set a supplier for part writers to use when
* {@link #multipartCodecs()} are not explicitly configured.
@@ -84,14 +73,6 @@ class ClientDefaultCodecsImpl extends BaseDefaultCodecs implements ClientCodecCo
this.sseDecoder = decoder;
}
- @Override
- public ClientDefaultCodecsImpl clone() {
- ClientDefaultCodecsImpl codecs = new ClientDefaultCodecsImpl();
- codecs.multipartCodecs = this.multipartCodecs;
- codecs.sseDecoder = this.sseDecoder;
- codecs.partWritersSupplier = this.partWritersSupplier;
- return codecs;
- }
@Override
protected void extendObjectReaders(List> objectReaders) {
@@ -135,17 +116,6 @@ class ClientDefaultCodecsImpl extends BaseDefaultCodecs implements ClientCodecCo
private final List> writers = new ArrayList<>();
-
- DefaultMultipartCodecs() {
- }
-
- DefaultMultipartCodecs(@Nullable DefaultMultipartCodecs other) {
- if (other != null) {
- this.writers.addAll(other.writers);
- }
- }
-
-
@Override
public ClientCodecConfigurer.MultipartCodecs encoder(Encoder> encoder) {
writer(new EncoderHttpMessageWriter<>(encoder));
diff --git a/spring-web/src/main/java/org/springframework/http/codec/support/DefaultClientCodecConfigurer.java b/spring-web/src/main/java/org/springframework/http/codec/support/DefaultClientCodecConfigurer.java
index 737282eecd5..9875ded1b98 100644
--- a/spring-web/src/main/java/org/springframework/http/codec/support/DefaultClientCodecConfigurer.java
+++ b/spring-web/src/main/java/org/springframework/http/codec/support/DefaultClientCodecConfigurer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 the original author or authors.
+ * Copyright 2002-2018 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.
@@ -26,30 +26,14 @@ import org.springframework.http.codec.ClientCodecConfigurer;
*/
public class DefaultClientCodecConfigurer extends BaseCodecConfigurer implements ClientCodecConfigurer {
-
public DefaultClientCodecConfigurer() {
super(new ClientDefaultCodecsImpl());
((ClientDefaultCodecsImpl) defaultCodecs()).setPartWritersSupplier(() -> getWritersInternal(true));
}
- private DefaultClientCodecConfigurer(DefaultClientCodecConfigurer other) {
- super(other);
- }
-
-
@Override
public ClientDefaultCodecs defaultCodecs() {
return (ClientDefaultCodecs) super.defaultCodecs();
}
- @Override
- public DefaultClientCodecConfigurer clone() {
- return new DefaultClientCodecConfigurer(this);
- }
-
- @Override
- protected BaseDefaultCodecs cloneDefaultCodecs() {
- return new ClientDefaultCodecsImpl((ClientDefaultCodecsImpl) defaultCodecs());
- }
-
}
diff --git a/spring-web/src/main/java/org/springframework/http/codec/support/DefaultServerCodecConfigurer.java b/spring-web/src/main/java/org/springframework/http/codec/support/DefaultServerCodecConfigurer.java
index 661d45d6669..2623d5a7f7b 100644
--- a/spring-web/src/main/java/org/springframework/http/codec/support/DefaultServerCodecConfigurer.java
+++ b/spring-web/src/main/java/org/springframework/http/codec/support/DefaultServerCodecConfigurer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 the original author or authors.
+ * Copyright 2002-2018 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.
@@ -26,28 +26,13 @@ import org.springframework.http.codec.ServerCodecConfigurer;
*/
public class DefaultServerCodecConfigurer extends BaseCodecConfigurer implements ServerCodecConfigurer {
-
public DefaultServerCodecConfigurer() {
super(new ServerDefaultCodecsImpl());
}
- private DefaultServerCodecConfigurer(BaseCodecConfigurer other) {
- super(other);
- }
-
-
@Override
public ServerDefaultCodecs defaultCodecs() {
return (ServerDefaultCodecs) super.defaultCodecs();
}
- @Override
- public DefaultServerCodecConfigurer clone() {
- return new DefaultServerCodecConfigurer(this);
- }
-
- @Override
- protected BaseDefaultCodecs cloneDefaultCodecs() {
- return new ServerDefaultCodecsImpl((ServerDefaultCodecsImpl) defaultCodecs());
- }
}
diff --git a/spring-web/src/main/java/org/springframework/http/codec/support/ServerDefaultCodecsImpl.java b/spring-web/src/main/java/org/springframework/http/codec/support/ServerDefaultCodecsImpl.java
index 1d997c3777b..37e924cd7e9 100644
--- a/spring-web/src/main/java/org/springframework/http/codec/support/ServerDefaultCodecsImpl.java
+++ b/spring-web/src/main/java/org/springframework/http/codec/support/ServerDefaultCodecsImpl.java
@@ -46,16 +46,6 @@ class ServerDefaultCodecsImpl extends BaseDefaultCodecs implements ServerCodecCo
private Encoder> sseEncoder;
- ServerDefaultCodecsImpl() {
- }
-
- ServerDefaultCodecsImpl(ServerDefaultCodecsImpl other) {
- super(other);
- this.multipartReader = other.multipartReader;
- this.sseEncoder = other.sseEncoder;
- }
-
-
@Override
public void multipartReader(HttpMessageReader> reader) {
this.multipartReader = reader;
diff --git a/spring-web/src/test/java/org/springframework/http/codec/support/CodecConfigurerTests.java b/spring-web/src/test/java/org/springframework/http/codec/support/CodecConfigurerTests.java
index 16164e24c51..1a27f640002 100644
--- a/spring-web/src/test/java/org/springframework/http/codec/support/CodecConfigurerTests.java
+++ b/spring-web/src/test/java/org/springframework/http/codec/support/CodecConfigurerTests.java
@@ -268,14 +268,6 @@ public class CodecConfigurerTests {
assertEncoderInstance(jaxb2Encoder);
}
- @Test
- public void cloneConfigurer() {
- CodecConfigurer clone = this.configurer.clone();
- this.configurer.registerDefaults(false);
- assertThat(this.configurer.getReaders().size()).isEqualTo(0);
- assertThat(clone.getReaders().size()).isEqualTo(11);
- }
-
private Decoder> getNextDecoder(List> readers) {
HttpMessageReader> reader = readers.get(this.index.getAndIncrement());
assertThat(reader.getClass()).isEqualTo(DecoderHttpMessageReader.class);
diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultExchangeStrategiesBuilder.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultExchangeStrategiesBuilder.java
index e39d4a59576..1b2d2edcc2b 100644
--- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultExchangeStrategiesBuilder.java
+++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultExchangeStrategiesBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2019 the original author or authors.
+ * Copyright 2002-2018 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.
@@ -43,18 +43,13 @@ final class DefaultExchangeStrategiesBuilder implements ExchangeStrategies.Build
}
- private final ClientCodecConfigurer codecConfigurer;
+ private final ClientCodecConfigurer codecConfigurer = ClientCodecConfigurer.create();
public DefaultExchangeStrategiesBuilder() {
- this.codecConfigurer = ClientCodecConfigurer.create();
this.codecConfigurer.registerDefaults(false);
}
- private DefaultExchangeStrategiesBuilder(DefaultExchangeStrategies other) {
- this.codecConfigurer = other.codecConfigurer.clone();
- }
-
public void defaultConfiguration() {
this.codecConfigurer.registerDefaults(true);
@@ -74,28 +69,19 @@ final class DefaultExchangeStrategiesBuilder implements ExchangeStrategies.Build
private static class DefaultExchangeStrategies implements ExchangeStrategies {
- private final ClientCodecConfigurer codecConfigurer;
-
private final List> readers;
private final List> writers;
public DefaultExchangeStrategies(ClientCodecConfigurer codecConfigurer) {
- this.codecConfigurer = codecConfigurer;
- this.readers = unmodifiableCopy(this.codecConfigurer.getReaders());
- this.writers = unmodifiableCopy(this.codecConfigurer.getWriters());
+ this.readers = unmodifiableCopy(codecConfigurer.getReaders());
+ this.writers = unmodifiableCopy(codecConfigurer.getWriters());
}
private static List unmodifiableCopy(List extends T> list) {
return Collections.unmodifiableList(new ArrayList<>(list));
}
- @Deprecated
- @Override
- public Builder mutate() {
- return new DefaultExchangeStrategiesBuilder(this);
- }
-
@Override
public List> messageReaders() {
return this.readers;
diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java
index 82b4c494086..db699ddaae1 100644
--- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java
+++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java
@@ -40,7 +40,6 @@ import org.springframework.web.util.UriBuilderFactory;
* Default implementation of {@link WebClient.Builder}.
*
* @author Rossen Stoyanchev
- * @author Brian Clozel
* @since 5.0
*/
final class DefaultWebClientBuilder implements WebClient.Builder {
@@ -80,16 +79,14 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
@Nullable
private ClientHttpConnector connector;
- @Nullable
- private ExchangeStrategies.Builder strategies;
-
- private List> strategiesConfigurers;
+ private ExchangeStrategies exchangeStrategies;
@Nullable
private ExchangeFunction exchangeFunction;
public DefaultWebClientBuilder() {
+ this.exchangeStrategies = ExchangeStrategies.withDefaults();
}
public DefaultWebClientBuilder(DefaultWebClientBuilder other) {
@@ -111,7 +108,7 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
this.defaultRequest = other.defaultRequest;
this.filters = other.filters != null ? new ArrayList<>(other.filters) : null;
this.connector = other.connector;
- this.strategies = other.strategies;
+ this.exchangeStrategies = other.exchangeStrategies;
this.exchangeFunction = other.exchangeFunction;
}
@@ -206,23 +203,9 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
}
@Override
- @Deprecated
public WebClient.Builder exchangeStrategies(ExchangeStrategies strategies) {
Assert.notNull(strategies, "ExchangeStrategies must not be null");
- this.strategies = strategies.mutate();
- return this;
- }
-
- @Override
- public WebClient.Builder exchangeStrategies(ExchangeStrategies.Builder strategies) {
- Assert.notNull(strategies, "ExchangeStrategies must not be null");
- this.strategies = strategies;
- return this;
- }
-
- @Override
- public WebClient.Builder exchangeStrategies(Consumer configurer) {
- this.strategiesConfigurers.add(configurer);
+ this.exchangeStrategies = strategies;
return this;
}
@@ -246,7 +229,7 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
@Override
public WebClient build() {
ExchangeFunction exchange = (this.exchangeFunction == null ?
- ExchangeFunctions.create(getOrInitConnector(), initExchangeStrategies()) :
+ ExchangeFunctions.create(getOrInitConnector(), this.exchangeStrategies) :
this.exchangeFunction);
ExchangeFunction filteredExchange = (this.filters != null ? this.filters.stream()
.reduce(ExchangeFilterFunction::andThen)
@@ -271,19 +254,6 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
throw new IllegalStateException("No suitable default ClientHttpConnector found");
}
- @SuppressWarnings("deprecation")
- private ExchangeStrategies initExchangeStrategies() {
- if (CollectionUtils.isEmpty(this.strategiesConfigurers)) {
- return this.strategies != null ? this.strategies.build() : ExchangeStrategies.withDefaults();
- }
-
- ExchangeStrategies.Builder builder =
- this.strategies != null ? this.strategies : ExchangeStrategies.builder();
-
- this.strategiesConfigurers.forEach(configurer -> configurer.accept(builder));
- return builder.build();
- }
-
private UriBuilderFactory initUriBuilderFactory() {
if (this.uriBuilderFactory != null) {
return this.uriBuilderFactory;
diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/ExchangeStrategies.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/ExchangeStrategies.java
index dfc2e1e14d5..804fbd9a42f 100644
--- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/ExchangeStrategies.java
+++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/ExchangeStrategies.java
@@ -47,18 +47,6 @@ public interface ExchangeStrategies {
*/
List> messageWriters();
- /**
- * Return a builder to create a new {@link ExchangeStrategies} instance
- * replicated from the current instance.
- * @since 5.1.12
- * @deprecated APIs should consume {@link ExchangeStrategies} as final or accept an
- * {@link ExchangeStrategies.Builder builder}.
- */
- @Deprecated
- default Builder mutate() {
- throw new UnsupportedOperationException("This ExchangeStrategies implementation does not support mutation.");
- }
-
// Static builder methods
diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClient.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClient.java
index 79fdc5a8c1e..57fb6397242 100644
--- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClient.java
+++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClient.java
@@ -66,7 +66,6 @@ import org.springframework.web.util.UriBuilderFactory;
* @author Rossen Stoyanchev
* @author Arjen Poutsma
* @author Sebastien Deleuze
- * @author Brian Clozel
* @since 5.0
*/
public interface WebClient {
@@ -291,35 +290,12 @@ public interface WebClient {
Builder clientConnector(ClientHttpConnector connector);
/**
- * Provide the {@link ExchangeStrategies} to use.
- * This is useful for changing the default settings, yet still allowing
- * further customizations via {@link #exchangeStrategies(Consumer)}.
- * If not set, defaults are obtained from {@link ExchangeStrategies#withDefaults()}.
+ * Configure the {@link ExchangeStrategies} to use.
+ *
By default this is obtained from {@link ExchangeStrategies#withDefaults()}.
* @param strategies the strategies to use
- * @deprecated as of 5.1, in favor of {@link #exchangeStrategies(ExchangeStrategies.Builder)}
*/
- @Deprecated
Builder exchangeStrategies(ExchangeStrategies strategies);
- /**
- * Provide the {@link ExchangeStrategies.Builder} to use.
- *
This is useful for changing the default settings, yet still allowing
- * further customizations via {@link #exchangeStrategies(Consumer)}.
- * If not set, defaults are obtained from {@link ExchangeStrategies#builder()}.
- * @param strategies the strategies to use
- * @since 5.1.12
- */
- Builder exchangeStrategies(ExchangeStrategies.Builder strategies);
-
- /**
- * Customize the {@link ExchangeStrategies}.
- *
Allows further customization on {@link ExchangeStrategies},
- * mutating them if they were {@link #exchangeStrategies(ExchangeStrategies) set},
- * or starting from {@link ExchangeStrategies#withDefaults() defaults}.
- * @since 5.1.12
- */
- Builder exchangeStrategies(Consumer configurer);
-
/**
* Provide an {@link ExchangeFunction} pre-configured with
* {@link ClientHttpConnector} and {@link ExchangeStrategies}.
diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/ExchangeStrategiesTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/ExchangeStrategiesTests.java
index af0eeb0f226..eb37921f7a1 100644
--- a/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/ExchangeStrategiesTests.java
+++ b/spring-webflux/src/test/java/org/springframework/web/reactive/function/client/ExchangeStrategiesTests.java
@@ -39,15 +39,4 @@ public class ExchangeStrategiesTests {
assertThat(strategies.messageWriters().isEmpty()).isFalse();
}
- @Test
- @SuppressWarnings("deprecation")
- public void mutate() {
- ExchangeStrategies strategies = ExchangeStrategies.empty().build();
- assertThat(strategies.messageReaders().isEmpty()).isTrue();
- assertThat(strategies.messageWriters().isEmpty()).isTrue();
- ExchangeStrategies mutated = strategies.mutate().codecs(codecs -> codecs.registerDefaults(true)).build();
- assertThat(mutated.messageReaders().isEmpty()).isFalse();
- assertThat(mutated.messageWriters().isEmpty()).isFalse();
- }
-
}
diff --git a/src/docs/asciidoc/web/webflux-webclient.adoc b/src/docs/asciidoc/web/webflux-webclient.adoc
index 7963da0087d..5ef50e1c190 100644
--- a/src/docs/asciidoc/web/webflux-webclient.adoc
+++ b/src/docs/asciidoc/web/webflux-webclient.adoc
@@ -41,26 +41,28 @@ The following example configures < customizeCodecs = builder -> {
- builder.codecs(configurer -> {
- //...
- });
- };
+ ExchangeStrategies strategies = ExchangeStrategies.builder()
+ .codecs(configurer -> {
+ // ...
+ })
+ .build();
WebClient client = WebClient.builder()
- .exchangeStrategies(customizeCodecs)
+ .exchangeStrategies(strategies)
.build();
----
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
.Kotlin
----
- val webClient = WebClient.builder()
- .exchangeStrategies { strategies ->
- strategies.codecs {
- //...
- }
+ val strategies = ExchangeStrategies.builder()
+ .codecs {
+ // ...
}
.build()
+
+ val client = WebClient.builder()
+ .exchangeStrategies(strategies)
+ .build()
----
Once built, a `WebClient` instance is immutable. However, you can clone it and build a
@@ -93,44 +95,7 @@ modified copy without affecting the original instance, as the following example
// client2 has filterA, filterB, filterC, filterD
----
-[[webflux-client-builder-maxinmemorysize]]
-=== MaxInMemorySize
-
-Spring WebFlux configures by default a maximum size for buffering data in-memory when decoding
-HTTP responses with the `WebClient`. This avoids application memory issues if the received
-response is much larger than expected.
-
-The default configured value of 256KB might not be enough for your use case, and your application
-might hit that limit with the following:
-
-----
-org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer
-----
-
-You can configure this limit on all default codecs with the following code sample:
-[source,java,indent=0,subs="verbatim,quotes",role="primary"]
-.Java
-----
- WebClient webClient = WebClient.builder()
- .exchangeStrategies(configurer ->
- configurer.codecs(codecs ->
- codecs.defaultCodecs().maxInMemorySize(2 * 1024 * 1024)
- )
- )
- .build();
-----
-[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
-.Kotlin
-----
- val webClient = WebClient.builder()
- .exchangeStrategies { strategies ->
- strategies.codecs {
- it.defaultCodecs().maxInMemorySize(2 * 1024 * 1024)
- }
- }
- .build()
-----
[[webflux-client-builder-reactor]]
=== Reactor Netty