Expose build method in SseEventBuilder

Issue: SPR-13591
This commit is contained in:
Rossen Stoyanchev
2015-10-26 16:19:10 -04:00
parent 050e79e45e
commit 1c382be00e
2 changed files with 13 additions and 4 deletions

View File

@@ -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;

View File

@@ -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();
} }