From 1328c8f46e00f591255cba9257bf1ace70b2126e Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Sat, 27 May 2017 13:03:59 -0400 Subject: [PATCH] Simplify CodecConfigurer related type names Essentially drop "Configurer" suffix from nested interfaces. --- ...urer.java => AbstractCodecConfigurer.java} | 37 +++++++++---------- .../http/codec/ClientCodecConfigurer.java | 16 ++++---- .../http/codec/CodecConfigurer.java | 17 +++++---- .../codec/DefaultClientCodecConfigurer.java | 29 ++++++++------- .../codec/DefaultServerCodecConfigurer.java | 18 ++++----- .../http/codec/ServerCodecConfigurer.java | 8 ++-- .../http/codec/CodecConfigurerTests.java | 19 +++++++--- .../DefaultExchangeStrategiesBuilder.java | 5 ++- .../function/client/ExchangeStrategies.java | 5 ++- .../DefaultHandlerStrategiesBuilder.java | 4 +- .../function/server/HandlerStrategies.java | 5 ++- 11 files changed, 88 insertions(+), 75 deletions(-) rename spring-web/src/main/java/org/springframework/http/codec/{DefaultCodecConfigurer.java => AbstractCodecConfigurer.java} (88%) diff --git a/spring-web/src/main/java/org/springframework/http/codec/DefaultCodecConfigurer.java b/spring-web/src/main/java/org/springframework/http/codec/AbstractCodecConfigurer.java similarity index 88% rename from spring-web/src/main/java/org/springframework/http/codec/DefaultCodecConfigurer.java rename to spring-web/src/main/java/org/springframework/http/codec/AbstractCodecConfigurer.java index 610df2b118f..b71fb7b8fd3 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/DefaultCodecConfigurer.java +++ b/spring-web/src/main/java/org/springframework/http/codec/AbstractCodecConfigurer.java @@ -45,36 +45,34 @@ import org.springframework.util.ClassUtils; * @author Rossen Stoyanchev * @since 5.0 */ -class DefaultCodecConfigurer implements CodecConfigurer { +abstract class AbstractCodecConfigurer implements CodecConfigurer { - static final boolean jackson2Present = + protected static final boolean jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", - org.springframework.http.codec.DefaultCodecConfigurer.class.getClassLoader()) && + AbstractCodecConfigurer.class.getClassLoader()) && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", - org.springframework.http.codec.DefaultCodecConfigurer.class - .getClassLoader()); + AbstractCodecConfigurer.class.getClassLoader()); - static final boolean jaxb2Present = - ClassUtils.isPresent("javax.xml.bind.Binder", - org.springframework.http.codec.DefaultCodecConfigurer.class.getClassLoader()); + protected static final boolean jaxb2Present = ClassUtils.isPresent("javax.xml.bind.Binder", + AbstractCodecConfigurer.class.getClassLoader()); - private final AbstractDefaultCodecsConfigurer defaultCodecs; + private final AbstractDefaultCodecs defaultCodecs; - private final CustomCodecConfigurer customCodecs = new CustomCodecConfigurer(); + private final DefaultCustomCodecs customCodecs = new DefaultCustomCodecs(); /** * Protected constructor with the configurer for default readers and writers. */ - DefaultCodecConfigurer(AbstractDefaultCodecsConfigurer defaultCodecConfigurer) { - Assert.notNull(defaultCodecConfigurer, "DefaultCodecConfigurer is required."); - this.defaultCodecs = defaultCodecConfigurer; + protected AbstractCodecConfigurer(AbstractDefaultCodecs defaultCodecs) { + Assert.notNull(defaultCodecs, "'defaultCodecs' is required."); + this.defaultCodecs = defaultCodecs; } @Override - public DefaultCodecsConfigurer defaultCodecs() { + public DefaultCodecs defaultCodecs() { return this.defaultCodecs; } @@ -84,7 +82,7 @@ class DefaultCodecConfigurer implements CodecConfigurer { } @Override - public CustomCodecsConfigurer customCodecs() { + public CustomCodecs customCodecs() { return this.customCodecs; } @@ -125,10 +123,9 @@ class DefaultCodecConfigurer implements CodecConfigurer { /** - * Default implementation for {@link CodecConfigurer.DefaultCodecsConfigurer}. + * Default implementation for {@link DefaultCodecs}. */ - abstract static class AbstractDefaultCodecsConfigurer - implements CodecConfigurer.DefaultCodecsConfigurer { + abstract static class AbstractDefaultCodecs implements DefaultCodecs { private boolean suppressed = false; @@ -270,9 +267,9 @@ class DefaultCodecConfigurer implements CodecConfigurer { /** - * Default implementation of CustomCodecsConfigurer. + * Default implementation of CustomCodecs. */ - private static class CustomCodecConfigurer implements CodecConfigurer.CustomCodecsConfigurer { + private static class DefaultCustomCodecs implements CustomCodecs { private final List> typedReaders = new ArrayList<>(); 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 62b85df1b09..ac04d4e3400 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 @@ -37,10 +37,10 @@ public interface ClientCodecConfigurer extends CodecConfigurer { /** * {@inheritDoc} - *

Overriden to return {@link ClientDefaultCodecsConfigurer}. + *

Overriden to return {@link ClientDefaultCodecs}. */ @Override - ClientDefaultCodecsConfigurer defaultCodecs(); + ClientDefaultCodecs defaultCodecs(); /** @@ -52,16 +52,16 @@ public interface ClientCodecConfigurer extends CodecConfigurer { } /** - * Extension of {@link DefaultCodecConfigurer} with extra client options. + * Extension of {@link AbstractCodecConfigurer} with extra client options. */ - interface ClientDefaultCodecsConfigurer extends DefaultCodecsConfigurer { + interface ClientDefaultCodecs extends DefaultCodecs { /** * Configure encoders or writers for use with * {@link org.springframework.http.codec.multipart.MultipartHttpMessageWriter * MultipartHttpMessageWriter}. */ - MultipartCodecsConfigurer multipartCodecs(); + MultipartCodecs multipartCodecs(); /** * Configure the {@code Decoder} to use for Server-Sent Events. @@ -74,14 +74,14 @@ public interface ClientCodecConfigurer extends CodecConfigurer { /** * Registry and container for multipart HTTP message writers. */ - interface MultipartCodecsConfigurer { + interface MultipartCodecs { /** * Add a Part {@code Encoder}, internally wrapped with * {@link EncoderHttpMessageWriter}. * @param encoder the encoder to add */ - MultipartCodecsConfigurer encoder(Encoder encoder); + MultipartCodecs encoder(Encoder encoder); /** * Add a Part {@link HttpMessageWriter}. For writers of type @@ -89,7 +89,7 @@ public interface ClientCodecConfigurer extends CodecConfigurer { * {@link #encoder(Encoder)} instead. * @param writer the writer to add */ - MultipartCodecsConfigurer writer(HttpMessageWriter writer); + MultipartCodecs writer(HttpMessageWriter writer); } } 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 25971dbf260..3e6cb523d08 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 @@ -24,7 +24,10 @@ import org.springframework.http.codec.json.Jackson2JsonDecoder; import org.springframework.http.codec.json.Jackson2JsonEncoder; /** - * Defines the interface for client or server HTTP message reader and writer configurers. + * Defines a common interface for configuring either client or server HTTP + * message readers and writers. To obtain an instance use either + * {@link ClientCodecConfigurer#create()} or + * {@link ServerCodecConfigurer#create()}. * * @author Rossen Stoyanchev * @since 5.0 @@ -34,7 +37,7 @@ public interface CodecConfigurer { /** * Provide overrides for built-in HTTP message readers or writers. */ - DefaultCodecsConfigurer defaultCodecs(); + DefaultCodecs defaultCodecs(); /** * Whether to make default HTTP message reader and writer registrations. @@ -45,7 +48,7 @@ public interface CodecConfigurer { /** * Register a custom encoder or decoder. */ - CustomCodecsConfigurer customCodecs(); + CustomCodecs customCodecs(); /** * Prepare a list of HTTP message readers. @@ -60,10 +63,10 @@ public interface CodecConfigurer { /** * Registry and container for built-in HTTP message readers and writers. - * @see ClientCodecConfigurer.ClientDefaultCodecsConfigurer - * @see ServerCodecConfigurer.ServerDefaultCodecsConfigurer + * @see ClientCodecConfigurer.ClientDefaultCodecs + * @see ServerCodecConfigurer.ServerDefaultCodecs */ - interface DefaultCodecsConfigurer { + interface DefaultCodecs { /** * Override the default Jackson {@code Decoder}. @@ -83,7 +86,7 @@ public interface CodecConfigurer { /** * Registry and container for custom HTTP message readers and writers. */ - interface CustomCodecsConfigurer { + interface CustomCodecs { /** * Add a custom {@code Decoder} internally wrapped with diff --git a/spring-web/src/main/java/org/springframework/http/codec/DefaultClientCodecConfigurer.java b/spring-web/src/main/java/org/springframework/http/codec/DefaultClientCodecConfigurer.java index 8d4463602a0..0eedbeedb4f 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/DefaultClientCodecConfigurer.java +++ b/spring-web/src/main/java/org/springframework/http/codec/DefaultClientCodecConfigurer.java @@ -31,32 +31,33 @@ import org.springframework.http.codec.multipart.MultipartHttpMessageWriter; * @author Rossen Stoyanchev * @since 5.0 */ -class DefaultClientCodecConfigurer extends DefaultCodecConfigurer implements ClientCodecConfigurer { +class DefaultClientCodecConfigurer extends AbstractCodecConfigurer implements ClientCodecConfigurer { + public DefaultClientCodecConfigurer() { - super(new DefaultClientDefaultCodecsConfigurer()); + super(new ClientDefaultCodecsImpl()); } + @Override - public ClientDefaultCodecsConfigurer defaultCodecs() { - return (ClientDefaultCodecsConfigurer) super.defaultCodecs(); + public ClientDefaultCodecs defaultCodecs() { + return (ClientDefaultCodecs) super.defaultCodecs(); } /** - * Default implementation of {@link ClientCodecConfigurer.ClientDefaultCodecsConfigurer}. + * Default implementation of {@link ClientDefaultCodecs}. */ - private static class DefaultClientDefaultCodecsConfigurer - extends AbstractDefaultCodecsConfigurer - implements ClientCodecConfigurer.ClientDefaultCodecsConfigurer { + private static class ClientDefaultCodecsImpl extends AbstractDefaultCodecs + implements ClientDefaultCodecs { - private DefaultMultipartCodecsConfigurer multipartCodecs; + private DefaultMultipartCodecs multipartCodecs; @Override - public MultipartCodecsConfigurer multipartCodecs() { + public MultipartCodecs multipartCodecs() { if (this.multipartCodecs == null) { - this.multipartCodecs = new DefaultMultipartCodecsConfigurer(); + this.multipartCodecs = new DefaultMultipartCodecs(); } return this.multipartCodecs; } @@ -107,19 +108,19 @@ class DefaultClientCodecConfigurer extends DefaultCodecConfigurer implements Cli } } - private static class DefaultMultipartCodecsConfigurer implements MultipartCodecsConfigurer { + private static class DefaultMultipartCodecs implements MultipartCodecs { private final List> writers = new ArrayList<>(); @Override - public MultipartCodecsConfigurer encoder(Encoder encoder) { + public MultipartCodecs encoder(Encoder encoder) { writer(new EncoderHttpMessageWriter<>(encoder)); return this; } @Override - public MultipartCodecsConfigurer writer(HttpMessageWriter writer) { + public MultipartCodecs writer(HttpMessageWriter writer) { this.writers.add(writer); return this; } diff --git a/spring-web/src/main/java/org/springframework/http/codec/DefaultServerCodecConfigurer.java b/spring-web/src/main/java/org/springframework/http/codec/DefaultServerCodecConfigurer.java index b4841f2c483..9a5a5a18a73 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/DefaultServerCodecConfigurer.java +++ b/spring-web/src/main/java/org/springframework/http/codec/DefaultServerCodecConfigurer.java @@ -31,29 +31,29 @@ import org.springframework.util.ClassUtils; * @author Rossen Stoyanchev * @since 5.0 */ -class DefaultServerCodecConfigurer extends DefaultCodecConfigurer implements ServerCodecConfigurer { +class DefaultServerCodecConfigurer extends AbstractCodecConfigurer implements ServerCodecConfigurer { static final boolean synchronossMultipartPresent = ClassUtils.isPresent("org.synchronoss.cloud.nio.multipart.NioMultipartParser", - org.springframework.http.codec.DefaultCodecConfigurer.class.getClassLoader()); + AbstractCodecConfigurer.class.getClassLoader()); public DefaultServerCodecConfigurer() { - super(new DefaultServerDefaultCodecsConfigurer()); + super(new ServerDefaultCodecsImpl()); } + @Override - public ServerDefaultCodecsConfigurer defaultCodecs() { - return (ServerDefaultCodecsConfigurer) super.defaultCodecs(); + public ServerDefaultCodecs defaultCodecs() { + return (ServerDefaultCodecs) super.defaultCodecs(); } /** - * Default implementation of {@link ServerCodecConfigurer.ServerDefaultCodecsConfigurer}. + * Default implementation of {@link ServerDefaultCodecs}. */ - private static class DefaultServerDefaultCodecsConfigurer - extends AbstractDefaultCodecsConfigurer - implements ServerCodecConfigurer.ServerDefaultCodecsConfigurer { + private static class ServerDefaultCodecsImpl extends AbstractDefaultCodecs + implements ServerDefaultCodecs { @Override public void serverSentEventEncoder(Encoder encoder) { diff --git a/spring-web/src/main/java/org/springframework/http/codec/ServerCodecConfigurer.java b/spring-web/src/main/java/org/springframework/http/codec/ServerCodecConfigurer.java index 18d666f42d9..54a7bbe8fab 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/ServerCodecConfigurer.java +++ b/spring-web/src/main/java/org/springframework/http/codec/ServerCodecConfigurer.java @@ -36,10 +36,10 @@ public interface ServerCodecConfigurer extends CodecConfigurer { /** * {@inheritDoc} - *

Overriden to return {@link ServerDefaultCodecsConfigurer}. + *

Overriden to return {@link ServerDefaultCodecs}. */ @Override - ServerDefaultCodecsConfigurer defaultCodecs(); + ServerDefaultCodecs defaultCodecs(); /** @@ -52,9 +52,9 @@ public interface ServerCodecConfigurer extends CodecConfigurer { /** - * Extension of {@link DefaultCodecConfigurer} with extra server options. + * Extension of {@link AbstractCodecConfigurer} with extra server options. */ - interface ServerDefaultCodecsConfigurer extends DefaultCodecsConfigurer { + interface ServerDefaultCodecs extends DefaultCodecs { /** * Configure the {@code Encoder} to use for Server-Sent Events. diff --git a/spring-web/src/test/java/org/springframework/http/codec/CodecConfigurerTests.java b/spring-web/src/test/java/org/springframework/http/codec/CodecConfigurerTests.java index c7b0b47f14e..73e19ec09a2 100644 --- a/spring-web/src/test/java/org/springframework/http/codec/CodecConfigurerTests.java +++ b/spring-web/src/test/java/org/springframework/http/codec/CodecConfigurerTests.java @@ -39,17 +39,20 @@ import org.springframework.http.codec.xml.Jaxb2XmlDecoder; import org.springframework.http.codec.xml.Jaxb2XmlEncoder; import org.springframework.util.MimeTypeUtils; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import static org.springframework.core.ResolvableType.forClass; /** - * Unit tests for {@link org.springframework.http.codec.DefaultCodecConfigurer.AbstractDefaultCodecsConfigurer}. + * Unit tests for {@link AbstractCodecConfigurer.AbstractDefaultCodecs}. * @author Rossen Stoyanchev */ public class CodecConfigurerTests { - private final CodecConfigurer configurer = new DefaultCodecConfigurer(new TestDefaultCodecConfigurer()); + private final CodecConfigurer configurer = new TestCodecConfigurer(); private final AtomicInteger index = new AtomicInteger(0); @@ -277,8 +280,13 @@ public class CodecConfigurerTests { + private static class TestCodecConfigurer extends AbstractCodecConfigurer { - private static class TestDefaultCodecConfigurer extends DefaultCodecConfigurer.AbstractDefaultCodecsConfigurer { + TestCodecConfigurer() { + super(new TestDefaultCodecs()); + } + + private static class TestDefaultCodecs extends AbstractDefaultCodecs { @Override protected void addStringReaderTextOnlyTo(List> result) { @@ -290,5 +298,6 @@ public class CodecConfigurerTests { addReaderTo(result, () -> new DecoderHttpMessageReader<>(StringDecoder.allMimeTypes(true))); } } + } } 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 10fe28383db..961f0b2caeb 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 @@ -22,6 +22,7 @@ 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,7 +48,7 @@ class DefaultExchangeStrategiesBuilder implements ExchangeStrategies.Builder { @Override public ExchangeStrategies.Builder defaultCodecs( - Consumer consumer) { + Consumer consumer) { Assert.notNull(consumer, "'consumer' must not be null"); consumer.accept(this.codecConfigurer.defaultCodecs()); return this; @@ -55,7 +56,7 @@ class DefaultExchangeStrategiesBuilder implements ExchangeStrategies.Builder { @Override public ExchangeStrategies.Builder customCodecs( - Consumer consumer) { + Consumer consumer) { Assert.notNull(consumer, "'consumer' must not be null"); consumer.accept(this.codecConfigurer.customCodecs()); return this; 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 14b13095f4b..d0bd9186712 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 @@ -20,6 +20,7 @@ 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; @@ -92,7 +93,7 @@ public interface ExchangeStrategies { * @return this builder * @see #customCodecs(Consumer) */ - Builder defaultCodecs(Consumer consumer); + Builder defaultCodecs(Consumer consumer); /** * Customize the list of custom client-side HTTP message readers and writers. @@ -100,7 +101,7 @@ public interface ExchangeStrategies { * @return this builder * @see #defaultCodecs(Consumer) */ - Builder customCodecs(Consumer consumer); + Builder customCodecs(Consumer consumer); /** * Builds the {@link ExchangeStrategies}. diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultHandlerStrategiesBuilder.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultHandlerStrategiesBuilder.java index 309f37eed17..1c075174ae6 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultHandlerStrategiesBuilder.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultHandlerStrategiesBuilder.java @@ -59,7 +59,7 @@ class DefaultHandlerStrategiesBuilder implements HandlerStrategies.Builder { @Override public HandlerStrategies.Builder defaultCodecs( - Consumer consumer) { + Consumer consumer) { Assert.notNull(consumer, "'consumer' must not be null"); consumer.accept(this.codecConfigurer.defaultCodecs()); return this; @@ -67,7 +67,7 @@ class DefaultHandlerStrategiesBuilder implements HandlerStrategies.Builder { @Override public HandlerStrategies.Builder customCodecs( - Consumer consumer) { + Consumer consumer) { Assert.notNull(consumer, "'consumer' must not be null"); consumer.accept(this.codecConfigurer.customCodecs()); return this; diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/HandlerStrategies.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/HandlerStrategies.java index 86f0f6e75d1..30f2b5c9018 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/HandlerStrategies.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/HandlerStrategies.java @@ -19,6 +19,7 @@ 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; @@ -114,7 +115,7 @@ public interface HandlerStrategies { * @return this builder * @see #customCodecs(Consumer) */ - Builder defaultCodecs(Consumer consumer); + Builder defaultCodecs(Consumer consumer); /** * Customize the list of custom server-side HTTP message readers and writers. @@ -122,7 +123,7 @@ public interface HandlerStrategies { * @return this builder * @see #defaultCodecs(Consumer) */ - Builder customCodecs(Consumer consumer); + Builder customCodecs(Consumer consumer); /** * Add the given view resolver to this builder.