Stream: hapi
Topic: RxJava support
Raed Cran (Nov 03 2018 at 15:52):
Hi, is there any plan for supporting RxJava library? @James Agnew
James Agnew (Nov 05 2018 at 08:57):
@Raed Cran Well.. No current plans. Not that it's not a great idea (I love the reactive paradigm) but I don't think anyone is working on this now.
Any interest in taking this on? :)
Grahame Grieve (Nov 05 2018 at 20:34):
What would it mean to support rxjava?
Raed Cran (Nov 06 2018 at 00:14):
@James Agnew yep, I would love to, but I'm not an expert in reactive programming. But certainly I would join a team taking this. thanks for the answer :)
@Grahame Grieve
I was thinking of something similar to Retrofit RxJava2 adapter (https://github.com/square/retrofit/tree/master/retrofit-adapters/rxjava2), a more integrated reactive functionality into the rest client.
Per example, the possibility of returning an Observable<Bundle> instead of just a raw Bundle, and switch between threads, that is very important in Android (my case).
I realized I could achieve this right now with RxJava 2, here is a simple example:
Observable.just(newText)
.subscribeOn(Schedulers.io())
.map(t -> client.search()
.forResource(Patient.class)
.where(Patient.FAMILY.matches().value(t))
.returnBundle(org.hl7.fhir.dstu3.model.Bundle.class)
.summaryMode(SummaryEnum.TRUE)
.execute())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(b -> {
adapter.clear();
if (!b.getEntry().isEmpty()) {
adapter.addAll(b.getEntry());
}
});
But it feels not so fluid as it could be, It would be interesting if I could do something like this:
client.search()
.forResource(Patient.class)
.where(Patient.FAMILY.matches().value(t))
.returnBundle(org.hl7.fhir.dstu3.model.Bundle.class)
.toObservable() //returns Observable<Bundle>
.subscribeOn(Schedulers.io()) // IO-bound work thread.
.observeOn(AndroidSchedulers.mainThread()) // ui update on UI thread
.subscribe(b -> {
adapter.clear();
if (!b.getEntry().isEmpty()) {
adapter.addAll(b.getEntry());
}
}).execute();
Grahame Grieve (Nov 06 2018 at 05:59):
does rxjava have an extensibility framework for stuff like this?
Last updated: Apr 12 2022 at 19:14 UTC