-
-
Notifications
You must be signed in to change notification settings - Fork 6.7k
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
[core][typescript][perl] Ensure model.parent is also added to model.allParents with multiple inheritance #5182
Conversation
👍 Thanks for opening this issue! The team will review the labels and make any necessary changes. |
@@ -528,9 +528,31 @@ public void testAllOfRequired() { | |||
Schema child = openAPI.getComponents().getSchemas().get("clubForCreation"); | |||
codegen.setOpenAPI(openAPI); | |||
CodegenModel childModel = codegen.fromModel("clubForCreation", child); | |||
showVars(childModel); | |||
Assert.assertEquals(getRequiredVars(childModel), Collections.singletonList("name")); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not sure how we ended up here having a test without any assertions :)
modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java
Outdated
Show resolved
Hide resolved
@amakhrov thanks for the PR, which looks good to me. Can you please resolve the merge conflicts when you've time? |
… ref and no own props
…heritance is supported
3bb637f
to
b25bfeb
Compare
@wing328 rebased from the latest |
…llParents with multiple inheritance (OpenAPITools#5182) * Add real assertions in DefaultCodegenTest.java testAllOfXXX methods * Add test to DefaultCodegenTest for an allOf composition with a single ref and no own props * Ensure model.parent is also added to model.allParents when multipleInheritance is supported * Cleanup: remove LOGGER.debug, renamed refedParentNames to refedWithoutDiscriminator
@amakhrov thanks for the PR, which has been included in the 4.3.0 release: https://twitter.com/oas_generator/status/1243455743937789952 |
Fixes #4770
Turned out that generator still supports a deprecated inheritance case with a single oneOf ref without a discriminator. The behavior in this case is to treat it as inheritance rather than composition.
Now, the problem is that even though
model.parent
is properly populated with the referenced model in this situation,model.allParents
(used with multiple inheritance) stays empty. It looks like a bug in the implementation rather than intended behavior - but of course correct me if I'm wrong.This PR makes sure the same logic supporting the deprecated inheritance case applies both to
parent
andallParents
.I also cleaned up a few tests for DefaultCodegen that are related to
allOf
composition - just to give me a bit more safety assurance of the change (better than nothing)PR checklist
./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).master
,4.3.x
,5.0.x
. Default:master
.Typescript generators family use multiple inheritance, hence copying them here:
@TiFu @taxpon @sebastianhaas @kenisteward @Vrolijkx @macjohnny @nicokoenig @topce @akehir @petejohansonxo
And also Perl (another representative of multiple inheritance supporting generator):
@wing328 @yue9944882