From a1d274ffd2ae542bbb08fa88a18540f89e84fc99 Mon Sep 17 00:00:00 2001 From: dlsrb6342 Date: Thu, 28 May 2020 19:15:25 +0900 Subject: [PATCH] Fix BaseCodecConfigurer clone bug --- .../codec/support/BaseCodecConfigurer.java | 8 ++++---- .../codec/support/CodecConfigurerTests.java | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/codec/support/BaseCodecConfigurer.java b/spring-web/src/main/java/org/springframework/http/codec/support/BaseCodecConfigurer.java index 266f6bbe3cfe..327e818e17f2 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/support/BaseCodecConfigurer.java +++ b/spring-web/src/main/java/org/springframework/http/codec/support/BaseCodecConfigurer.java @@ -142,10 +142,10 @@ protected static final class DefaultCustomCodecs implements CustomCodecs { * @since 5.1.12 */ DefaultCustomCodecs(DefaultCustomCodecs other) { - other.typedReaders.putAll(this.typedReaders); - other.typedWriters.putAll(this.typedWriters); - other.objectReaders.putAll(this.objectReaders); - other.objectWriters.putAll(this.objectWriters); + this.typedReaders.putAll(other.typedReaders); + this.typedWriters.putAll(other.typedWriters); + this.objectReaders.putAll(other.objectReaders); + this.objectWriters.putAll(other.objectWriters); } @Override diff --git a/spring-web/src/test/java/org/springframework/http/codec/support/CodecConfigurerTests.java b/spring-web/src/test/java/org/springframework/http/codec/support/CodecConfigurerTests.java index e26cc7a4357a..67850b2449d4 100644 --- a/spring-web/src/test/java/org/springframework/http/codec/support/CodecConfigurerTests.java +++ b/spring-web/src/test/java/org/springframework/http/codec/support/CodecConfigurerTests.java @@ -285,7 +285,7 @@ public void encoderDecoderOverrides() { } @Test - public void cloneCustomCodecs() { + public void cloneEmptyCustomCodecs() { this.configurer.registerDefaults(false); CodecConfigurer clone = this.configurer.clone(); @@ -300,6 +300,22 @@ public void cloneCustomCodecs() { assertThat(clone.getWriters().size()).isEqualTo(2); } + @Test + public void cloneCustomCodecs() { + CodecConfigurer from = new TestCodecConfigurer(); + from.registerDefaults(false); + from.customCodecs().register(new Jackson2JsonEncoder()); + from.customCodecs().register(new Jackson2JsonDecoder()); + from.customCodecs().register(new ServerSentEventHttpMessageReader()); + from.customCodecs().register(new ServerSentEventHttpMessageWriter()); + + CodecConfigurer clone = from.clone(); + assertThat(from.getReaders().size()).isEqualTo(2); + assertThat(from.getWriters().size()).isEqualTo(2); + assertThat(clone.getReaders().size()).isEqualTo(2); + assertThat(clone.getWriters().size()).isEqualTo(2); + } + @Test public void cloneDefaultCodecs() { CodecConfigurer clone = this.configurer.clone();