@Override public void onDone() { R result; try { result = _collector.finisher().apply(_intermediateResult); } catch (Throwable e) { handleException(e); return; } _completable.complete(result); }
@Test public void testWrite() throws ExecutionException, InterruptedException { String singleton = "singleton"; Writer<Object> singletonWriter = new SingletonWriter<>(singleton); EntityStream<Object> singletonStream = EntityStreams.newEntityStream(singletonWriter); CollectingReader<Object, ?, Set<Object>> reader = new CollectingReader<>(Collectors.toSet()); singletonStream.setReader(reader); Assert.assertEquals(reader.getResult().toCompletableFuture().get(), Collections.singleton(singleton)); } }
@Test(dataProvider = "data") public void testWrite(int chunkSize) throws InterruptedException, ExecutionException, TimeoutException { Writer<ByteString> writer = new ChunkedByteStringWriter(DATA, chunkSize); EntityStream<ByteString> stream = EntityStreams.newEntityStream(writer); CollectingReader<ByteString, ?, ChunkedByteStringCollector.Result> reader = new CollectingReader<>(new ChunkedByteStringCollector()); stream.setReader(reader); ChunkedByteStringCollector.Result result = reader.getResult().toCompletableFuture().get(); Assert.assertEquals(result.data, DATA); Assert.assertEquals(result.chunkCount, (DATA.length - 1) / chunkSize + 1); } }
@Override public void onInit(ReadHandle rh) { _readHandle = rh; _completable = new CompletableFuture<>(); try { _intermediateResult = _collector.supplier().get(); } catch (Throwable e) { handleException(e); } rh.request(1); }
@Override public void onDataAvailable(T data) { try { _collector.accumulator().accept(_intermediateResult, data); } catch (Throwable e) { handleException(e); } _readHandle.request(1); }