RxJavaInterop
Library to convert between RxJava 1.x and 3.x reactive types.
Interop between 2.x and 3.x
Check out the https://github.com/akarnokd/RxJavaBridge project.
Releases
gradle
dependencies {
implementation "com.github.akarnokd:rxjava3-interop:3.0.2"
}
Maven search:
Usage
Convert between the reactive base types
import hu.akarnokd.rxjava3.interop.RxJavaInterop;
// convert from 1.x to 3.x
io.reactivex.rxjava3.core.Flowable f3 = RxJavaInterop.toV3Flowable(rx.Observable);
io.reactivex.rxjava3.core.Observable o3 = RxJavaInterop.toV3Observable(rx.Observable);
io.reactivex.rxjava3.core.Single s3 = RxJavaInterop.toV3Single(rx.Single);
io.reactivex.rxjava3.core.Completable c3 = RxJavaInterop.toV3Completable(rx.Completable);
io.reactivex.rxjava3.core.Maybe m3s = RxJavaInterop.toV3Maybe(rx.Single);
io.reactivex.rxjava3.core.Maybe m3c = RxJavaInterop.toV3Maybe(rx.Completable);
// convert from 3.x to 1.x
rx.Observable o1 = RxJavaInterop.toV1Observable(Publisher);
rx.Observable q1 = RxJavaInterop.toV1Observable(ObservableSource, BackpressureStrategy);
rx.Single s1 = RxJavaInterop.toV1Single(SingleSource);
rx.Completable c1 = RxJavaInterop.toV1Completable(CompletableSource);
rx.Single s1m = RxJavaInterop.toV1Single(MaybeSource);
rx.Completable c1m = RxJavaInterop.toV1Completable(MaybeSource);
Convert between Subjects and Processors.
Note that 3.x Subject
s and FlowableProcessor
s support only the same input and output types.
// convert from 1.x to 3.x
io.reactivex.rxjava3.subjects.Subject sj3 = RxJavaInterop.toV3Subject(rx.subjects.Subject);
io.reactivex.rxjava3.processors.FlowableProcessor fp3 = RxJavaInterop.toV3Processor(rx.subjects.Subject);
// convert from 3.x to 1.x
rx.subjects.Subject sj1 = RxJavaInterop.toV1Subject(io.reactivex.rxjava3.subjects.Subject);
rx.subjects.Subject sj1b = RxJavaInterop.toV1Subject(io.reactivex.rxjava3.processors.FlowableProcessor);
X.Transformer
s and 3.x XTransformer
s.
Convert between 1.x // convert from 1.x to 3.x
io.reactivex.rxjava3.core.FlowableTransformer ft3 = RxJavaInterop.toV3Transformer(
rx.Observable.Transformer);
io.reactivex.rxjava3.core.ObservableTransformer ot3 = RxJavaInterop.toV3Transformer(
rx.Observable.Transformer,
io.reactivex.rxjava3.core.BackpressureStrategy);
io.reactivex.rxjava3.core.SingleTransformer st3 = RxJavaInterop.toV3Transformer(
rx.Single.Transformer);
io.reactivex.rxjava3.core.CompletableTransformer ct3 = RxJavaInterop.toV3Transformer(
rx.Completable.Transformer);
// convert from 3.x to 1.x
rx.Observable.Transformer ft1 = RxJavaInterop.toV1Transformer(
io.reactivex.rxjava3.core.FlowableTransformer);
rx.Observable.Transformer ot1 = RxJavaInterop.toV1Transformer(
io.reactivex.rxjava3.core.ObservableTransformer,
io.reactivex.rxjava3.core.BackpressureStrategy);
rx.Single.Transformer st1 = RxJavaInterop.toV1Transformer(
io.reactivex.rxjava3.core.SingleTransformer);
rx.Completable.Transformer ct1 = RxJavaInterop.toV1Transformer(
io.reactivex.rxjava3.core.CompletableTransformer);
Flowable.Operator
and 3.x FlowableOperator
Convert between 1.x // convert from 1.x to 3.x
io.reactivex.rxjava3.core.FlowableOperator fo3 = RxJavaInterop.toV3Operator(rx.Observable.Operator);
// convert from 3.x to 1.x
rx.Observable.Operator fo1 = RxJavaInterop.toV1Operator(io.reactivex.rxjava3.core.FlowableOperator);
Subscription
and 3.x Disposable
Convert between 1.x // convert from 1.x to 3.x
io.reactivex.rxjava3.disposables.Disposable d3 = RxJavaInterop.toV3Disposable(rx.Subscription);
// convert from 3.x to 1.x
rx.Subscription s1 = RxJavaInterop.toV1Subscription(io.reactivex.rxjava3.disposables.Disposable);
Scheduler
s and 3.x Scheduler
s
Convert between 1.x // convert from 1.x to 3.x
io.reactivex.rxjava3.core.Scheduler s3 = RxJavaInterop.toV3Scheduler(rx.Scheduler);
// convert from 3.x to 1.x
rx.Scheduler s1 = RxJavaInterop.toV1Scheduler(io.reactivex.rxjava3.core.Scheduler);