Skip to content

[Rust Server] Support types with additional properties - #3666

Merged
richardwhiuk merged 2 commits into
OpenAPITools:masterfrom
Metaswitch:rust-additional-properties
Sep 15, 2019
Merged

[Rust Server] Support types with additional properties#3666
richardwhiuk merged 2 commits into
OpenAPITools:masterfrom
Metaswitch:rust-additional-properties

Conversation

@richardwhiuk

Copy link
Copy Markdown
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 commented Aug 17, 2019

Copy link
Copy Markdown
ContributorAuthor

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.

@bjgillbjgill left a comment

Copy link
Copy Markdown
Contributor

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:masterSep 15, 2019
@richardwhiuk
richardwhiuk deleted the rust-additional-properties branch September 15, 2019 13:27
@wing328wing328 added this to the 4.2.0 milestone Oct 30, 2019
@wing328

Copy link
Copy Markdown
Member

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

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[rust-server] lacks support for additionalProperties

3 participants

@richardwhiuk@wing328@bjgill