@Override public Observable<ByteBuf> call(Observable<ByteBuf> upstream) { return upstream .collect( new Func0<CompositeByteBuf>() { @Override public CompositeByteBuf call() { return Unpooled.compositeBuffer(); } }, new Action2<CompositeByteBuf, ByteBuf>() { @Override public void call(CompositeByteBuf collector, ByteBuf buf) { long newLength = collector.readableBytes() + buf.readableBytes(); if (newLength <= maxBytes) { collector.addComponent(true, buf); } else { collector.release(); buf.release(); throw new TooMuchDataException("More than " + maxBytes + "B received"); } } } ) .cast(ByteBuf.class); }
@Override public Observable<Void> mapResponseToRequests(Observable<BatchReturnType> batchResponse, final Collection<CollapsedRequest<ResponseType, RequestArgumentType>> requests) { return batchResponse.single().doOnNext(new Action1<BatchReturnType>() { @Override public void call(BatchReturnType batchReturnType) { // this is a blocking call in HystrixCollapser self.mapResponseToRequests(batchReturnType, requests); } }).ignoreElements().cast(Void.class); }
}).ignoreElements().cast(Void.class);
private static <T> Observable<Boolean> commitOrRollbackOnCompleteTransformerIfAtLeastOneValue( final boolean isCommit, final Database db, Observable<T> source) { CountingAction<T> counter = RxUtil.counter(); Observable<Boolean> commit = counter // get count .count() // greater than zero or empty .filter(greaterThanZero()) // commit if at least one value .compose(db.commitOrRollback_(isCommit)); return Observable // concatenate .concat(source // count emissions .doOnNext(counter) // ignore emissions .ignoreElements() // cast the empty sequence to type Boolean .cast(Boolean.class), // concat with commit commit); }
@Override public Observable<ActionState<A>> call(Observable<ActionState> source) { return source.cast(type); } }
@Override public void run() { Observable.<Object>just(1, 2, 3). cast(Integer.class).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { log(integer); } }); } });
private <T> Observable<T> currentValueIfPresent(String key, Class<T> type) { return Observable.from( singleOrEmpty(() -> values.get(key))) .cast(type); }
@Override public Observable<Void> mapResponseToRequests(Observable<BatchReturnType> batchResponse, final Collection<CollapsedRequest<ResponseType, RequestArgumentType>> requests) { return batchResponse.single().doOnNext(new Action1<BatchReturnType>() { @Override public void call(BatchReturnType batchReturnType) { // this is a blocking call in HystrixCollapser self.mapResponseToRequests(batchReturnType, requests); } }).ignoreElements().cast(Void.class); }
@Test public void testSendByte() { AssertableSubscriber<String> subscriber = subscribe(destination, byte[].class).map(Message::getPayload).cast(byte[].class).map(String::new) .test(); sendSubscribeOperation.sendRx(destination, byteMessage); subscriber.assertValue(payload).assertNoErrors(); }
@Test public void testSendByte() { AssertableSubscriber<String> subscriber = subscribe(destination, byte[].class).map(Message::getPayload).cast(byte[].class).map(String::new) .test(); sendSubscribeOperation.sendRx(destination, byteMessage); subscriber.assertValue(payload).assertNoErrors(); }
@Test public void testSendUser() { AssertableSubscriber<User> subscriber = subscribe(destination, User.class).map(Message::getPayload).cast(User.class).test(); sendSubscribeOperation.sendRx(destination, userMessage); subscriber.assertValue(user).assertNoErrors(); }
@Test public void testSendString() { AssertableSubscriber<String> subscriber = subscribe(destination, String.class).map(Message::getPayload).cast(String.class).test(); sendSubscribeOperation.sendRx(destination, stringMessage); subscriber.assertValue(payload).assertNoErrors(); }
@Test public void testSendString() { AssertableSubscriber<String> subscriber = subscribe(destination, String.class).map(Message::getPayload).cast(String.class).test(); sendSubscribeOperation.sendRx(destination, stringMessage); subscriber.assertValue(payload).assertNoErrors(); }
@Test public void testSendUser() { AssertableSubscriber<User> subscriber = subscribe(destination, User.class).map(Message::getPayload).cast(User.class).test(); sendSubscribeOperation.sendRx(destination, userMessage); subscriber.assertValue(user).assertNoErrors(); }
void connect() { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); Observable<String> txtMessages = observe(connectionFactory, new ActiveMQTopic("orders")) .cast(TextMessage.class) .flatMap(m -> { try { return Observable.just(m.getText()); } catch (JMSException e) { return Observable.error(e); } }); }
@Test public void sample_35() throws Exception { CouchbaseAsyncCluster cluster = CouchbaseAsyncCluster.create(); cluster .openBucket("travel-sample") .flatMap(cl -> cl.get("route_14197") .map(AbstractDocument::content) .map(jsonObject -> jsonObject.getArray("schedule"))) .concatMapIterable(JsonArray::toList) .cast(Map.class) .filter(m -> ((Number) m.get("day")).intValue() == 0) .map(m -> m.get("flight").toString()) .subscribe(flight -> System.out.println(flight)); }
@Test public void testSendReceiveWithRecordCheckpointMode() { setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.RECORD).build()); AssertableSubscriber<User> subscriber = subscribe(destination, User.class).map(Message::getPayload).cast(User.class).test(); Arrays.stream(messages).forEach(m -> sendSubscribeOperation.sendRx(destination, m)); subscriber.assertValueCount(messages.length).assertNoErrors(); verifyCheckpointSuccessCalled(messages.length); }
@Test public void testSendReceiveWithRecordCheckpointMode() { setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.RECORD).build()); AssertableSubscriber<User> subscriber = subscribe(destination, User.class).map(Message::getPayload).cast(User.class).test(); Arrays.stream(messages).forEach(m -> sendSubscribeOperation.sendRx(destination, m)); subscriber.assertValueCount(messages.length).assertNoErrors(); verifyCheckpointSuccessCalled(messages.length); }
@Test public void testSendReceiveWithManualCheckpointMode() { setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.MANUAL).build()); Observable<Message<?>> observable = subscribe(destination, User.class); AssertableSubscriber<User> userSubscriber = observable.map(Message::getPayload).cast(User.class).test(); sendSubscribeOperation.sendRx(destination, userMessage); userSubscriber.assertValue(user).assertNoErrors(); verifyCheckpointSuccessCalled(0); }
@Test public void testSendReceiveWithManualCheckpointMode() { setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.MANUAL).build()); Observable<Message<?>> observable = subscribe(destination, User.class); AssertableSubscriber<User> userSubscriber = observable.map(Message::getPayload).cast(User.class).test(); sendSubscribeOperation.sendRx(destination, userMessage); userSubscriber.assertValue(user).assertNoErrors(); verifyCheckpointSuccessCalled(0); }