-
Notifications
You must be signed in to change notification settings - Fork 668
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor: RxJava2/3 support #3166
Conversation
f4230b6
to
a2225bb
Compare
Hi @aoudiamoncef ! Thanks for sending this. Do you mind giving a high level overview of the changes? I can see some lambdas being used instead of anonymous classes. I think that's ok as we have a minimum of Java8+ and Android 15+. Mind be worth double checking that the minimum AGP version we support actually has desugaring for Besides lambdas, is there anything else? |
I roll backed changes from RxJava2 Lamdas for RxJava 3 are supported(Java 8+) Replaced Added some |
Sorry got side tracked! Not sure I understand why the lambda situation would be different on RxJava2 compared to RxJava3? The two files almost have the same content today and I'd like to keep it that way if possible. |
@@ -52,7 +52,7 @@ private Rx2Apollo() { | |||
public static <T> Observable<Response<T>> from(@NotNull final ApolloQueryWatcher<T> watcher) { | |||
checkNotNull(watcher, "watcher == null"); | |||
return Observable.create(new ObservableOnSubscribe<Response<T>>() { | |||
@Override public void subscribe(final ObservableEmitter<Response<T>> emitter) throws Exception { | |||
@Override public void subscribe(@NotNull final ObservableEmitter<Response<T>> emitter) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 for @NotNull
+1 for removing the throws Exception
, I guess it was carried over from the super interface but it's never used in this implementation.
@Override public void subscribe(final ObservableEmitter<Response<T>> emitter) throws Exception { | ||
ApolloCall<T> clone = call.clone(); | ||
@Override public void subscribe(@NotNull final ObservableEmitter<Response<T>> emitter) { | ||
ApolloCall<T> clone = call.toBuilder().build(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
Looks good to me! Thinking more about this, I think it's fine to use lambdas everywhere. We support JDK8+ and on Android, AGP 3.0.0 can desugar lambdas-produced bytecode. Let me know if I'm missing something. |
Cool, if there is no issue with Android, let's add Lambdas to Rxjava2. |
👍 I don't think there's an issue. Also Android can use RxJava3 as well so there's no reason not to have the same code in both. |
For the record, that's the current diff between both files: < * The Rx2Apollo class provides methods for converting ApolloCall, ApolloPrefetch and ApolloWatcher types to RxJava 2
---
> * The Rx3Apollo class provides methods for converting ApolloCall, ApolloPrefetch and ApolloWatcher types to RxJava 3
31c31
< public class Rx2Apollo {
---
> public class Rx3Apollo {
33c33
< private Rx2Apollo() {
---
> private Rx3Apollo() {
218c218
< emitter.setDisposable(getRx2Disposable(cancelable));
---
> emitter.setDisposable(getRx3Disposable(cancelable));
222c222
< emitter.setDisposable(getRx2Disposable(cancelable));
---
> emitter.setDisposable(getRx3Disposable(cancelable));
226c226
< emitter.setDisposable(getRx2Disposable(cancelable));
---
> emitter.setDisposable(getRx3Disposable(cancelable));
229c229
< private static Disposable getRx2Disposable(final Cancelable cancelable) {
---
> private static Disposable getRx3Disposable(final Cancelable cancelable) { |
* Add a "Who is Apollo" section to the main README (#3073) * Slight tweaks to the "Who is Apollo?" README section (#3079) To align with apollographql/apollo-client#8079. * Update dependency gatsby-theme-apollo-docs to v4.7.3 * Issue #3095: Expose channel capacity parameter. (#3096) Co-authored-by: Neal Sanche <neal@yourarq.com> * Update dependency gatsby to v2.32.13 * Update dependency gatsby-theme-apollo-docs to v4.7.4 * Fix Float input fields Java codegen with default values in json schemas (#3109) * Fix Float input fields Java codegen with default values in json schemas see #3108 * add a test case for lists in defaultValues and handle it Co-authored-by: Martin Bonnin <martin@mbonnin.net> * bump Kotlin and Coroutines to 1.5.0 (#3113) * bump Kotlin and Coroutines to 1.5.0 * make the KotlinCompile task depend on antlr generation * update metalava-plugin * update metalava * update metalava using Jdk8. Not really sure why the signatures would differ based on the java version... * release 2.5.7 * version is now 2.5.8-SNAPSHOT * Update README.md (#3120) * Replace spectrum with discourse (#3123) * Discourse: pre-fill the category and tags * Update multi-modules.mdx (#3125) * Implement Query Batching for `apollo-runtime` (#3117) * Implement Query Batching for `apollo-runtime` * update metalava signatures * Trigger HTTP call on max batch size, added synchronization, throw when using GET method * Unit tests for BatchPoller * Fix checkstyle * Propagate parsing errors in callbacks, better syncrhonization, use LinkedList * Added some tests for batch response parsing * Added tests for request body + headers * Builder API to enable per query batching, dont rely on time for tests * update Metalava signatures Co-authored-by: Martin Bonnin <martin@mbonnin.net> * pass 'operationName' in the introspection query (#3126) * bump junit (#3131) * Update dependency gatsby-theme-apollo-docs to v4.7.6 * feat: add Reactor support (#3138) * feat: add Reactor support resolves #627 * remove .gitignore that is handled by the top level one * update metalava signatures Co-authored-by: Martin Bonnin <martin@mbonnin.net> * Update dependency gatsby-theme-apollo-docs to v4.7.9 * add reactor in the left column of the doc (#3141) * release 2.5.8 * version is now 2.5.9-SNAPSHOT * Fix overriding `canBeBatched` value when cloning `QueryCall` with `toBuilder()` (#3146) * Update get-started-multiplatform.mdx (#3150) update dep version forcing as per gradle new api * Update badge from Bintray to MavenCentral for apollo-idling-resource (#3153) Thanks! * Update 09-write-your-first-mutation.mdx (#3154) * Update 01-configure-project.mdx * Update 02-add-the-graphql-schema.mdx * release 2.5.9 * version is now 2.5.10-SNAPSHOT * refactor: RxJava 2/3 support (#3166) * Update dependency striptags to 3.2.0 [SECURITY] (#3178) Co-authored-by: Renovate Bot <bot@renovateapp.com> * Update dependency gatsby-theme-apollo-docs to v4.7.11 * Update dependency gatsby-theme-apollo-docs to v4.7.12 * remove duplicate executionContext (#3213) * feat: add Mutiny support (#3198) * feat: add Mutiny support * Update gatsby-config.js Co-authored-by: Martin Bonnin <martin@mbonnin.net> * add v3 docs (#3223) * Add 3.0 alpha notice (#3231) * Update dependency gatsby-theme-apollo-docs to v4.7.13 * July 2021 ROADMAP update (#3255) * Update ROADMAP.md * Update dependency gatsby-theme-apollo-docs to v4.7.14 * Update multi-modules.mdx Add a not about multi platform, See #3297 * Update multi-modules.mdx Remove deleted branch * Replace Spectrum with community.apollographql.com (#3299) * Update ROADMAP.md * Update dependency path-parse to 1.0.7 [SECURITY] (#3296) Co-authored-by: Renovate Bot <bot@renovateapp.com> * Update dependency gatsby-theme-apollo-docs to v4.7.15 * Remove root redirect and build deploy previews at / (#3309) * Deploy the prod site at the root (#3312) * Update dependency gatsby-theme-apollo-docs to v4.7.16 * Remove path prefixes for docs redirects (#3329) * Updated coroutines for use native-mt version (#3330) * Updated coroutines for use native-mt version * Update get-started-multiplatform.mdx Co-authored-by: Martin Bonnin <martin@mbonnin.net> * Update dependency gatsby-theme-apollo-docs to v4.7.18 * Increase Json nesting to 256 (#3334) Closes #3308 * Bump docs theme to add Algolia search (#3346) * Configure for updated docs theme * Upgrade docs theme * Bump docs theme version * Bump docs theme version * Update docs theme version * Move config from docs netlify.toml to root level netlify.toml * Upgrade docs theme * Upgrade docs theme * Upgrade docs theme * Upgrade docs theme * Bump docs theme to v5 Co-authored-by: Trevor Blades <tdblades@gmail.com> * Update dependency gatsby-theme-apollo-docs to v5.0.1 * Add Reactor && Mutiny to advanced topics (#3355) * feat: add Mutiny support * Update gatsby-config.js * doc: Add Reactor && Mutiny to advanced topics Co-authored-by: Martin Bonnin <martin@mbonnin.net> * Update dependency gatsby-theme-apollo-docs to v5.0.2 * Update dependency gatsby-theme-apollo-docs to v5.0.3 * Update dependency gatsby-theme-apollo-docs to v5.0.7 * Who is Apollo README updates (#3379) Small updates to align "Who is Apollo" sections across repos. * Update dependency gatsby-theme-apollo-docs to v5.0.8 * Give a hint at errorPayload (#3381) See #3369 * docs: Configure custom Algolia filters (#3378) * Configure algolia filters * Upgrade theme * Upgrade theme * Adding Benoit (#3388) * Workaround wrong input field default values (#3398) * add a test case for #3394 * do not generate defaultValues for input fields of input object type * make an exception for emptyList for backward compatibility * do not crash when trying to indent the GraphQL document (#3399) * Minor improvements to the Tutorial documentation (#3396) * Minor improvements to the Tutorial documentation * Rephrase a sentence Co-authored-by: Martin Bonnin <martin@mbonnin.net> * Remove unneeded dependency * Use 2.5.9 to be consistent with the code on tutorial's repo Co-authored-by: Martin Bonnin <martin@mbonnin.net> * Add ./gradlew push${MainService}ApolloOperations (#3403) * add RegisterOperations * add ApolloRegisterOperationsTask * add a test case * fix bad copy/paste * update metalava signatures * add some doc * Update docs/source/advanced/operation-safelisting.mdx Co-authored-by: Benoit Lubek <BoD@JRAF.org> * Update docs/source/advanced/operation-safelisting.mdx Co-authored-by: Benoit Lubek <BoD@JRAF.org> * add the link to the operation registry server documentation Co-authored-by: Benoit Lubek <BoD@JRAF.org> * Replace 'data graph' with 'graph' (#3389) * Operation Registry: normalize queries before computing the hash (#3406) * add normalization * be robust to Number.toString() in JS being different from Double.toString() in Java * remove extra "only" * workaround a doc issue where the 3.x was used instead of 2.x * release 2.5.10 * version is now 2.5.11-SNAPSHOT * Indicate the supported native platforms in the doc (2.x) (#3419) * Indicate the supported native platforms in the doc. * Clarification about the `js` target also being available * Added toString method for Input (#3427) * Fix outdated doc about FileUpload (#3429) * Update ROADMAP.md (#3445) * update ROADMAP.md * update ROADMAP.md * Update dependency gatsby-theme-apollo-docs to v5.3.1 * Make safelistingHash closer to its apollo-tooling counterpart (#3471) * take #2 on query normalization * added a comment * add comment * Update dependency gatsby-theme-apollo-docs to v5.3.2 * Update dependency gatsby-theme-apollo-docs to v5.3.3 * Update dependency url-parse to 1.5.2 [SECURITY] (#3522) Co-authored-by: Renovate Bot <bot@renovateapp.com> * Update dependency ws to 7.4.6 [SECURITY] (#3523) Co-authored-by: Renovate Bot <bot@renovateapp.com> * Update dependency ssri to 7.1.1 [SECURITY] (#3521) Co-authored-by: Renovate Bot <bot@renovateapp.com> * Update dependency postcss to 7.0.36 [SECURITY] (#3519) Co-authored-by: Renovate Bot <bot@renovateapp.com> * Update dependency object-path to 0.11.8 [SECURITY] (#3518) Co-authored-by: Renovate Bot <bot@renovateapp.com> * Update dependency dns-packet to 1.3.2 [SECURITY] (#3517) Co-authored-by: Renovate Bot <bot@renovateapp.com> * Update dependency browserslist to 4.16.5 [SECURITY] (#3516) Co-authored-by: Renovate Bot <bot@renovateapp.com> * Update dependency axios to 0.21.2 [SECURITY] (#3515) Co-authored-by: Renovate Bot <bot@renovateapp.com> * Bump docs theme and align React version w/ other docsets (#3539) * Always make sure the Response is closed (#3541) * release 2.5.11 * version is now 2.5.12-SNAPSHOT * Gateway clarification based on license change * Update dependency gatsby-theme-apollo-docs to v5.3.8 * update docs dependencies * pass 'operationName' in the introspection query (#3126) * update ROADMAP * add multiplatform in the multimodules doc * Remove root redirect and build deploy previews at / (#3309) * Deploy the prod site at the root (#3312) * Remove path prefixes for docs redirects (#3329) * add a Kotlin Native Doc inspired by commit 2e2f5d9 * Bump docs theme to add Algolia search (#3346) * Configure for updated docs theme * Upgrade docs theme * Bump docs theme version * Bump docs theme version * Update docs theme version * Move config from docs netlify.toml to root level netlify.toml * Upgrade docs theme * Upgrade docs theme * Upgrade docs theme * Upgrade docs theme * Bump docs theme to v5 Co-authored-by: Trevor Blades <tdblades@gmail.com> * update algolia filters * Adding Benoit (#3388) * replace data graph with 'graph' * premliminary work for registerOperations * wip * wip * fix sorting * add Gradle tasks for registerOperations * add safelisting doc * update apiDump * revert debug and fix tests that require mpp-utils Co-authored-by: Danielle Man <man.danielleh@gmail.com> Co-authored-by: Hugh Willson <hugh@octonary.com> Co-authored-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: Neal Sanche <neal.sanche@robotsandpencils.com> Co-authored-by: Neal Sanche <neal@yourarq.com> Co-authored-by: Joaquim Verges <joaquim.verges@gmail.com> Co-authored-by: Moncef AOUDIA <22281426+aoudiamoncef@users.noreply.github.com> Co-authored-by: Fabio Santo <fabio.santo.mail@gmail.com> Co-authored-by: Nicola Corti <corti.nico@gmail.com> Co-authored-by: Robert Theis <943135+rmtheis@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Stephen Barlow <stephen@apollographql.com> Co-authored-by: Trevor Blades <tdblades@gmail.com> Co-authored-by: Виталий <vir@provir.ru> Co-authored-by: Janessa Garrow <janessa@apollographql.com> Co-authored-by: Benoit Lubek <BoD@JRAF.org> Co-authored-by: Andrew Orobator <orobator.andrew@gmail.com>
Hi @martinbonnin
I tried to simplify RxJava integration code in this PR.
I'm waiting for feedback
Thanks