Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • O openapi-generator
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,476
    • Issues 3,476
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 402
    • Merge requests 402
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OpenAPI Tools
  • openapi-generator
  • Merge requests
  • !13117

Adds requiredVarsMap

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Administrator requested to merge github/fork/spacether/feat_adds_requiredVars into master Aug 05, 2022
  • Overview 1
  • Commits 15
  • Pipelines 0
  • Changes 101

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:

  1. required property is defined in properties, value is that CodegenProperty
  2. required property is not defined in properties, and additionalProperties is true or unset value is CodegenProperty made from empty schema
  3. required property is not defined in properties, and additionalProperties is schema, value is CodegenProperty made from schema
  4. required property is not defined in properties, and additionalProperties is false, value is null

This will allow our generators to do two things:

  1. list out the required property names by using the keys from that map
  2. 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
    Commit all changed files. 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/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.
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: github/fork/spacether/feat_adds_requiredVars