[go-experimental] Fix usage of discriminator for oneOf deserialization#6672
Open
bkabrda wants to merge 1 commit intoOpenAPITools:masterfrom
Open
[go-experimental] Fix usage of discriminator for oneOf deserialization#6672bkabrda wants to merge 1 commit intoOpenAPITools:masterfrom
bkabrda wants to merge 1 commit intoOpenAPITools:masterfrom
Conversation
Member
|
@bkabrda for the issue you mentioned above, can you please open an issue to track it separately if you've not already done so? |
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR partially fixes the new style usage of discriminator for better deserialization of
oneOfcomposed schemas. Changes:$refas type of the discriminator property (seeOneTypein example below).if string(json{{{modelName}}}) == "{}", as we know thatjson{{{modelName}}}contains at least the discriminator property.There's one more issue that I'm not sure to address. Consider this example:
When I run
openapi-generator generate -i min.yaml -g go-experimental -o go --additional-properties useOneOfDiscriminatorLookup=trueI get unmarshaling code like this (even without my change for working with the referenced schema):
As you can see, the deserialization logic is generated twice, once for
Oneand once forfooone. Theif jsonDict["foobar"] == "One" {line is obviously wrong. I tracked it down to being added at this line. I would like to fix that, but I honestly don't understand the whole purpose of thegetOneOfAnyOfDescendantsfunction which returns these results. AFAICS it's redundant and isn't necessary at all, but maybe I'm missing some context. Any help would be appreciated.PR checklist
./bin/generate-samples.shto update all Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master. These must match the expectations made by your contribution. You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example./bin/generate-samples.sh bin/config/java*. For Windows users, please run the script in Git BASH.master@antihax (2017/11) @bvwells (2017/12) @grokify (2018/07) @kemokemo (2018/09) @bkabrda (2019/07)