Created by: nshaaban-cPacket
When generating the combined oneOf struct ensure the struct can form a valid request.
Reproduction steps:
java -jar ./modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g rust -i ./openapi.yaml
openapi: 3.0.1
info:
version: "1"
title: rust one-of fix
paths: {}
components:
schemas:
Foo:
x-one-of-name: Foo
oneOf:
- type: object
required:
- field_one
properties:
field_one:
type: string
field_two:
type: string
- type: object
required:
- field_three
properties:
field_three:
type: number
Bar:
type: object
required:
- two
properties:
one:
type: string
two:
type: string
- Observe
./src/models/foo.rs
Expected behavior: Able to fill in struct fields in such a way that creates a valid request Actual behavior: Impossible to fill the struct Foo to make it a valid schema (as BOTH required fields (field_one and field_three) are required to be filled in rust, yet the openapi schema only allows one or the other to be set.
Related issue: https://github.com/OpenAPITools/openapi-generator/issues/9497
Ideally oneOf would be represented as an enum. Presently the oneOf implementation is unusable (as described by @cortopy), this PR would at least makes it usable, but requires the rust api consumer to know what a valid schema object is (aka which optional types to populate to form a valid response).
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
(6.0.1) (patch release),6.1.x
(breaking changes with fallbacks),7.0.x
(breaking changes without fallbacks) -
If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request. (cc @frol @farcaller @richardwhiuk @paladinzh )