@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2020 the original author or authors .
* Copyright 2002 - 2021 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -18,7 +18,6 @@ package org.springframework.http.codec;
@@ -18,7 +18,6 @@ package org.springframework.http.codec;
import java.nio.charset.StandardCharsets ;
import java.time.Duration ;
import java.util.Arrays ;
import java.util.Collections ;
import java.util.List ;
import java.util.Map ;
@ -171,12 +170,14 @@ public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Objec
@@ -171,12 +170,14 @@ public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Objec
if ( this . encoder = = null ) {
throw new CodecException ( "No SSE encoder configured and the data is not String." ) ;
}
DataBuffer buffer = ( ( Encoder < T > ) this . encoder ) . encodeValue ( data , factory , dataType , mediaType , hints ) ;
Hints . touchDataBuffer ( buffer , hints , logger ) ;
return Flux . just ( factory . join ( Arrays . asList (
encodeText ( eventContent , mediaType , factory ) ,
buffer ,
encodeText ( "\n\n" , mediaType , factory ) ) ) ) ;
return Flux . defer ( ( ) - > {
DataBuffer startBuffer = encodeText ( eventContent , mediaType , factory ) ;
DataBuffer endBuffer = encodeText ( "\n\n" , mediaType , factory ) ;
DataBuffer dataBuffer = ( ( Encoder < T > ) this . encoder ) . encodeValue ( data , factory , dataType , mediaType , hints ) ;
Hints . touchDataBuffer ( dataBuffer , hints , logger ) ;
return Flux . just ( startBuffer , dataBuffer , endBuffer ) ;
} ) ;
}
private void writeField ( String fieldName , Object fieldValue , StringBuilder sb ) {