Browse Source

Consistently use CodecConfigurer for configuration

This commit changes the `ExchangeStrategies` and `HandlerStrategies`
interfaces to consistently use the `CodecConfigurer` (and
sub-interfaces) for configuring codecs on the server and on the client.

Issue: SPR-15682
pull/1345/merge
Brian Clozel 8 years ago
parent
commit
52148a10b7
  1. 14
      spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultExchangeStrategiesBuilder.java
  2. 16
      spring-webflux/src/main/java/org/springframework/web/reactive/function/client/ExchangeStrategies.java
  3. 16
      spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultHandlerStrategiesBuilder.java
  4. 18
      spring-webflux/src/main/java/org/springframework/web/reactive/function/server/HandlerStrategies.java
  5. 7
      spring-webflux/src/test/java/org/springframework/web/reactive/function/server/DefaultEntityResponseBuilderTests.java

14
spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultExchangeStrategiesBuilder.java

@ -22,7 +22,6 @@ import java.util.List; @@ -22,7 +22,6 @@ import java.util.List;
import java.util.function.Consumer;
import org.springframework.http.codec.ClientCodecConfigurer;
import org.springframework.http.codec.CodecConfigurer;
import org.springframework.http.codec.HttpMessageReader;
import org.springframework.http.codec.HttpMessageWriter;
import org.springframework.util.Assert;
@ -47,18 +46,9 @@ class DefaultExchangeStrategiesBuilder implements ExchangeStrategies.Builder { @@ -47,18 +46,9 @@ class DefaultExchangeStrategiesBuilder implements ExchangeStrategies.Builder {
}
@Override
public ExchangeStrategies.Builder defaultCodecs(
Consumer<ClientCodecConfigurer.ClientDefaultCodecs> consumer) {
public ExchangeStrategies.Builder codecs(Consumer<ClientCodecConfigurer> consumer) {
Assert.notNull(consumer, "'consumer' must not be null");
consumer.accept(this.codecConfigurer.defaultCodecs());
return this;
}
@Override
public ExchangeStrategies.Builder customCodecs(
Consumer<CodecConfigurer.CustomCodecs> consumer) {
Assert.notNull(consumer, "'consumer' must not be null");
consumer.accept(this.codecConfigurer.customCodecs());
consumer.accept(this.codecConfigurer);
return this;
}

16
spring-webflux/src/main/java/org/springframework/web/reactive/function/client/ExchangeStrategies.java

@ -20,7 +20,6 @@ import java.util.List; @@ -20,7 +20,6 @@ import java.util.List;
import java.util.function.Consumer;
import org.springframework.http.codec.ClientCodecConfigurer;
import org.springframework.http.codec.CodecConfigurer;
import org.springframework.http.codec.HttpMessageReader;
import org.springframework.http.codec.HttpMessageWriter;
@ -88,20 +87,11 @@ public interface ExchangeStrategies { @@ -88,20 +87,11 @@ public interface ExchangeStrategies {
interface Builder {
/**
* Customize the list of default client-side HTTP message readers and writers.
* @param consumer the consumer to customize the default codecs
* Customize the list of client-side HTTP message readers and writers.
* @param consumer the consumer to customize the codecs
* @return this builder
* @see #customCodecs(Consumer)
*/
Builder defaultCodecs(Consumer<ClientCodecConfigurer.ClientDefaultCodecs> consumer);
/**
* Customize the list of custom client-side HTTP message readers and writers.
* @param consumer the consumer to customize the custom codecs
* @return this builder
* @see #defaultCodecs(Consumer)
*/
Builder customCodecs(Consumer<CodecConfigurer.CustomCodecs> consumer);
Builder codecs(Consumer<ClientCodecConfigurer> consumer);
/**
* Builds the {@link ExchangeStrategies}.

16
spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultHandlerStrategiesBuilder.java

@ -21,17 +21,16 @@ import java.util.Collections; @@ -21,17 +21,16 @@ import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
import org.springframework.http.codec.CodecConfigurer;
import org.springframework.http.codec.HttpMessageReader;
import org.springframework.http.codec.HttpMessageWriter;
import org.springframework.http.codec.ServerCodecConfigurer;
import org.springframework.util.Assert;
import org.springframework.web.reactive.result.view.ViewResolver;
import org.springframework.web.server.i18n.LocaleContextResolver;
import org.springframework.web.server.WebExceptionHandler;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.handler.ResponseStatusExceptionHandler;
import org.springframework.web.server.i18n.AcceptHeaderLocaleContextResolver;
import org.springframework.web.server.i18n.LocaleContextResolver;
/**
* Default implementation of {@link HandlerStrategies.Builder}.
@ -63,18 +62,9 @@ class DefaultHandlerStrategiesBuilder implements HandlerStrategies.Builder { @@ -63,18 +62,9 @@ class DefaultHandlerStrategiesBuilder implements HandlerStrategies.Builder {
}
@Override
public HandlerStrategies.Builder defaultCodecs(
Consumer<ServerCodecConfigurer.ServerDefaultCodecs> consumer) {
Assert.notNull(consumer, "'consumer' must not be null");
consumer.accept(this.codecConfigurer.defaultCodecs());
return this;
}
@Override
public HandlerStrategies.Builder customCodecs(
Consumer<CodecConfigurer.CustomCodecs> consumer) {
public HandlerStrategies.Builder codecs(Consumer<ServerCodecConfigurer> consumer) {
Assert.notNull(consumer, "'consumer' must not be null");
consumer.accept(this.codecConfigurer.customCodecs());
consumer.accept(this.codecConfigurer);
return this;
}

18
spring-webflux/src/main/java/org/springframework/web/reactive/function/server/HandlerStrategies.java

@ -19,14 +19,13 @@ package org.springframework.web.reactive.function.server; @@ -19,14 +19,13 @@ package org.springframework.web.reactive.function.server;
import java.util.List;
import java.util.function.Consumer;
import org.springframework.http.codec.CodecConfigurer;
import org.springframework.http.codec.HttpMessageReader;
import org.springframework.http.codec.HttpMessageWriter;
import org.springframework.http.codec.ServerCodecConfigurer;
import org.springframework.web.reactive.result.view.ViewResolver;
import org.springframework.web.server.i18n.LocaleContextResolver;
import org.springframework.web.server.WebExceptionHandler;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.i18n.LocaleContextResolver;
/**
* Defines the strategies to be used for processing {@link HandlerFunction}s. An instance of
@ -118,20 +117,11 @@ public interface HandlerStrategies { @@ -118,20 +117,11 @@ public interface HandlerStrategies {
interface Builder {
/**
* Customize the list of default server-side HTTP message readers and writers.
* @param consumer the consumer to customize the default codecs
* @return this builder
* @see #customCodecs(Consumer)
*/
Builder defaultCodecs(Consumer<ServerCodecConfigurer.ServerDefaultCodecs> consumer);
/**
* Customize the list of custom server-side HTTP message readers and writers.
* @param consumer the consumer to customize the custom codecs
* Customize the list of server-side HTTP message readers and writers.
* @param consumer the consumer to customize the codecs
* @return this builder
* @see #defaultCodecs(Consumer)
*/
Builder customCodecs(Consumer<CodecConfigurer.CustomCodecs> consumer);
Builder codecs(Consumer<ServerCodecConfigurer> consumer);
/**
* Add the given view resolver to this builder.

7
spring-webflux/src/test/java/org/springframework/web/reactive/function/server/DefaultEntityResponseBuilderTests.java

@ -48,7 +48,8 @@ import org.springframework.web.reactive.function.BodyInserter; @@ -48,7 +48,8 @@ import org.springframework.web.reactive.function.BodyInserter;
import org.springframework.web.reactive.result.view.ViewResolver;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.*;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
/**
* @author Arjen Poutsma
@ -203,10 +204,6 @@ public class DefaultEntityResponseBuilderTests { @@ -203,10 +204,6 @@ public class DefaultEntityResponseBuilderTests {
return Collections.<ViewResolver>emptyList();
}
};
HandlerStrategies strategies = HandlerStrategies.empty()
.customCodecs(configurer -> configurer.writer(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes())))
.build();
StepVerifier.create(result)
.consumeNextWith(response -> {
StepVerifier.create(response.entity())

Loading…
Cancel
Save