@Override public void accept(GroupedObservable<Object, Movie> g) { System.out.println(g.getKey()); } })
@Override public Observable<String> apply(GroupedObservable<Integer, Event> eventGroupedObservable) { System.out.println("GroupedObservable Key: " + eventGroupedObservable.getKey()); groupCounter.incrementAndGet(); return eventGroupedObservable.map(new Function<Event, String>() { @Override public String apply(Event event) { return "Source: " + event.source + " Message: " + event.message; } }); } }).subscribe(new DefaultObserver<String>() {
@Override public void accept(final GroupedObservable<K, V> o) { result.put(o.getKey(), new ConcurrentLinkedQueue<V>()); o.subscribe(new Consumer<V>() { @Override public void accept(V v) { result.get(o.getKey()).add(v); } }); } });
@Override public Observable<String> apply(GroupedObservable<Integer, Event> eventGroupedObservable) { int numToTake = 0; if (eventGroupedObservable.getKey() == 1) { numToTake = 10; } else if (eventGroupedObservable.getKey() == 2) { numToTake = 5; } return eventGroupedObservable .take(numToTake) .map(new Function<Event, String>() { @Override public String apply(Event event) { return "testUnsubscribe => Source: " + event.source + " Message: " + event.message; } }); } })
@Override public Observable<String> apply(final GroupedObservable<String, String> g) { System.out.println("-----------> NEXT: " + g.getKey()); return g.take(2).map(new Function<String, String>() { int count; @Override public String apply(String v) { System.out.println(v); return g.getKey() + "-" + count++; } }); } });
@Override public Observable<String> apply(GroupedObservable<Integer, Event> eventGroupedObservable) { System.out.println("testUnsubscribe => GroupedObservable Key: " + eventGroupedObservable.getKey()); groupCounter.incrementAndGet(); return eventGroupedObservable .take(20) // limit to only 20 events on this group .map(new Function<Event, String>() { @Override public String apply(Event event) { return "testUnsubscribe => Source: " + event.source + " Message: " + event.message; } }); } }).subscribe(new DefaultObserver<String>() {
@Override public void onNext(GroupedObservable<Integer, Integer> o) { if (o.getKey() == 0) { o.subscribe(inner1); } else { o.subscribe(inner2); } } });
@Override public Observable<Integer> apply(GroupedObservable<Integer, Integer> group) { if (group.getKey() == 0) { return group.delay(100, TimeUnit.MILLISECONDS).map(new Function<Integer, Integer>() { @Override public Integer apply(Integer t) { return t * 10; } }); } else { return group; } } })
@Override public Observable<String> apply(GroupedObservable<Integer, Event> eventGroupedObservable) { Observable<Event> eventStream = eventGroupedObservable; if (eventGroupedObservable.getKey() >= 2) { // filter these eventStream = eventGroupedObservable.filter(new Predicate<Event>() { @Override public boolean test(Event t1) { return false; } }); } return eventStream .map(new Function<Event, String>() { @Override public String apply(Event event) { return "testUnsubscribe => Source: " + event.source + " Message: " + event.message; } }); } })
@Override public Observable<String> apply(final GroupedObservable<Integer, Integer> group) { if (group.getKey() < 3) { return group.map(new Function<Integer, String>() { @Override public String apply(Integer t1) { return "first groups: " + t1; } }) // must take(2) so an onComplete + unsubscribe happens on these first 2 groups .take(2).doOnComplete(new Action() { @Override public void run() { first.countDown(); } }); } else { return group.subscribeOn(Schedulers.newThread()).delay(400, TimeUnit.MILLISECONDS).map(new Function<Integer, String>() { @Override public String apply(Integer t1) { return "last group: " + t1; } }).doOnEach(new Consumer<Notification<String>>() { @Override public void accept(Notification<String> t1) { System.err.println("subscribeOn notification => " + t1); } }); } }