{"id":16838899,"url":"https://github.com/akarnokd/rxjavainterop","last_synced_at":"2026-01-12T02:52:31.477Z","repository":{"id":10535668,"uuid":"66079871","full_name":"akarnokd/RxJavaInterop","owner":"akarnokd","description":"Library to convert between RxJava 1.x and 2.x/3.x reactive types, schedulers and resource handles.","archived":false,"fork":false,"pushed_at":"2023-04-24T04:59:08.000Z","size":405,"stargazers_count":862,"open_issues_count":3,"forks_count":57,"subscribers_count":27,"default_branch":"3.x","last_synced_at":"2025-05-16T12:12:19.714Z","etag":null,"topics":["extensions","interoperation","reactive-streams","rxjava"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akarnokd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-08-19T12:09:32.000Z","updated_at":"2025-03-27T03:13:16.000Z","dependencies_parsed_at":"2023-10-20T16:29:02.677Z","dependency_job_id":null,"html_url":"https://github.com/akarnokd/RxJavaInterop","commit_stats":null,"previous_names":[],"tags_count":73,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akarnokd%2FRxJavaInterop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akarnokd%2FRxJavaInterop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akarnokd%2FRxJavaInterop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akarnokd%2FRxJavaInterop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akarnokd","download_url":"https://codeload.github.com/akarnokd/RxJavaInterop/tar.gz/refs/heads/3.x","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254527099,"owners_count":22085919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["extensions","interoperation","reactive-streams","rxjava"],"created_at":"2024-10-13T12:27:17.233Z","updated_at":"2026-01-12T02:52:31.470Z","avatar_url":"https://github.com/akarnokd.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RxJavaInterop\n\n\n\u003ca href='https://github.com/akarnokd/RxJavaInterop/actions?query=workflow%3A%22Java+CI+with+Gradle%22'\u003e\u003cimg src='https://github.com/akarnokd/RxJavaInterop/workflows/Java%20CI%20with%20Gradle/badge.svg'\u003e\u003c/a\u003e\n[![codecov.io](http://codecov.io/github/akarnokd/RxJavaInterop/coverage.svg?branch=3.x)](http://codecov.io/github/akarnokd/RxJavaInterop?branch=3.x)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.akarnokd/rxjava3-interop/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.akarnokd/rxjava3-interop)\n\nRxJava 1.x: [![RxJava 1.x](https://maven-badges.herokuapp.com/maven-central/io.reactivex/rxjava/badge.svg)](https://maven-badges.herokuapp.com/maven-central/maven-central/io.reactivex/rxjava)\nRxJava 3.x: [![RxJava 3.x](https://maven-badges.herokuapp.com/maven-central/io.reactivex.rxjava3/rxjava/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.reactivex.rxjava3/rxjava)\n\nLibrary to convert between RxJava 1.x and 3.x reactive types.\n\n### Interop between 2.x and 3.x\n\nCheck out the [https://github.com/akarnokd/RxJavaBridge](https://github.com/akarnokd/RxJavaBridge#RxJavaBridge) project.\n\n# Releases\n\n\n**gradle**\n\n```\ndependencies {\n    implementation \"com.github.akarnokd:rxjava3-interop:3.0.2\"\n}\n```\n\n\nMaven search:\n\n[http://search.maven.org](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.github.akarnokd%22)\n\n# Usage\n\n### Convert between the reactive base types\n\n```java\nimport hu.akarnokd.rxjava3.interop.RxJavaInterop;\n\n// convert from 1.x to 3.x\n\nio.reactivex.rxjava3.core.Flowable     f3  = RxJavaInterop.toV3Flowable(rx.Observable);\n\nio.reactivex.rxjava3.core.Observable   o3  = RxJavaInterop.toV3Observable(rx.Observable);\n\nio.reactivex.rxjava3.core.Single       s3  = RxJavaInterop.toV3Single(rx.Single);\n\nio.reactivex.rxjava3.core.Completable  c3  = RxJavaInterop.toV3Completable(rx.Completable);\n\nio.reactivex.rxjava3.core.Maybe        m3s = RxJavaInterop.toV3Maybe(rx.Single);\n\nio.reactivex.rxjava3.core.Maybe        m3c = RxJavaInterop.toV3Maybe(rx.Completable);\n\n// convert from 3.x to 1.x\n\nrx.Observable  o1 = RxJavaInterop.toV1Observable(Publisher);\n\nrx.Observable  q1 = RxJavaInterop.toV1Observable(ObservableSource, BackpressureStrategy);\n\nrx.Single      s1 = RxJavaInterop.toV1Single(SingleSource);\n\nrx.Completable c1 = RxJavaInterop.toV1Completable(CompletableSource);\n\nrx.Single      s1m = RxJavaInterop.toV1Single(MaybeSource);\n\nrx.Completable c1m = RxJavaInterop.toV1Completable(MaybeSource);\n```\n\n### Convert between Subjects and Processors. \n\nNote that 3.x `Subject`s and `FlowableProcessor`s support only the same input and output types.\n\n```java\n// convert from 1.x to 3.x\n\nio.reactivex.rxjava3.subjects.Subject sj3 = RxJavaInterop.toV3Subject(rx.subjects.Subject);\n\nio.reactivex.rxjava3.processors.FlowableProcessor fp3 = RxJavaInterop.toV3Processor(rx.subjects.Subject);\n\n// convert from 3.x to 1.x\n\nrx.subjects.Subject sj1 = RxJavaInterop.toV1Subject(io.reactivex.rxjava3.subjects.Subject);\n\nrx.subjects.Subject sj1b = RxJavaInterop.toV1Subject(io.reactivex.rxjava3.processors.FlowableProcessor);\n```\n\n### Convert between 1.x `X.Transformer`s and 3.x `XTransformer`s.\n\n```java\n// convert from 1.x to 3.x\n\nio.reactivex.rxjava3.core.FlowableTransformer    ft3 = RxJavaInterop.toV3Transformer(\n                                                           rx.Observable.Transformer);\n\nio.reactivex.rxjava3.core.ObservableTransformer  ot3 = RxJavaInterop.toV3Transformer(\n                                                           rx.Observable.Transformer, \n                                                           io.reactivex.rxjava3.core.BackpressureStrategy);\n\nio.reactivex.rxjava3.core.SingleTransformer      st3 = RxJavaInterop.toV3Transformer(\n                                                           rx.Single.Transformer);\n\nio.reactivex.rxjava3.core.CompletableTransformer ct3 = RxJavaInterop.toV3Transformer(\n                                                           rx.Completable.Transformer);\n\n// convert from 3.x to 1.x\n\nrx.Observable.Transformer  ft1 = RxJavaInterop.toV1Transformer(\n                                     io.reactivex.rxjava3.core.FlowableTransformer);\n\nrx.Observable.Transformer  ot1 = RxJavaInterop.toV1Transformer(\n                                     io.reactivex.rxjava3.core.ObservableTransformer,\n                                     io.reactivex.rxjava3.core.BackpressureStrategy);\n\nrx.Single.Transformer      st1 = RxJavaInterop.toV1Transformer(\n                                     io.reactivex.rxjava3.core.SingleTransformer);\n\nrx.Completable.Transformer ct1 = RxJavaInterop.toV1Transformer(\n                                     io.reactivex.rxjava3.core.CompletableTransformer);\n```\n\n### Convert between 1.x `Flowable.Operator` and 3.x `FlowableOperator`\n\n```java\n// convert from 1.x to 3.x\n\nio.reactivex.rxjava3.core.FlowableOperator fo3 = RxJavaInterop.toV3Operator(rx.Observable.Operator);\n\n// convert from 3.x to 1.x\n\nrx.Observable.Operator fo1 = RxJavaInterop.toV1Operator(io.reactivex.rxjava3.core.FlowableOperator);\n```\n\n### Convert between 1.x `Subscription` and 3.x `Disposable`\n\n```java\n// convert from 1.x to 3.x\n\nio.reactivex.rxjava3.disposables.Disposable d3 = RxJavaInterop.toV3Disposable(rx.Subscription);\n\n// convert from 3.x to 1.x\n\nrx.Subscription s1 = RxJavaInterop.toV1Subscription(io.reactivex.rxjava3.disposables.Disposable);\n```\n\n\n### Convert between 1.x `Scheduler`s and 3.x `Scheduler`s\n\n```java\n// convert from 1.x to 3.x\n\nio.reactivex.rxjava3.core.Scheduler s3 = RxJavaInterop.toV3Scheduler(rx.Scheduler);\n\n// convert from 3.x to 1.x\n\nrx.Scheduler s1 = RxJavaInterop.toV1Scheduler(io.reactivex.rxjava3.core.Scheduler);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakarnokd%2Frxjavainterop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakarnokd%2Frxjavainterop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakarnokd%2Frxjavainterop/lists"}