Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Rust Server] Support types with additional properties #3666

Merged
merged 2 commits into from
Sep 15, 2019
Merged

[Rust Server] Support types with additional properties #3666

merged 2 commits into from
Sep 15, 2019

Conversation

richardwhiuk
Copy link
Contributor

PR checklist

  • Read the contribution guidelines.

  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first.

  • Filed the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.

  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language.

Description of the PR

This adds support for types which only contain additional properties, which is a common use case. It doesn't handle the thornier case of additional properties within a type with defined properties, which is allowed by the OpenAPI spec, but is more dubious API design in practice (as the API is mixing schema-ed and un-schema-ed data).

Note, this will also only fix the case where the type is defined (e.g. string) - if it's untyped, it remains unsupported.

This thus partially fixes #318

An example of something this will support is already defined in the sample API:

  additionalPropertiesObject:
    description: An additionalPropertiesObject
    type: object
    additionalProperties:
      type: string

Add support for types which only contain additional properties
@richardwhiuk richardwhiuk requested a review from bjgill August 17, 2019 11:50
@richardwhiuk
Copy link
Contributor Author

richardwhiuk commented Aug 17, 2019

Oh, this is technically a breaking change, because objects of this form were previously constructible (although with no properties in them) as AdditionalPropertiesObject {} and the equivalent creation is AdditionalPropertiesObject(HashMap::new()) but that's basically unavoidable.

Copy link
Contributor

@bjgill bjgill left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Neat.

Agree that we don't need to worry much about the technically breaking change.

@richardwhiuk richardwhiuk merged commit 9647416 into OpenAPITools:master Sep 15, 2019
@richardwhiuk richardwhiuk deleted the rust-additional-properties branch September 15, 2019 13:27
@wing328 wing328 added this to the 4.2.0 milestone Oct 30, 2019
@wing328
Copy link
Member

wing328 commented Oct 31, 2019

@richardwhiuk thanks for the PR, which has been included in v4.2.0 release: https://twitter.com/oas_generator/status/1189824932345069569

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[rust-server] lacks support for additionalProperties
3 participants