-
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
Codegen compilation error for Float scalars with default values in Input objects #3108
Comments
A little more information: We first checked if this was a schema definition issue, but the spec says it is a valid case, and we confirmed it here. I looked a bit deeper at the code, and believe the issue was introduced in #2917 specifically in is GraphQLParser.NumberValueContext -> if (
NUMBER().text.contains('.') ||
NUMBER().text.contains("e")) {
NUMBER().text.toDouble()
} else {
NUMBER().text.toInt()
} Which shows exactly what the problem is. I was able to fix it by passing the I'm going to push a PR for it :) |
Pushed a fix in #3109 - let me know if I got it right :) |
* 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>
Summary
We recently upgraded from Apollo Android 2.4.1 to 2.5.6, and encountered a compilation error in the autogenerated code.
In short, Input objects in our
json
schema with inputs of typeFloat
and default values that omit the decimal part (eg."defaultValue": "1"
) causes the Java codegen to generate a default value as anInteger
instead ofDouble
which causes a compilation error:Version
2.5.6
Description
I was able to narrow down the issue to a specific codegen corner case:
json
schema format (issue does not happen withsdl
schema format)When a
INPUT_OBJECT
type has aFloat
input field with a default value of1
or0
(omitting the decimal part) like so:The corresponding output in the generated java file is:
Which is a compilation error, as
1
is considered anInteger
, and therefore that assignment fails with:The equivalent Kotlin generated code is correct however:
The Kotlin codegen correctly converts
1
to1.0
since the scalar is typeFloat
, but the Java codegen does not.This also happens for mandatory fields:
java:
private double mandatoryFloat = 1;
kotlin:
val mandatoryFloat: Double = 1.0
Interestingly, the java codegen does the correct transformation when using schemas in
sdl
format, so the issue only happens when parsing fromjson
.I was able to reproduce the issue easily with the
apollo-compiler
unit tests by modifying thecolorInput
entry insrc/test/validation/schema.json
, changing thegreen
input field to have a default value of0
instead of0.0
.The generated file
ColorInput.java
shows the error:private Input<Double> green = Input.fromNullable(0);
while the equivalent kotlin file is correct:
val green: Input<Double> = Input.optional(0.0)
Hope this is clear enough, let me know if you need any more information, and thanks for this amazing library!
The text was updated successfully, but these errors were encountered: