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;

View File

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