Browse Source

Improve converter config in RestTestClient.Builder

Compose consumers and apply them together from the build method
to allow multiple parties to supply consumers that collaborate
on the same HttpMessageConverters.Builder.

See gh-35578
pull/35588/head
rstoyanchev 5 months ago
parent
commit
d057eb2e5d
  1. 13
      spring-test/src/main/java/org/springframework/test/web/servlet/client/DefaultRestTestClientBuilder.java

13
spring-test/src/main/java/org/springframework/test/web/servlet/client/DefaultRestTestClientBuilder.java

@ -19,6 +19,8 @@ package org.springframework.test.web.servlet.client; @@ -19,6 +19,8 @@ package org.springframework.test.web.servlet.client;
import java.util.List;
import java.util.function.Consumer;
import org.jspecify.annotations.Nullable;
import org.springframework.http.HttpHeaders;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.ClientHttpRequestInterceptor;
@ -53,6 +55,8 @@ class DefaultRestTestClientBuilder<B extends RestTestClient.Builder<B>> implemen @@ -53,6 +55,8 @@ class DefaultRestTestClientBuilder<B extends RestTestClient.Builder<B>> implemen
private final RestClient.Builder restClientBuilder;
private @Nullable Consumer<HttpMessageConverters.ClientBuilder> convertersConfigurer;
private Consumer<EntityExchangeResult<?>> entityResultConsumer = result -> {};
@ -66,6 +70,7 @@ class DefaultRestTestClientBuilder<B extends RestTestClient.Builder<B>> implemen @@ -66,6 +70,7 @@ class DefaultRestTestClientBuilder<B extends RestTestClient.Builder<B>> implemen
DefaultRestTestClientBuilder(DefaultRestTestClientBuilder<B> other) {
this.restClientBuilder = other.restClientBuilder.clone();
this.convertersConfigurer = other.convertersConfigurer;
this.entityResultConsumer = other.entityResultConsumer;
}
@ -132,7 +137,8 @@ class DefaultRestTestClientBuilder<B extends RestTestClient.Builder<B>> implemen @@ -132,7 +137,8 @@ class DefaultRestTestClientBuilder<B extends RestTestClient.Builder<B>> implemen
@Override
public <T extends B> T configureMessageConverters(Consumer<HttpMessageConverters.ClientBuilder> configurer) {
this.restClientBuilder.configureMessageConverters(configurer);
this.convertersConfigurer = (this.convertersConfigurer != null ?
this.convertersConfigurer.andThen(configurer) : configurer);
return self();
}
@ -154,6 +160,11 @@ class DefaultRestTestClientBuilder<B extends RestTestClient.Builder<B>> implemen @@ -154,6 +160,11 @@ class DefaultRestTestClientBuilder<B extends RestTestClient.Builder<B>> implemen
@Override
public RestTestClient build() {
if (this.convertersConfigurer != null) {
this.restClientBuilder.configureMessageConverters(this.convertersConfigurer);
}
return new DefaultRestTestClient(
this.restClientBuilder, this.entityResultConsumer, new DefaultRestTestClientBuilder<>(this));
}

Loading…
Cancel
Save