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;

@ -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<DataWithMediaType> dataToSend = ((SseEventBuilderImpl) builder).build();
Set<DataWithMediaType> 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<DataWithMediaType> build();
}
@ -223,7 +230,8 @@ public class SseEmitter extends ResponseBodyEmitter {
return this;
}
Set<DataWithMediaType> build() {
@Override
public Set<DataWithMediaType> build() {
if ((this.sb == null || this.sb.length() == 0) && this.dataToSend.isEmpty()) {
return Collections.<DataWithMediaType>emptySet();
}

Loading…
Cancel
Save