@Override public void batchCursor(final SingleResultCallback<AsyncBatchCursor<U>> callback) { notNull("callback", callback); iterable.batchCursor( new SingleResultCallback<AsyncBatchCursor<T>>() { @Override public void onResult(final AsyncBatchCursor<T> batchCursor, final Throwable t) { if (t != null) { callback.onResult(null, t); } else { callback.onResult(new MappingAsyncBatchCursor<T, U>(batchCursor, mapper), null); } } }); }
@Override public void first(final SingleResultCallback<U> callback) { notNull("callback", callback); iterable.first( new SingleResultCallback<T>() { @Override public void onResult(final T result, final Throwable t) { if (t != null) { callback.onResult(null, t); } else { callback.onResult(mapper.apply(result), null); } } }); }
@Override public void forEach(final Block<? super U> block, final SingleResultCallback<Void> callback) { notNull("block", block); notNull("callback", callback); iterable.forEach( new Block<T>() { @Override public void apply(final T t) { block.apply(mapper.apply(t)); } }, new SingleResultCallback<Void>() { @Override public void onResult(final Void result, final Throwable t) { if (t != null) { callback.onResult(null, t); } else { callback.onResult(null, null); } } }); }
@Override public <A extends Collection<? super U>> void into( final A target, final SingleResultCallback<A> callback) { notNull("target", target); notNull("callback", callback); iterable.forEach( new Block<T>() { @Override public void apply(final T t) { target.add(mapper.apply(t)); } }, new SingleResultCallback<Void>() { @Override public void onResult(final Void result, final Throwable t) { if (t != null) { callback.onResult(null, t); } else { callback.onResult(target, null); } } }); }
@Override public MongoIterable<U> batchSize(final int batchSize) { iterable.batchSize(batchSize); return this; }