/** * Convenience for {@link #subscribe()} with a subsequent call to * {@link SubscriptionBuilder#dataSubscriptionList(DataSubscriptionList)}. * * @param dataSubscriptionList the resulting {@link io.objectbox.reactive.DataSubscription} will be added to it */ public SubscriptionBuilder<List<T>> subscribe(DataSubscriptionList dataSubscriptionList) { SubscriptionBuilder<List<T>> subscriptionBuilder = subscribe(); subscriptionBuilder.dataSubscriptionList(dataSubscriptionList); return subscriptionBuilder; }
@Override public void subscribe(final SingleEmitter<List<T>> emitter) throws Exception { query.subscribe().single().observer(new DataObserver<List<T>>() { @Override public void onData(List<T> data) { if (!emitter.isDisposed()) { emitter.onSuccess(data); } } }); // no need to cancel, single never subscribes } });
@Override public void subscribe(final ObservableEmitter<List<T>> emitter) throws Exception { final DataSubscription dataSubscription = query.subscribe().observer(new DataObserver<List<T>>() { @Override public void onData(List<T> data) { if (!emitter.isDisposed()) { emitter.onNext(data); } } }); emitter.setCancellable(new Cancellable() { @Override public void cancel() throws Exception { dataSubscription.cancel(); } }); } });
static <T> void createListItemEmitter(final Query<T> query, final FlowableEmitter<T> emitter) { final DataSubscription dataSubscription = query.subscribe().observer(new DataObserver<List<T>>() { @Override public void onData(List<T> data) { for (T datum : data) { if (emitter.isCancelled()) { return; } else { emitter.onNext(datum); } } if (!emitter.isCancelled()) { emitter.onComplete(); } } }); emitter.setCancellable(new Cancellable() { @Override public void cancel() throws Exception { dataSubscription.cancel(); } }); }
public MockQuery(boolean hasOrder) { // box = mock(Box.class); // boxStore = mock(BoxStore.class); // when(box.getStore()).thenReturn(boxStore); query = mock(Query.class); fakeQueryPublisher = new FakeQueryPublisher(); SubscriptionBuilder subscriptionBuilder = new SubscriptionBuilder(fakeQueryPublisher, null, null); when(query.subscribe()).thenReturn(subscriptionBuilder); }
@Test public void testObserver() { int[] valuesInt = {2003, 2007, 2002}; Query<TestEntity> query = box.query().in(simpleInt, valuesInt).build(); assertEquals(0, query.count()); query.subscribe().observer(this); assertLatchCountedDown(latch, 5); assertEquals(1, receivedChanges.size()); assertEquals(0, receivedChanges.get(0).size()); receivedChanges.clear(); latch = new CountDownLatch(1); putTestEntitiesScalars(); assertLatchCountedDown(latch, 5); assertEquals(1, receivedChanges.size()); assertEquals(3, receivedChanges.get(0).size()); }
@Test public void testSingle() throws InterruptedException { putTestEntitiesScalars(); int[] valuesInt = {2003, 2007, 2002}; Query<TestEntity> query = box.query().in(simpleInt, valuesInt).build(); query.subscribe().single().observer(this); assertLatchCountedDown(latch, 5); assertEquals(1, receivedChanges.size()); assertEquals(3, receivedChanges.get(0).size()); receivedChanges.clear(); putTestEntities(1); Thread.sleep(20); assertEquals(0, receivedChanges.size()); }
final List<Integer> receivedSums = new ArrayList<>(); query.subscribe().transform(new DataTransformer<List<TestEntity>, Integer>() {
@Override public void onStart() { super.onStart(); if(this.subscription == null || this.subscription.isCanceled()) { this.subscription = viewModel.getWaypointsList().subscribe().on(AndroidScheduler.mainThread()).observer(recyclerViewAdapter) ; } }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setUpViews(); notesBox = ((App) getApplication()).getBoxStore().boxFor(Note.class); // query all notes, sorted a-z by their text (https://docs.objectbox.io/queries) notesQuery = notesBox.query().order(Note_.text).build(); // Reactive query (https://docs.objectbox.io/data-observers-and-rx) notesQuery.subscribe(subscriptions).on(AndroidScheduler.mainThread()) .observer(new DataObserver<List<Note>>() { @Override public void onData(List<Note> notes) { notesAdapter.setNotes(notes); } }); }