From 7fd0cac6f2fb0cd5162e5580f535655069a71a4c Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Mon, 14 May 2018 16:38:07 -0400 Subject: [PATCH] Include FormHttpMessageReader in client codecs Issue: SPR-16804 --- .../codec/support/DefaultClientCodecConfigurer.java | 11 +++++++++++ .../codec/support/ClientCodecConfigurerTests.java | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) 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 e3a0bd0bc8..edbacfb496 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 @@ -24,6 +24,7 @@ import org.springframework.core.codec.Decoder; import org.springframework.core.codec.Encoder; import org.springframework.http.codec.ClientCodecConfigurer; import org.springframework.http.codec.EncoderHttpMessageWriter; +import org.springframework.http.codec.FormHttpMessageReader; import org.springframework.http.codec.FormHttpMessageWriter; import org.springframework.http.codec.HttpMessageReader; import org.springframework.http.codec.HttpMessageWriter; @@ -70,6 +71,16 @@ public class DefaultClientCodecConfigurer extends AbstractCodecConfigurer implem this.sseDecoder = decoder; } + @Override + List> getTypedReaders() { + if (!shouldRegisterDefaults()) { + return Collections.emptyList(); + } + List> result = super.getTypedReaders(); + result.add(new FormHttpMessageReader()); + return result; + } + @Override List> getObjectReaders() { if (!shouldRegisterDefaults()) { diff --git a/spring-web/src/test/java/org/springframework/http/codec/support/ClientCodecConfigurerTests.java b/spring-web/src/test/java/org/springframework/http/codec/support/ClientCodecConfigurerTests.java index 9657f9cb98..98bbad413b 100644 --- a/spring-web/src/test/java/org/springframework/http/codec/support/ClientCodecConfigurerTests.java +++ b/spring-web/src/test/java/org/springframework/http/codec/support/ClientCodecConfigurerTests.java @@ -43,6 +43,7 @@ import org.springframework.http.MediaType; import org.springframework.http.codec.ClientCodecConfigurer; import org.springframework.http.codec.DecoderHttpMessageReader; import org.springframework.http.codec.EncoderHttpMessageWriter; +import org.springframework.http.codec.FormHttpMessageReader; import org.springframework.http.codec.HttpMessageReader; import org.springframework.http.codec.HttpMessageWriter; import org.springframework.http.codec.ResourceHttpMessageWriter; @@ -74,12 +75,13 @@ public class ClientCodecConfigurerTests { @Test public void defaultReaders() { List> readers = this.configurer.getReaders(); - assertEquals(10, readers.size()); + assertEquals(11, readers.size()); assertEquals(ByteArrayDecoder.class, getNextDecoder(readers).getClass()); assertEquals(ByteBufferDecoder.class, getNextDecoder(readers).getClass()); assertEquals(DataBufferDecoder.class, getNextDecoder(readers).getClass()); assertEquals(ResourceDecoder.class, getNextDecoder(readers).getClass()); assertStringDecoder(getNextDecoder(readers), true); + assertEquals(FormHttpMessageReader.class, readers.get(this.index.getAndIncrement()).getClass()); // SPR-16804 assertEquals(Jackson2JsonDecoder.class, getNextDecoder(readers).getClass()); assertEquals(Jackson2SmileDecoder.class, getNextDecoder(readers).getClass()); assertEquals(Jaxb2XmlDecoder.class, getNextDecoder(readers).getClass());