|
|
|
@ -138,11 +138,11 @@ public class ReactiveTypeHandlerTests { |
|
|
|
Bar bar1 = new Bar("foo"); |
|
|
|
Bar bar1 = new Bar("foo"); |
|
|
|
Bar bar2 = new Bar("bar"); |
|
|
|
Bar bar2 = new Bar("bar"); |
|
|
|
|
|
|
|
|
|
|
|
Sinks.StandaloneFluxSink<Bar> sink = Sinks.unicast(); |
|
|
|
Sinks.Many<Bar> sink = Sinks.many().unicast().onBackpressureBuffer(); |
|
|
|
testDeferredResultSubscriber(sink.asFlux(), Flux.class, forClass(Bar.class), () -> { |
|
|
|
testDeferredResultSubscriber(sink.asFlux(), Flux.class, forClass(Bar.class), () -> { |
|
|
|
sink.next(bar1); |
|
|
|
sink.emitNext(bar1); |
|
|
|
sink.next(bar2); |
|
|
|
sink.emitNext(bar2); |
|
|
|
sink.complete(); |
|
|
|
sink.emitComplete(); |
|
|
|
}, Arrays.asList(bar1, bar2)); |
|
|
|
}, Arrays.asList(bar1, bar2)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -189,16 +189,16 @@ public class ReactiveTypeHandlerTests { |
|
|
|
public void writeServerSentEvents() throws Exception { |
|
|
|
public void writeServerSentEvents() throws Exception { |
|
|
|
|
|
|
|
|
|
|
|
this.servletRequest.addHeader("Accept", "text/event-stream"); |
|
|
|
this.servletRequest.addHeader("Accept", "text/event-stream"); |
|
|
|
Sinks.StandaloneFluxSink<String> sink = Sinks.unicast(); |
|
|
|
Sinks.Many<String> sink = Sinks.many().unicast().onBackpressureBuffer(); |
|
|
|
SseEmitter sseEmitter = (SseEmitter) handleValue(sink.asFlux(), Flux.class, forClass(String.class)); |
|
|
|
SseEmitter sseEmitter = (SseEmitter) handleValue(sink.asFlux(), Flux.class, forClass(String.class)); |
|
|
|
|
|
|
|
|
|
|
|
EmitterHandler emitterHandler = new EmitterHandler(); |
|
|
|
EmitterHandler emitterHandler = new EmitterHandler(); |
|
|
|
sseEmitter.initialize(emitterHandler); |
|
|
|
sseEmitter.initialize(emitterHandler); |
|
|
|
|
|
|
|
|
|
|
|
sink.next("foo"); |
|
|
|
sink.emitNext("foo"); |
|
|
|
sink.next("bar"); |
|
|
|
sink.emitNext("bar"); |
|
|
|
sink.next("baz"); |
|
|
|
sink.emitNext("baz"); |
|
|
|
sink.complete(); |
|
|
|
sink.emitComplete(); |
|
|
|
|
|
|
|
|
|
|
|
assertThat(emitterHandler.getValuesAsText()).isEqualTo("data:foo\n\ndata:bar\n\ndata:baz\n\n"); |
|
|
|
assertThat(emitterHandler.getValuesAsText()).isEqualTo("data:foo\n\ndata:bar\n\ndata:baz\n\n"); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -208,16 +208,16 @@ public class ReactiveTypeHandlerTests { |
|
|
|
|
|
|
|
|
|
|
|
ResolvableType type = ResolvableType.forClassWithGenerics(ServerSentEvent.class, String.class); |
|
|
|
ResolvableType type = ResolvableType.forClassWithGenerics(ServerSentEvent.class, String.class); |
|
|
|
|
|
|
|
|
|
|
|
Sinks.StandaloneFluxSink<ServerSentEvent<?>> sink = Sinks.unicast(); |
|
|
|
Sinks.Many<ServerSentEvent<?>> sink = Sinks.many().unicast().onBackpressureBuffer(); |
|
|
|
SseEmitter sseEmitter = (SseEmitter) handleValue(sink.asFlux(), Flux.class, type); |
|
|
|
SseEmitter sseEmitter = (SseEmitter) handleValue(sink.asFlux(), Flux.class, type); |
|
|
|
|
|
|
|
|
|
|
|
EmitterHandler emitterHandler = new EmitterHandler(); |
|
|
|
EmitterHandler emitterHandler = new EmitterHandler(); |
|
|
|
sseEmitter.initialize(emitterHandler); |
|
|
|
sseEmitter.initialize(emitterHandler); |
|
|
|
|
|
|
|
|
|
|
|
sink.next(ServerSentEvent.builder("foo").id("1").build()); |
|
|
|
sink.emitNext(ServerSentEvent.builder("foo").id("1").build()); |
|
|
|
sink.next(ServerSentEvent.builder("bar").id("2").build()); |
|
|
|
sink.emitNext(ServerSentEvent.builder("bar").id("2").build()); |
|
|
|
sink.next(ServerSentEvent.builder("baz").id("3").build()); |
|
|
|
sink.emitNext(ServerSentEvent.builder("baz").id("3").build()); |
|
|
|
sink.complete(); |
|
|
|
sink.emitComplete(); |
|
|
|
|
|
|
|
|
|
|
|
assertThat(emitterHandler.getValuesAsText()).isEqualTo("id:1\ndata:foo\n\nid:2\ndata:bar\n\nid:3\ndata:baz\n\n"); |
|
|
|
assertThat(emitterHandler.getValuesAsText()).isEqualTo("id:1\ndata:foo\n\nid:2\ndata:bar\n\nid:3\ndata:baz\n\n"); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -227,7 +227,7 @@ public class ReactiveTypeHandlerTests { |
|
|
|
|
|
|
|
|
|
|
|
this.servletRequest.addHeader("Accept", "application/x-ndjson"); |
|
|
|
this.servletRequest.addHeader("Accept", "application/x-ndjson"); |
|
|
|
|
|
|
|
|
|
|
|
Sinks.StandaloneFluxSink<Bar> sink = Sinks.unicast(); |
|
|
|
Sinks.Many<Bar> sink = Sinks.many().unicast().onBackpressureBuffer(); |
|
|
|
ResponseBodyEmitter emitter = handleValue(sink.asFlux(), Flux.class, forClass(Bar.class)); |
|
|
|
ResponseBodyEmitter emitter = handleValue(sink.asFlux(), Flux.class, forClass(Bar.class)); |
|
|
|
|
|
|
|
|
|
|
|
EmitterHandler emitterHandler = new EmitterHandler(); |
|
|
|
EmitterHandler emitterHandler = new EmitterHandler(); |
|
|
|
@ -239,9 +239,9 @@ public class ReactiveTypeHandlerTests { |
|
|
|
Bar bar1 = new Bar("foo"); |
|
|
|
Bar bar1 = new Bar("foo"); |
|
|
|
Bar bar2 = new Bar("bar"); |
|
|
|
Bar bar2 = new Bar("bar"); |
|
|
|
|
|
|
|
|
|
|
|
sink.next(bar1); |
|
|
|
sink.emitNext(bar1); |
|
|
|
sink.next(bar2); |
|
|
|
sink.emitNext(bar2); |
|
|
|
sink.complete(); |
|
|
|
sink.emitComplete(); |
|
|
|
|
|
|
|
|
|
|
|
assertThat(message.getHeaders().getContentType().toString()).isEqualTo("application/x-ndjson"); |
|
|
|
assertThat(message.getHeaders().getContentType().toString()).isEqualTo("application/x-ndjson"); |
|
|
|
assertThat(emitterHandler.getValues()).isEqualTo(Arrays.asList(bar1, "\n", bar2, "\n")); |
|
|
|
assertThat(emitterHandler.getValues()).isEqualTo(Arrays.asList(bar1, "\n", bar2, "\n")); |
|
|
|
@ -250,16 +250,16 @@ public class ReactiveTypeHandlerTests { |
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void writeText() throws Exception { |
|
|
|
public void writeText() throws Exception { |
|
|
|
|
|
|
|
|
|
|
|
Sinks.StandaloneFluxSink<String> sink = Sinks.unicast(); |
|
|
|
Sinks.Many<String> sink = Sinks.many().unicast().onBackpressureBuffer(); |
|
|
|
ResponseBodyEmitter emitter = handleValue(sink.asFlux(), Flux.class, forClass(String.class)); |
|
|
|
ResponseBodyEmitter emitter = handleValue(sink.asFlux(), Flux.class, forClass(String.class)); |
|
|
|
|
|
|
|
|
|
|
|
EmitterHandler emitterHandler = new EmitterHandler(); |
|
|
|
EmitterHandler emitterHandler = new EmitterHandler(); |
|
|
|
emitter.initialize(emitterHandler); |
|
|
|
emitter.initialize(emitterHandler); |
|
|
|
|
|
|
|
|
|
|
|
sink.next("The quick"); |
|
|
|
sink.emitNext("The quick"); |
|
|
|
sink.next(" brown fox jumps over "); |
|
|
|
sink.emitNext(" brown fox jumps over "); |
|
|
|
sink.next("the lazy dog"); |
|
|
|
sink.emitNext("the lazy dog"); |
|
|
|
sink.complete(); |
|
|
|
sink.emitComplete(); |
|
|
|
|
|
|
|
|
|
|
|
assertThat(emitterHandler.getValuesAsText()).isEqualTo("The quick brown fox jumps over the lazy dog"); |
|
|
|
assertThat(emitterHandler.getValuesAsText()).isEqualTo("The quick brown fox jumps over the lazy dog"); |
|
|
|
} |
|
|
|
} |
|
|
|
|