diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index e22a4f8ea50..d3998a47bca 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -1756,10 +1756,10 @@ public class DefaultCodegen implements CodegenConfig { m.interfaces.add(modelName); addImport(m, modelName); if (allDefinitions != null && refSchema != null) { - if (allParents.contains(modelName) && supportsMultipleInheritance) { + if (allParents.contains(ref) && supportsMultipleInheritance) { // multiple inheritance addProperties(allProperties, allRequired, refSchema); - } else if (parentName != null && parentName.equals(modelName) && supportsInheritance) { + } else if (parentName != null && parentName.equals(ref) && supportsInheritance) { // single inheritance addProperties(allProperties, allRequired, refSchema); } else { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index fcb8a9f916f..b8b3a717905 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -18,6 +18,7 @@ package org.openapitools.codegen; import com.google.common.collect.Sets; +import io.swagger.parser.OpenAPIParser; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.Operation; @@ -28,10 +29,15 @@ import io.swagger.v3.oas.models.parameters.QueryParameter; import io.swagger.v3.oas.models.parameters.RequestBody; import io.swagger.v3.oas.models.responses.ApiResponse; import io.swagger.v3.oas.models.responses.ApiResponses; +import io.swagger.v3.parser.core.models.ParseOptions; +import org.openapitools.codegen.languages.features.CXFServerFeatures; import org.openapitools.codegen.utils.ModelUtils; import org.testng.Assert; import org.testng.annotations.Test; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; import java.util.*; import java.util.stream.Collectors; @@ -654,4 +660,48 @@ public class DefaultCodegenTest { Assert.assertEquals(imports, expected); } + + @Test + public void modelDoNotContainInheritedVars() { + DefaultCodegen codegen = new DefaultCodegen(); + codegen.supportsInheritance = true; + + OpenAPI openAPI = new OpenAPIParser() + .readLocation("src/test/resources/3_0/generic.yaml", null, new ParseOptions()).getOpenAPI(); + codegen.setOpenAPI(openAPI); + + CodegenModel codegenModel = codegen.fromModel("Dog", openAPI.getComponents().getSchemas().get("Dog")); + + Assert.assertEquals(codegenModel.vars.size(), 1); + } + + @Test + public void modelWithPrefixDoNotContainInheritedVars() { + DefaultCodegen codegen = new DefaultCodegen(); + codegen.supportsInheritance = true; + codegen.setModelNamePrefix("prefix"); + + OpenAPI openAPI = new OpenAPIParser() + .readLocation("src/test/resources/3_0/generic.yaml", null, new ParseOptions()).getOpenAPI(); + codegen.setOpenAPI(openAPI); + + CodegenModel codegenModel = codegen.fromModel("Dog", openAPI.getComponents().getSchemas().get("Dog")); + + Assert.assertEquals(codegenModel.vars.size(), 1); + } + @Test + public void modelWithSuffixDoNotContainInheritedVars() { + DefaultCodegen codegen = new DefaultCodegen(); + codegen.supportsInheritance = true; + codegen.setModelNameSuffix("suffix"); + + OpenAPI openAPI = new OpenAPIParser() + .readLocation("src/test/resources/3_0/generic.yaml", null, new ParseOptions()).getOpenAPI(); + codegen.setOpenAPI(openAPI); + + CodegenModel codegenModel = codegen.fromModel("Dog", openAPI.getComponents().getSchemas().get("Dog")); + + Assert.assertEquals(codegenModel.vars.size(), 1); + } + }