Added MediaType.TEXT_EVENT_STREAM

This commit is contained in:
Arjen Poutsma
2016-10-21 17:44:52 +02:00
parent 99a3210859
commit 94930043fd
2 changed files with 15 additions and 5 deletions

View File

@@ -184,6 +184,17 @@ public class MediaType extends MimeType implements Serializable {
*/
public final static String MULTIPART_FORM_DATA_VALUE = "multipart/form-data";
/**
* Public constant media type for {@code text/event-stream}.
* @see <a href="https://www.w3.org/TR/eventsource/">Server-Sent Events W3C recommendation</a>
*/
public final static MediaType TEXT_EVENT_STREAM;
/**
* A String equivalent of {@link MediaType#TEXT_EVENT_STREAM}.
*/
public final static String TEXT_EVENT_STREAM_VALUE = "text/event-stream";
/**
* Public constant media type for {@code text/html}.
*/
@@ -244,6 +255,7 @@ public class MediaType extends MimeType implements Serializable {
IMAGE_JPEG = valueOf(IMAGE_JPEG_VALUE);
IMAGE_PNG = valueOf(IMAGE_PNG_VALUE);
MULTIPART_FORM_DATA = valueOf(MULTIPART_FORM_DATA_VALUE);
TEXT_EVENT_STREAM = valueOf(TEXT_EVENT_STREAM_VALUE);
TEXT_HTML = valueOf(TEXT_HTML_VALUE);
TEXT_MARKDOWN = valueOf(TEXT_MARKDOWN_VALUE);
TEXT_PLAIN = valueOf(TEXT_PLAIN_VALUE);

View File

@@ -48,8 +48,6 @@ import org.springframework.util.MimeTypeUtils;
*/
public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Object> {
private static final MediaType TEXT_EVENT_STREAM = new MediaType("text", "event-stream");
private final List<Encoder<?>> dataEncoders;
@@ -65,20 +63,20 @@ public class ServerSentEventHttpMessageWriter implements HttpMessageWriter<Objec
@Override
public boolean canWrite(ResolvableType elementType, MediaType mediaType) {
return mediaType == null || TEXT_EVENT_STREAM.isCompatibleWith(mediaType) ||
return mediaType == null || MediaType.TEXT_EVENT_STREAM.isCompatibleWith(mediaType) ||
ServerSentEvent.class.isAssignableFrom(elementType.getRawClass());
}
@Override
public List<MediaType> getWritableMediaTypes() {
return Collections.singletonList(TEXT_EVENT_STREAM);
return Collections.singletonList(MediaType.TEXT_EVENT_STREAM);
}
@Override
public Mono<Void> write(Publisher<?> inputStream, ResolvableType elementType, MediaType mediaType,
ReactiveHttpOutputMessage outputMessage, Map<String, Object> hints) {
outputMessage.getHeaders().setContentType(TEXT_EVENT_STREAM);
outputMessage.getHeaders().setContentType(MediaType.TEXT_EVENT_STREAM);
DataBufferFactory bufferFactory = outputMessage.bufferFactory();
Flux<Publisher<DataBuffer>> body = encode(inputStream, bufferFactory, elementType, hints);