if (stream.includeStreaming())
private String[] getStreamType(ResourceMethodInvoker method) { Stream stream = method.getMethod().getAnnotation(Stream.class); Stream.MODE mode = stream != null ? stream.value() : null; if (mode == null) { return new String[]{"text", "event-stream"}; } else if (Stream.MODE.GENERAL.equals(mode)) { return new String[] {"application", "x-stream-general"}; } else if (Stream.MODE.RAW.equals(mode)) { return new String[] {"application", "x-stream-raw"}; } throw new RuntimeException(Messages.MESSAGES.expectedStreamModeGeneralOrRaw(mode)); }
@Stream @Path("stream") @GET public Observable<String> helloStream() { return Observable.fromArray(new String[] {"Hello", "World"}); }
@Path("9chunked") @Produces("text/json") @GET @Stream public Observable<String> hello9chunked(@Context io.vertx.reactivex.core.Vertx rxVertx){ System.err.println("Creating timer"); return rxVertx.periodicStream(1000).toObservable().map(r -> { System.err.println("Tick: "+r); return "Timer: "+System.currentTimeMillis(); }); }
public static AsyncResponseConsumer makeAsyncResponseConsumer(ResourceMethodInvoker method, AsyncStreamProvider<?> asyncStreamProvider) { if(method.isSse()) { return new AsyncGeneralStreamingSseResponseConsumer(method, asyncStreamProvider); } Stream stream = method.getMethod().getAnnotation(Stream.class); if (stream != null) { if (Stream.MODE.RAW.equals(stream.value())) { return new AsyncRawStreamingResponseConsumer(method, asyncStreamProvider); } else { return new AsyncGeneralStreamingSseResponseConsumer(method, asyncStreamProvider); } } return new AsyncStreamCollectorResponseConsumer(method, asyncStreamProvider); }
if (stream.includeStreaming())
@Override public void filter(ContainerRequestContext requestContext) throws IOException { Method method = ((PostMatchContainerRequestContext) requestContext).getResourceMethod().getMethod(); Stream stream = method.getAnnotation(Stream.class); Stream.MODE mode = stream != null ? stream.value() : null; Class<?> clazz = method.getReturnType(); if ((mode == Stream.MODE.GENERAL && ResteasyProviderFactory.getInstance().getAsyncStreamProvider(clazz) != null) || requestContext instanceof PostMatchContainerRequestContext && ((PostMatchContainerRequestContext) requestContext).getResourceMethod().isSse()) { SseEventOutputImpl sink = new SseEventOutputImpl(new SseEventProvider()); ResteasyContext.getContextDataMap().put(SseEventSink.class, sink); ResteasyContext.getContextData(PostResourceMethodInvokers.class).addInvokers(new PostResourceMethodInvoker() { @Override public void invoke() { sink.flushResponseToClient(); } }); } }
private String[] getStreamType(ResourceMethodInvoker method) { Stream stream = method.getMethod().getAnnotation(Stream.class); Stream.MODE mode = stream != null ? stream.value() : null; if (mode == null) { return new String[]{"text", "event-stream"}; } else if (Stream.MODE.GENERAL.equals(mode)) { return new String[] {"application", "x-stream-general"}; } else if (Stream.MODE.RAW.equals(mode)) { return new String[] {"application", "x-stream-raw"}; } throw new RuntimeException(Messages.MESSAGES.expectedStreamModeGeneralOrRaw(mode)); }
public static AsyncResponseConsumer makeAsyncResponseConsumer(ResourceMethodInvoker method, AsyncStreamProvider<?> asyncStreamProvider) { if(method.isSse()) { return new AsyncGeneralStreamingSseResponseConsumer(method, asyncStreamProvider); } Stream stream = method.getMethod().getAnnotation(Stream.class); if (stream != null) { if (Stream.MODE.RAW.equals(stream.value())) { return new AsyncRawStreamingResponseConsumer(method, asyncStreamProvider); } else { return new AsyncGeneralStreamingSseResponseConsumer(method, asyncStreamProvider); } } return new AsyncStreamCollectorResponseConsumer(method, asyncStreamProvider); }
@Override public void filter(ContainerRequestContext requestContext) throws IOException { Method method = ((PostMatchContainerRequestContext) requestContext).getResourceMethod().getMethod(); Stream stream = method.getAnnotation(Stream.class); Stream.MODE mode = stream != null ? stream.value() : null; Class<?> clazz = method.getReturnType(); if ((mode == Stream.MODE.GENERAL && ResteasyProviderFactory.getInstance().getAsyncStreamProvider(clazz) != null) || requestContext instanceof PostMatchContainerRequestContext && ((PostMatchContainerRequestContext) requestContext).getResourceMethod().isSse()) { SseEventOutputImpl sink = new SseEventOutputImpl(new SseEventProvider()); ResteasyContext.getContextDataMap().put(SseEventSink.class, sink); ResteasyContext.getContextData(PostResourceMethodInvokers.class).addInvokers(new PostResourceMethodInvoker() { @Override public void invoke() { sink.flushResponseToClient(); } }); } }