Created by: Orachigami
Fixes: https://github.com/OpenAPITools/openapi-generator/issues/2906 Fixes: https://github.com/OpenAPITools/openapi-generator/issues/5381 Fixes: https://github.com/OpenAPITools/openapi-generator/issues/8647 Fixes: https://github.com/OpenAPITools/openapi-generator/issues/8860 Fixes: https://github.com/OpenAPITools/openapi-generator/issues/9601 Fixes: https://github.com/OpenAPITools/openapi-generator/issues/9981
Added tests oneOfModelsGeneration
for Java Spring and Java Client which iterate through several specs with OneOf usage cases and check that OneOf models are generated and subtypes implement generated models. Java Client test also creates a cartesian product of specs and client libraries for regress tests.
How inline OneOf models generation is fixed
Added x-deduction
and x-deduction-model-names
for vendorExtensions
. These extensions are used to generated Jackson annotation when the discriminator cannot be used. The discriminator uses the specific field value for deserialization decisions. However, according to the https://swagger.io/specification#discriminator-object first example, oneOf
can be used without the discriminator object. This case can be handled with Jackson recently added JsonTypeInfo.Id.DEDUCTION
option. DEDUCTION
option forces Jackson to make deserialization decisions according to the available fields in the payload and Models which implement oneOf
interface/class.
ToDo
- Polymorphic primitives deserialization
Example output screenshots
PR checklist
-
Read the contribution guidelines. -
Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community. -
Run the following to build the project and update samples: ./mvnw clean package ./bin/generate-samples.sh ./bin/utils/export_docs_generators.sh
./bin/generate-samples.sh bin/configs/java*
. For Windows users, please run the script in Git BASH. -
File the PR against the correct branch: master
(5.3.0),6.0.x
-
If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.
@bbdouglas (2017/07) @sreeshas (2017/08) @jfiala (2017/08) @lukoyanov (2017/09) @cbornet (2017/09) @jeff9finger (2018/01) @karismann (2019/03) @Zomzog (2019/04) @lwlee2608 (2019/10) @nmuesch (2021/01)