Expose build method in SseEventBuilder

Issue: SPR-13591
master
Rossen Stoyanchev 9 years ago
parent 050e79e45e
commit 1c382be00e
  1. 5
      spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseBodyEmitter.java
  2. 12
      spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/SseEmitter.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; private final Object data;

@ -117,7 +117,7 @@ public class SseEmitter extends ResponseBodyEmitter {
* @throws IOException raised when an I/O error occurs * @throws IOException raised when an I/O error occurs
*/ */
public void send(SseEventBuilder builder) throws IOException { public void send(SseEventBuilder builder) throws IOException {
Set<DataWithMediaType> dataToSend = ((SseEventBuilderImpl) builder).build(); Set<DataWithMediaType> dataToSend = builder.build();
synchronized (this) { synchronized (this) {
for (DataWithMediaType entry : dataToSend) { for (DataWithMediaType entry : dataToSend) {
super.send(entry.getData(), entry.getMediaType()); super.send(entry.getData(), entry.getMediaType());
@ -165,6 +165,13 @@ public class SseEmitter extends ResponseBodyEmitter {
* Add an SSE "data" line. * Add an SSE "data" line.
*/ */
SseEventBuilder data(Object object, MediaType mediaType); SseEventBuilder data(Object object, MediaType mediaType);
/**
* Return one or more Object-MediaType pairs to write via
* {@link #send(Object, MediaType)}.
*/
Set<DataWithMediaType> build();
} }
@ -223,7 +230,8 @@ public class SseEmitter extends ResponseBodyEmitter {
return this; return this;
} }
Set<DataWithMediaType> build() { @Override
public Set<DataWithMediaType> build() {
if ((this.sb == null || this.sb.length() == 0) && this.dataToSend.isEmpty()) { if ((this.sb == null || this.sb.length() == 0) && this.dataToSend.isEmpty()) {
return Collections.<DataWithMediaType>emptySet(); return Collections.<DataWithMediaType>emptySet();
} }

Loading…
Cancel
Save