Created by: spacether
Adds requiredVarsMap to store required variable names whether or not they have a defining schema When merged this will close out https://github.com/OpenAPITools/openapi-generator/issues/8906
- Uses it in python-experimental
- Turns on 3.0.3 unit tests that were excluded by https://github.com/OpenAPITools/openapi-generator/issues/8906
This will allow our java schema classes to accurately keep track of when variables are required. Use cases for requiredVarsMap are:
- required property is defined in properties, value is that CodegenProperty
- required property is not defined in properties, and additionalProperties is true or unset value is CodegenProperty made from empty schema
- required property is not defined in properties, and additionalProperties is schema, value is CodegenProperty made from schema
- required property is not defined in properties, and additionalProperties is false, value is null
This will allow our generators to do two things:
- list out the required property names by using the keys from that map
- create type hints where one can, by using the CodegenProperty value from the map. For example this could be used on instantiation input signatures.
requireVars note
Long term this can replace requiredVars which only knew about use case 1 and did not include use cases 2-4.
TODO for the future
one will need to be able to detect if the schema for a required property
- does not exist because additionalProperties = false (use case 4)
- is AnyType because additionalProperties is unset (use case 2)
- is AnyType because additionalProperties is true or empty schema (use case 2)
- is a specific schema/property because additionalProperties is set or the property is set (use case 1 + 3)
Note: for evaluation of additionalProperties unset, unevaluatedProperties will need to not include annotations from unset additionalProperties so omitting that additionalProperties from definitions would help add that feature in the future. To detect that:
- additionalProperties will need to have the value of null when it is unset, AND
- one could keep the True/False values if one wanted, or one could keep writing AnyType/NoType schemas rather than the booleans.
- The more general case is to accept True/False/Schema but not many generators could accept that.
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.1.0) (minor release - 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.