Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • O openapi-generator
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,476
    • Issues 3,476
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 402
    • Merge requests 402
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OpenAPI Tools
  • openapi-generator
  • Merge requests
  • !3923

[java][client] Don't include nullable attributes twice in serialized JSON

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Administrator requested to merge github/fork/bkabrda/java-client-explicit-nulls-fix into master Sep 20, 2019
  • Overview 0
  • Commits 3
  • Pipelines 0
  • Changes 945

Created by: bkabrda

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.
  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

CC @bbdouglas (2017/07) @sreeshas (2017/08) @jfiala (2017/08) @lukoyanov (2017/09) @cbornet (2017/09) @jeff9finger (2018/01) @karismann (2019/03) @Zomzog (2019/04)

Description of the PR

The problem that this PR solves is that for JsonNullable fields of POJOs, the field would appear twice, once in snake case and once in camel case (e.g. both some_field and someField would appear in the JSON). The cause is:

  • JsonNullable fields have two sets of getters and setters - "simple ones" (e.g. getSomeField) and JsonNullable ones (e.g. getSomeField_JsonNullable).
  • For the JsonNullable fields, the getSomeField_JsonNullable getter is marked as the attribute and explicitly marked to be serialized as some_field.
  • By default, the Jackson serialization library takes all getters of the object and serializes them. This means that Jackson would also see the non-JsonNullable getter and add it to the serialized object.
  • This would only demonstrate on fields that have at least two words in their name. For example, getEnd would work fine, as there would be getEnd and getEnd_JsonNullable. The getEnd_JsonNullable getter would be marked to be serialized as end, which would make Jackson override getEnd. But for getSomeField and getSomeField_JsonNullable, Jackson would serialize getSomeField as someField and getSomeField_JsonNullable as some_field.
  • Note that this fix also uncovered the need to add a private setter if the nullable field is read-only (Jackson can use that to properly set the value of the readOnly nullable attribute).

This patch fixes the above by explicitly marking the simple getters as ignored during serialization.

There's a slight problem now that this adds an extraneous newline in between the getters' annotations, so I'm trying to get rid of that.

Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: github/fork/bkabrda/java-client-explicit-nulls-fix