Add WebFlux SSE support with GSON

Closes gh-35884
This commit is contained in:
Sébastien Deleuze
2025-11-25 13:31:39 +01:00
parent c10266e57e
commit f3908832c5
3 changed files with 7 additions and 2 deletions
@@ -37,6 +37,7 @@ import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.DataBufferFactory;
import org.springframework.http.MediaType;
import org.springframework.http.codec.HttpMessageEncoder;
import org.springframework.http.codec.ServerSentEvent;
import org.springframework.util.Assert;
import org.springframework.util.FastByteArrayOutputStream;
import org.springframework.util.MimeType;
@@ -106,7 +107,8 @@ public class GsonEncoder extends AbstractEncoder<Object> implements HttpMessageE
if (!super.canEncode(elementType, mimeType)) {
return false;
}
return !String.class.isAssignableFrom(elementType.toClass());
Class<?> elementClass = elementType.toClass();
return !(String.class.isAssignableFrom(elementClass) || ServerSentEvent.class.isAssignableFrom(elementClass));
}
@Override
@@ -58,6 +58,7 @@ class ServerDefaultCodecsImpl extends BaseDefaultCodecs implements ServerCodecCo
private @Nullable Encoder<?> getSseEncoder() {
return this.sseEncoder != null ? this.sseEncoder :
(JACKSON_PRESENT || JACKSON_2_PRESENT) ? getJacksonJsonEncoder() :
GSON_PRESENT ? getGsonEncoder() :
KOTLIN_SERIALIZATION_JSON_PRESENT ? getKotlinSerializationJsonEncoder() :
null;
}