From 95bd3f7c67e76735229cdcb81cf0a3e494a49f45 Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Fri, 5 Jun 2026 14:15:11 +0100 Subject: [PATCH 1/2] Exclude Jackson XML from String encoding/decoding Closes gh-36775 --- .../springframework/http/codec/json/JacksonJsonDecoder.java | 3 ++- .../springframework/http/codec/json/JacksonJsonEncoder.java | 2 +- .../springframework/http/codec/xml/JacksonXmlDecoder.java | 5 +++++ .../springframework/http/codec/xml/JacksonXmlEncoder.java | 5 +++++ .../http/codec/json/JacksonJsonEncoderTests.java | 1 + .../http/codec/xml/JacksonXmlDecoderTests.java | 2 +- .../http/codec/xml/JacksonXmlEncoderTests.java | 2 +- 7 files changed, 16 insertions(+), 4 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/codec/json/JacksonJsonDecoder.java b/spring-web/src/main/java/org/springframework/http/codec/json/JacksonJsonDecoder.java index 73cb908d6fe..467bc52a39b 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/json/JacksonJsonDecoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/json/JacksonJsonDecoder.java @@ -104,9 +104,10 @@ public class JacksonJsonDecoder extends AbstractJacksonDecoder { super(mapper, mimeTypes); } + @Override public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) { - return super.canDecode(elementType, mimeType) && !CharSequence.class.isAssignableFrom(elementType.toClass()); + return (super.canDecode(elementType, mimeType) && String.class != elementType.toClass()); } @Override diff --git a/spring-web/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java b/spring-web/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java index e8a14d01b03..10ba18c5860 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/json/JacksonJsonEncoder.java @@ -123,7 +123,7 @@ public class JacksonJsonEncoder extends AbstractJacksonEncoder { @Override public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) { - return super.canEncode(elementType, mimeType) && !String.class.isAssignableFrom(elementType.toClass()); + return (super.canEncode(elementType, mimeType) && String.class != elementType.toClass()); } @Override diff --git a/spring-web/src/main/java/org/springframework/http/codec/xml/JacksonXmlDecoder.java b/spring-web/src/main/java/org/springframework/http/codec/xml/JacksonXmlDecoder.java index d75e13f692b..6de9cc6e609 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/xml/JacksonXmlDecoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/xml/JacksonXmlDecoder.java @@ -102,6 +102,11 @@ public class JacksonXmlDecoder extends AbstractJacksonDecoder { } + @Override + public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) { + return (super.canDecode(elementType, mimeType) && String.class != elementType.toClass()); + } + @Override public Flux decode(Publisher input, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map hints) { diff --git a/spring-web/src/main/java/org/springframework/http/codec/xml/JacksonXmlEncoder.java b/spring-web/src/main/java/org/springframework/http/codec/xml/JacksonXmlEncoder.java index a298a7b3d0f..0835ddf574d 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/xml/JacksonXmlEncoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/xml/JacksonXmlEncoder.java @@ -97,6 +97,11 @@ public class JacksonXmlEncoder extends AbstractJacksonEncoder { } + @Override + public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) { + return (super.canEncode(elementType, mimeType) && String.class != elementType.toClass()); + } + @Override public Flux encode(Publisher inputStream, DataBufferFactory bufferFactory, ResolvableType elementType, @Nullable MimeType mimeType, @Nullable Map hints) { diff --git a/spring-web/src/test/java/org/springframework/http/codec/json/JacksonJsonEncoderTests.java b/spring-web/src/test/java/org/springframework/http/codec/json/JacksonJsonEncoderTests.java index bb3b06bd064..6b900fe5dbf 100644 --- a/spring-web/src/test/java/org/springframework/http/codec/json/JacksonJsonEncoderTests.java +++ b/spring-web/src/test/java/org/springframework/http/codec/json/JacksonJsonEncoderTests.java @@ -90,6 +90,7 @@ class JacksonJsonEncoderTests extends AbstractEncoderTests { // SPR-15910 assertThat(this.encoder.canEncode(ResolvableType.forClass(Object.class), APPLICATION_OCTET_STREAM)).isFalse(); + assertThat(this.encoder.canEncode(ResolvableType.forClass(String.class), null)).isFalse(); assertThatThrownBy(() -> this.encoder.canEncode(ResolvableType.forClass(MappingJacksonValue.class), APPLICATION_JSON)) .isInstanceOf(UnsupportedOperationException.class); diff --git a/spring-web/src/test/java/org/springframework/http/codec/xml/JacksonXmlDecoderTests.java b/spring-web/src/test/java/org/springframework/http/codec/xml/JacksonXmlDecoderTests.java index b9c62214799..c4a77be7d9b 100644 --- a/spring-web/src/test/java/org/springframework/http/codec/xml/JacksonXmlDecoderTests.java +++ b/spring-web/src/test/java/org/springframework/http/codec/xml/JacksonXmlDecoderTests.java @@ -59,7 +59,7 @@ class JacksonXmlDecoderTests extends AbstractDecoderTests { assertThat(decoder.canDecode(ResolvableType.forClass(Pojo.class), MediaType.TEXT_XML)).isTrue(); assertThat(decoder.canDecode(ResolvableType.forClass(Pojo.class), new MediaType("application", "soap+xml"))).isTrue(); assertThat(decoder.canDecode(ResolvableType.forClass(Pojo.class), null)).isTrue(); - assertThat(decoder.canDecode(ResolvableType.forClass(String.class), null)).isTrue(); + assertThat(decoder.canDecode(ResolvableType.forClass(String.class), null)).isFalse(); assertThat(decoder.canDecode(ResolvableType.forClass(Pojo.class), MediaType.APPLICATION_JSON)).isFalse(); } diff --git a/spring-web/src/test/java/org/springframework/http/codec/xml/JacksonXmlEncoderTests.java b/spring-web/src/test/java/org/springframework/http/codec/xml/JacksonXmlEncoderTests.java index d7a2d7ba8ca..8d4f552a54d 100644 --- a/spring-web/src/test/java/org/springframework/http/codec/xml/JacksonXmlEncoderTests.java +++ b/spring-web/src/test/java/org/springframework/http/codec/xml/JacksonXmlEncoderTests.java @@ -52,7 +52,7 @@ class JacksonXmlEncoderTests extends AbstractLeakCheckingTests { assertThat(this.encoder.canEncode(pojoType, MediaType.TEXT_XML)).isTrue(); assertThat(this.encoder.canEncode(pojoType, new MediaType("application", "soap+xml"))).isTrue(); assertThat(this.encoder.canEncode(pojoType, null)).isTrue(); - assertThat(this.encoder.canEncode(ResolvableType.forClass(String.class), null)).isTrue(); + assertThat(this.encoder.canEncode(ResolvableType.forClass(String.class), null)).isFalse(); assertThat(this.encoder.canEncode(ResolvableType.NONE, null)).isTrue(); assertThat(this.encoder.canEncode(ResolvableType.forClass(Pojo.class), MediaType.APPLICATION_JSON)).isFalse(); } From 45812cb9d07e3e6a6b363da3897e1eea1d7684f1 Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Fri, 5 Jun 2026 14:35:26 +0100 Subject: [PATCH 2/2] Prefer Jackson XML codecs when present Closes gh-36776 --- .../http/codec/support/BaseDefaultCodecs.java | 18 +++++---- .../support/ClientCodecConfigurerTests.java | 10 ++--- .../codec/support/CodecConfigurerTests.java | 40 +++++++++---------- .../support/ServerCodecConfigurerTests.java | 10 ++--- 4 files changed, 40 insertions(+), 38 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java b/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java index 2aff56ebf7e..85ccd774e44 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java +++ b/spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java @@ -675,13 +675,14 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure if (JACKSON_CBOR_PRESENT || JACKSON_2_CBOR_PRESENT) { addCodec(this.objectReaders, new DecoderHttpMessageReader<>(getJacksonCborDecoder())); } - if (JAXB_2_PRESENT) { + // Jackson supports Jackson and JAXB annotations, prefer it if present + if (JACKSON_XML_PRESENT) { + addCodec(this.objectReaders, new DecoderHttpMessageReader<>(getJacksonXmlDecoder())); + } + else if (JAXB_2_PRESENT) { addCodec(this.objectReaders, new DecoderHttpMessageReader<>(this.jaxb2Decoder != null ? (Jaxb2XmlDecoder) this.jaxb2Decoder : new Jaxb2XmlDecoder())); } - else if(JACKSON_XML_PRESENT) { - addCodec(this.objectReaders, new DecoderHttpMessageReader<>(getJacksonXmlDecoder())); - } if (KOTLIN_SERIALIZATION_PROTOBUF_PRESENT) { addCodec(this.objectReaders, new DecoderHttpMessageReader<>(getKotlinSerializationProtobufDecoder())); @@ -817,13 +818,14 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure if (JACKSON_CBOR_PRESENT || JACKSON_2_CBOR_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(getJacksonCborEncoder())); } - if (JAXB_2_PRESENT) { + // Jackson supports Jackson and JAXB annotations, prefer it if present + if (JACKSON_XML_PRESENT) { + addCodec(writers, new EncoderHttpMessageWriter<>(getJacksonXmlEncoder())); + } + else if (JAXB_2_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(this.jaxb2Encoder != null ? (Jaxb2XmlEncoder) this.jaxb2Encoder : new Jaxb2XmlEncoder())); } - else if (JACKSON_XML_PRESENT) { - addCodec(writers, new EncoderHttpMessageWriter<>(getJacksonXmlEncoder())); - } if (KOTLIN_SERIALIZATION_PROTOBUF_PRESENT) { addCodec(writers, new EncoderHttpMessageWriter<>(getKotlinSerializationProtobufEncoder())); } 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 e12d2438323..e8fe8ff992c 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 @@ -72,8 +72,8 @@ import org.springframework.http.codec.protobuf.ProtobufDecoder; import org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter; import org.springframework.http.codec.smile.JacksonSmileDecoder; import org.springframework.http.codec.smile.JacksonSmileEncoder; -import org.springframework.http.codec.xml.Jaxb2XmlDecoder; -import org.springframework.http.codec.xml.Jaxb2XmlEncoder; +import org.springframework.http.codec.xml.JacksonXmlDecoder; +import org.springframework.http.codec.xml.JacksonXmlEncoder; import org.springframework.util.MimeTypeUtils; import static org.assertj.core.api.Assertions.assertThat; @@ -113,7 +113,7 @@ class ClientCodecConfigurerTests { assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonSmileDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(KotlinSerializationCborDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonCborDecoder.class); - assertThat(getNextDecoder(readers).getClass()).isEqualTo(Jaxb2XmlDecoder.class); + assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonXmlDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(KotlinSerializationProtobufDecoder.class); assertSseReader(readers); assertStringDecoder(getNextDecoder(readers), false); @@ -138,7 +138,7 @@ class ClientCodecConfigurerTests { assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonSmileEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(KotlinSerializationCborEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonCborEncoder.class); - assertThat(getNextEncoder(writers).getClass()).isEqualTo(Jaxb2XmlEncoder.class); + assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonXmlEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(KotlinSerializationProtobufEncoder.class); assertStringEncoder(getNextEncoder(writers), false); } @@ -186,7 +186,7 @@ class ClientCodecConfigurerTests { assertThat(((JacksonSmileDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); assertThat(((KotlinSerializationCborDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); assertThat(((JacksonCborDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); - assertThat(((Jaxb2XmlDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); + assertThat(((JacksonXmlDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); assertThat(((KotlinSerializationProtobufDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); ServerSentEventHttpMessageReader reader = (ServerSentEventHttpMessageReader) nextReader(readers); 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 f5a2681496a..66ab59100b2 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 @@ -68,8 +68,8 @@ import org.springframework.http.codec.protobuf.ProtobufEncoder; import org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter; import org.springframework.http.codec.smile.JacksonSmileDecoder; import org.springframework.http.codec.smile.JacksonSmileEncoder; -import org.springframework.http.codec.xml.Jaxb2XmlDecoder; -import org.springframework.http.codec.xml.Jaxb2XmlEncoder; +import org.springframework.http.codec.xml.JacksonXmlDecoder; +import org.springframework.http.codec.xml.JacksonXmlEncoder; import org.springframework.util.MimeTypeUtils; import static org.assertj.core.api.Assertions.assertThat; @@ -109,7 +109,7 @@ class CodecConfigurerTests { assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonSmileDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(KotlinSerializationCborDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonCborDecoder.class); - assertThat(getNextDecoder(readers).getClass()).isEqualTo(Jaxb2XmlDecoder.class); + assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonXmlDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(KotlinSerializationProtobufDecoder.class); assertStringDecoder(getNextDecoder(readers), false); } @@ -133,7 +133,7 @@ class CodecConfigurerTests { assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonSmileEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(KotlinSerializationCborEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonCborEncoder.class); - assertThat(getNextEncoder(writers).getClass()).isEqualTo(Jaxb2XmlEncoder.class); + assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonXmlEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(KotlinSerializationProtobufEncoder.class); assertStringEncoder(getNextEncoder(writers), false); } @@ -181,7 +181,7 @@ class CodecConfigurerTests { assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonSmileDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(KotlinSerializationCborDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonCborDecoder.class); - assertThat(getNextDecoder(readers).getClass()).isEqualTo(Jaxb2XmlDecoder.class); + assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonXmlDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(KotlinSerializationProtobufDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(StringDecoder.class); } @@ -228,7 +228,7 @@ class CodecConfigurerTests { assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonSmileEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(KotlinSerializationCborEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonCborEncoder.class); - assertThat(getNextEncoder(writers).getClass()).isEqualTo(Jaxb2XmlEncoder.class); + assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonXmlEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(KotlinSerializationProtobufEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(CharSequenceEncoder.class); } @@ -303,8 +303,8 @@ class CodecConfigurerTests { JacksonSmileEncoder smileEncoder = new JacksonSmileEncoder(); ProtobufDecoder protobufDecoder = new ProtobufDecoder(ExtensionRegistry.newInstance()); ProtobufEncoder protobufEncoder = new ProtobufEncoder(); - Jaxb2XmlEncoder jaxb2Encoder = new Jaxb2XmlEncoder(); - Jaxb2XmlDecoder jaxb2Decoder = new Jaxb2XmlDecoder(); + JacksonXmlEncoder jacksonXmlEncoder = new JacksonXmlEncoder(); + JacksonXmlDecoder jacksonXmlDecoder = new JacksonXmlDecoder(); this.configurer.defaultCodecs().jacksonJsonDecoder(jacksonDecoder); this.configurer.defaultCodecs().jacksonJsonEncoder(jacksonEncoder); @@ -312,17 +312,17 @@ class CodecConfigurerTests { this.configurer.defaultCodecs().jacksonSmileEncoder(smileEncoder); this.configurer.defaultCodecs().protobufDecoder(protobufDecoder); this.configurer.defaultCodecs().protobufEncoder(protobufEncoder); - this.configurer.defaultCodecs().jaxb2Decoder(jaxb2Decoder); - this.configurer.defaultCodecs().jaxb2Encoder(jaxb2Encoder); + this.configurer.defaultCodecs().jacksonXmlDecoder(jacksonXmlDecoder); + this.configurer.defaultCodecs().jacksonXmlEncoder(jacksonXmlEncoder); assertDecoderInstance(jacksonDecoder); assertDecoderInstance(smileDecoder); assertDecoderInstance(protobufDecoder); - assertDecoderInstance(jaxb2Decoder); + assertDecoderInstance(jacksonXmlDecoder); assertEncoderInstance(jacksonEncoder); assertEncoderInstance(smileEncoder); assertEncoderInstance(protobufEncoder); - assertEncoderInstance(jaxb2Encoder); + assertEncoderInstance(jacksonXmlEncoder); } @Test @@ -369,15 +369,15 @@ class CodecConfigurerTests { JacksonJsonDecoder jacksonDecoder = new JacksonJsonDecoder(); JacksonJsonEncoder jacksonEncoder = new JacksonJsonEncoder(); - Jaxb2XmlDecoder jaxb2Decoder = new Jaxb2XmlDecoder(); - Jaxb2XmlEncoder jaxb2Encoder = new Jaxb2XmlEncoder(); + JacksonXmlDecoder jacksonXmlDecoder = new JacksonXmlDecoder(); + JacksonXmlEncoder jacksonXmlEncoder = new JacksonXmlEncoder(); ProtobufDecoder protoDecoder = new ProtobufDecoder(); ProtobufEncoder protoEncoder = new ProtobufEncoder(); clone.defaultCodecs().jacksonJsonDecoder(jacksonDecoder); clone.defaultCodecs().jacksonJsonEncoder(jacksonEncoder); - clone.defaultCodecs().jaxb2Decoder(jaxb2Decoder); - clone.defaultCodecs().jaxb2Encoder(jaxb2Encoder); + clone.defaultCodecs().jacksonXmlDecoder(jacksonXmlDecoder); + clone.defaultCodecs().jacksonXmlEncoder(jacksonXmlEncoder); clone.defaultCodecs().protobufDecoder(protoDecoder); clone.defaultCodecs().protobufEncoder(protoEncoder); @@ -393,8 +393,8 @@ class CodecConfigurerTests { .map(reader -> ((EncoderHttpMessageWriter) reader).getEncoder()) .collect(Collectors.toList()); - assertThat(decoders).contains(jacksonDecoder, jaxb2Decoder, protoDecoder); - assertThat(encoders).contains(jacksonEncoder, jaxb2Encoder, protoEncoder); + assertThat(decoders).contains(jacksonDecoder, jacksonXmlDecoder, protoDecoder); + assertThat(encoders).contains(jacksonEncoder, jacksonXmlEncoder, protoEncoder); // Original does not have the customizations @@ -408,8 +408,8 @@ class CodecConfigurerTests { .map(reader -> ((EncoderHttpMessageWriter) reader).getEncoder()) .collect(Collectors.toList()); - assertThat(decoders).doesNotContain(jacksonDecoder, jaxb2Decoder, protoDecoder); - assertThat(encoders).doesNotContain(jacksonEncoder, jaxb2Encoder, protoEncoder); + assertThat(decoders).doesNotContain(jacksonDecoder, jacksonXmlDecoder, protoDecoder); + assertThat(encoders).doesNotContain(jacksonEncoder, jacksonXmlEncoder, protoEncoder); } private Decoder getNextDecoder(List> readers) { diff --git a/spring-web/src/test/java/org/springframework/http/codec/support/ServerCodecConfigurerTests.java b/spring-web/src/test/java/org/springframework/http/codec/support/ServerCodecConfigurerTests.java index c6565730b87..f998c3379d2 100644 --- a/spring-web/src/test/java/org/springframework/http/codec/support/ServerCodecConfigurerTests.java +++ b/spring-web/src/test/java/org/springframework/http/codec/support/ServerCodecConfigurerTests.java @@ -72,8 +72,8 @@ import org.springframework.http.codec.protobuf.ProtobufDecoder; import org.springframework.http.codec.protobuf.ProtobufHttpMessageWriter; import org.springframework.http.codec.smile.JacksonSmileDecoder; import org.springframework.http.codec.smile.JacksonSmileEncoder; -import org.springframework.http.codec.xml.Jaxb2XmlDecoder; -import org.springframework.http.codec.xml.Jaxb2XmlEncoder; +import org.springframework.http.codec.xml.JacksonXmlDecoder; +import org.springframework.http.codec.xml.JacksonXmlEncoder; import org.springframework.util.MimeTypeUtils; import static org.assertj.core.api.Assertions.assertThat; @@ -112,7 +112,7 @@ class ServerCodecConfigurerTests { assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonSmileDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(KotlinSerializationCborDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonCborDecoder.class); - assertThat(getNextDecoder(readers).getClass()).isEqualTo(Jaxb2XmlDecoder.class); + assertThat(getNextDecoder(readers).getClass()).isEqualTo(JacksonXmlDecoder.class); assertThat(getNextDecoder(readers).getClass()).isEqualTo(KotlinSerializationProtobufDecoder.class); assertStringDecoder(getNextDecoder(readers), false); } @@ -136,7 +136,7 @@ class ServerCodecConfigurerTests { assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonSmileEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(KotlinSerializationCborEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonCborEncoder.class); - assertThat(getNextEncoder(writers).getClass()).isEqualTo(Jaxb2XmlEncoder.class); + assertThat(getNextEncoder(writers).getClass()).isEqualTo(JacksonXmlEncoder.class); assertThat(getNextEncoder(writers).getClass()).isEqualTo(KotlinSerializationProtobufEncoder.class); assertSseWriter(writers); assertStringEncoder(getNextEncoder(writers), false); @@ -185,7 +185,7 @@ class ServerCodecConfigurerTests { assertThat(((JacksonSmileDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); assertThat(((KotlinSerializationCborDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); assertThat(((JacksonCborDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); - assertThat(((Jaxb2XmlDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); + assertThat(((JacksonXmlDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); assertThat(((KotlinSerializationProtobufDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); assertThat(((StringDecoder) getNextDecoder(readers)).getMaxInMemorySize()).isEqualTo(size); }