Fix handling of ServerSentEvent with Jackson encoder

This commit fixes ServerSentEvent handling with Jackson encoder
when no Accept header is specified.

It also moves the String checks to the JSON codec level, as they do not
make sense for binary formats.

Closes gh-35872
This commit is contained in:
Sébastien Deleuze
2025-11-24 12:14:25 +01:00
parent 1b6b163f24
commit c10266e57e
9 changed files with 19 additions and 19 deletions
@@ -57,7 +57,7 @@ class JacksonCborDecoderTests extends AbstractDecoderTests<JacksonCborDecoder> {
assertThat(decoder.canDecode(ResolvableType.forClass(Pojo.class), MediaType.APPLICATION_CBOR)).isTrue();
assertThat(decoder.canDecode(ResolvableType.forClass(Pojo.class), null)).isTrue();
assertThat(decoder.canDecode(ResolvableType.forClass(String.class), null)).isFalse();
assertThat(decoder.canDecode(ResolvableType.forClass(String.class), null)).isTrue();
assertThat(decoder.canDecode(ResolvableType.forClass(Pojo.class), APPLICATION_JSON)).isFalse();
}
@@ -59,6 +59,7 @@ class JacksonCborEncoderTests extends AbstractLeakCheckingTests {
ResolvableType pojoType = ResolvableType.forClass(Pojo.class);
assertThat(this.encoder.canEncode(pojoType, MediaType.APPLICATION_CBOR)).isTrue();
assertThat(this.encoder.canEncode(pojoType, null)).isTrue();
assertThat(this.encoder.canEncode(ResolvableType.forClass(String.class), null)).isTrue();
// SPR-15464
assertThat(this.encoder.canEncode(ResolvableType.NONE, null)).isTrue();
@@ -66,7 +67,6 @@ class JacksonCborEncoderTests extends AbstractLeakCheckingTests {
@Test
void canNotEncode() {
assertThat(this.encoder.canEncode(ResolvableType.forClass(String.class), null)).isFalse();
assertThat(this.encoder.canEncode(ResolvableType.forClass(Pojo.class), APPLICATION_XML)).isFalse();
}
@@ -62,7 +62,7 @@ class JacksonSmileDecoderTests extends AbstractDecoderTests<JacksonSmileDecoder>
assertThat(decoder.canDecode(ResolvableType.forClass(Pojo.class), STREAM_SMILE_MIME_TYPE)).isTrue();
assertThat(decoder.canDecode(ResolvableType.forClass(Pojo.class), null)).isTrue();
assertThat(decoder.canDecode(ResolvableType.forClass(String.class), null)).isFalse();
assertThat(decoder.canDecode(ResolvableType.forClass(String.class), null)).isTrue();
assertThat(decoder.canDecode(ResolvableType.forClass(Pojo.class), APPLICATION_JSON)).isFalse();
}
@@ -65,6 +65,7 @@ class JacksonSmileEncoderTests extends AbstractEncoderTests<JacksonSmileEncoder>
assertThat(this.encoder.canEncode(pojoType, SMILE_MIME_TYPE)).isTrue();
assertThat(this.encoder.canEncode(pojoType, STREAM_SMILE_MIME_TYPE)).isTrue();
assertThat(this.encoder.canEncode(pojoType, null)).isTrue();
assertThat(this.encoder.canEncode(ResolvableType.forClass(String.class), null)).isTrue();
// SPR-15464
assertThat(this.encoder.canEncode(ResolvableType.NONE, null)).isTrue();
@@ -72,7 +73,7 @@ class JacksonSmileEncoderTests extends AbstractEncoderTests<JacksonSmileEncoder>
@Test
void cannotEncode() {
assertThat(this.encoder.canEncode(ResolvableType.forClass(String.class), null)).isFalse();
assertThat(this.encoder.canEncode(ResolvableType.forClass(Pojo.class), APPLICATION_XML)).isFalse();
}