Introduce ServerCodecConfigurer

Issue: SPR-15247
This commit is contained in:
Rossen Stoyanchev
2017-03-23 22:57:59 -04:00
parent e644c557e7
commit 4a7218f54f
13 changed files with 731 additions and 338 deletions

View File

@@ -25,8 +25,8 @@ import java.util.function.Consumer;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.format.FormatterRegistry;
import org.springframework.http.codec.ServerHttpMessageReader;
import org.springframework.http.codec.ServerHttpMessageWriter;
import org.springframework.http.codec.ServerCodecConfigurer;
import org.springframework.util.Assert;
import org.springframework.util.ObjectUtils;
import org.springframework.validation.Validator;
@@ -85,14 +85,8 @@ class DefaultControllerSpec extends AbstractMockServerSpec<WebTestClient.Control
}
@Override
public DefaultControllerSpec messageReaders(Consumer<List<ServerHttpMessageReader<?>>> consumer) {
this.configurer.readersConsumer = consumer;
return this;
}
@Override
public DefaultControllerSpec messageWriters(Consumer<List<ServerHttpMessageWriter<?>>> consumer) {
this.configurer.writersConsumer = consumer;
public DefaultControllerSpec httpMessageCodecs(Consumer<ServerCodecConfigurer> consumer) {
this.configurer.messageCodecsConsumer = consumer;
return this;
}
@@ -145,7 +139,7 @@ class DefaultControllerSpec extends AbstractMockServerSpec<WebTestClient.Control
private Consumer<PathMatchConfigurer> pathMatchConsumer;
private Consumer<List<ServerHttpMessageReader<?>>> readersConsumer;
private Consumer<ServerCodecConfigurer> messageCodecsConsumer;
private Consumer<List<ServerHttpMessageWriter<?>>> writersConsumer;
@@ -178,16 +172,9 @@ class DefaultControllerSpec extends AbstractMockServerSpec<WebTestClient.Control
}
@Override
public void extendMessageReaders(List<ServerHttpMessageReader<?>> readers) {
if (this.readersConsumer != null) {
this.readersConsumer.accept(readers);
}
}
@Override
public void extendMessageWriters(List<ServerHttpMessageWriter<?>> writers) {
if (this.writersConsumer != null) {
this.writersConsumer.accept(writers);
public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
if (this.messageCodecsConsumer != null) {
this.messageCodecsConsumer.accept(configurer);
}
}

View File

@@ -34,8 +34,7 @@ import org.springframework.format.FormatterRegistry;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.client.reactive.ClientHttpRequest;
import org.springframework.http.codec.ServerHttpMessageReader;
import org.springframework.http.codec.ServerHttpMessageWriter;
import org.springframework.http.codec.ServerCodecConfigurer;
import org.springframework.util.MultiValueMap;
import org.springframework.validation.Validator;
import org.springframework.web.reactive.accept.RequestedContentTypeResolverBuilder;
@@ -244,16 +243,10 @@ public interface WebTestClient {
ControllerSpec pathMatching(Consumer<PathMatchConfigurer> consumer);
/**
* Modify or extend the list of built-in message readers.
* @see WebFluxConfigurer#configureMessageReaders
* Modify or extend the list of built-in message readers and writers.
* @see WebFluxConfigurer#configureHttpMessageCodecs
*/
ControllerSpec messageReaders(Consumer<List<ServerHttpMessageReader<?>>> readers);
/**
* Modify or extend the list of built-in message writers.
* @see WebFluxConfigurer#configureMessageWriters
*/
ControllerSpec messageWriters(Consumer<List<ServerHttpMessageWriter<?>>> writers);
ControllerSpec httpMessageCodecs(Consumer<ServerCodecConfigurer> configurer);
/**
* Register formatters and converters to use for type conversion.