[java][client] Don't include nullable attributes twice in serialized JSON #3923
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR checklist
./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.master
,4.1.x
,5.0.x
. Default:master
.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. bothsome_field
andsomeField
would appear in the JSON). The cause is:JsonNullable
fields have two sets of getters and setters - "simple ones" (e.g.getSomeField
) andJsonNullable
ones (e.g.getSomeField_JsonNullable
).JsonNullable
fields, thegetSomeField_JsonNullable
getter is marked as the attribute and explicitly marked to be serialized assome_field
.JsonNullable
getter and add it to the serialized object.getEnd
would work fine, as there would begetEnd
andgetEnd_JsonNullable
. ThegetEnd_JsonNullable
getter would be marked to be serialized asend
, which would make Jackson overridegetEnd
. But forgetSomeField
andgetSomeField_JsonNullable
, Jackson would serializegetSomeField
assomeField
andgetSomeField_JsonNullable
assome_field
.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.