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

[default codegen] Correct parent variables being duplicated in child #4253

Merged
merged 1 commit into from
Nov 19, 2019
Merged

[default codegen] Correct parent variables being duplicated in child #4253

merged 1 commit into from
Nov 19, 2019

Conversation

mtraynham
Copy link
Contributor

@mtraynham mtraynham commented Oct 24, 2019

Related to #4171.

When a composed schema has required attributes, it incorrectly adds duplicate optionalVars from the parent which should have been in the requiredVars and deduplicated.

For example:

{
    "Parent": {
        "required": [
            "a"
        ],
        "type": "object",
        "properties": {
            "a": {
                "type": "string"
            }
        }
    },
    "Child": {
        "required": [
            "a",
            "c"
        ],
        "type": "object",
        "allOf": [
            {
                "$ref": "#/components/schemas/Parent"
            },
            {
                "type": "object",
                "properties": {
                    "c": {
                        "type": "string"
                    }
                }
            }
        ]
    }
}

If a template loops required and optional properties separately it generates something like the following, where the property c is duplicated:

data class Child (
    @Json(name = "a")
    val a: kotlin.String,
    @Json(name = "c")
    val c: kotlin.String,
    @Json(name = "c")
    val c: kotlin.String? = null
)

The composedSchema required attributes should be added to both required and allRequired arrays.

I added tests to check both this functionality and where the child has the required property, not the composed model.

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.1.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

Not sure who to attach to this... @wing328

@mtraynham
Copy link
Contributor Author

@wing328 any feedback on this would be appreciated!

@mtraynham
Copy link
Contributor Author

@jimschubert, you may also have some feedback here.

@wing328 wing328 added this to the 4.2.2 milestone Nov 19, 2019
@wing328 wing328 merged commit 518c33a into OpenAPITools:master Nov 19, 2019
@wing328
Copy link
Member

wing328 commented Nov 19, 2019

@mtraynham thanks for the PR, which looks good to me.

@wing328 wing328 changed the title [default codegen] #4171 - Correct parent variables being duplicated in child [default codegen] Correct parent variables being duplicated in child Nov 19, 2019
@mtraynham mtraynham deleted the issue_4171 branch November 19, 2019 14:12
@wing328
Copy link
Member

wing328 commented Dec 2, 2019

@mtraynham thanks for the PR, which has been included in the v4.2.2 release: https://twitter.com/oas_generator/status/1201432648544972800

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.

2 participants