diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitter.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitter.java index 2973ef9695..018c562bba 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitter.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitter.java @@ -241,9 +241,10 @@ public class ResponseBodyEmitter { /** - * Simple struct for a data entry. + * A simple holder of data to be written along with a MediaType hint for + * selecting a message converter to write with. */ - static class DataWithMediaType { + public static class DataWithMediaType { private final Object data; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SseEmitter.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SseEmitter.java index 0092e7c780..48d382b352 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SseEmitter.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SseEmitter.java @@ -117,7 +117,7 @@ public class SseEmitter extends ResponseBodyEmitter { * @throws IOException raised when an I/O error occurs */ public void send(SseEventBuilder builder) throws IOException { - Set dataToSend = ((SseEventBuilderImpl) builder).build(); + Set dataToSend = builder.build(); synchronized (this) { for (DataWithMediaType entry : dataToSend) { super.send(entry.getData(), entry.getMediaType()); @@ -165,6 +165,13 @@ public class SseEmitter extends ResponseBodyEmitter { * Add an SSE "data" line. */ SseEventBuilder data(Object object, MediaType mediaType); + + /** + * Return one or more Object-MediaType pairs to write via + * {@link #send(Object, MediaType)}. + */ + Set build(); + } @@ -223,7 +230,8 @@ public class SseEmitter extends ResponseBodyEmitter { return this; } - Set build() { + @Override + public Set build() { if ((this.sb == null || this.sb.length() == 0) && this.dataToSend.isEmpty()) { return Collections.emptySet(); }