diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index c499dec694c9..97cc160bae37 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -2375,7 +2375,8 @@ public static boolean isMetadataOnlySchema(Schema schema) { schema.getContains() != null || schema.get$dynamicAnchor() != null || schema.get$anchor() != null || - schema.getContentSchema() != null; + schema.getContentSchema() != null || + schema.getDefault() != null; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java index 0670942f8fd0..993115e71e24 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/InlineModelResolverTest.java @@ -1205,4 +1205,18 @@ public void doNotWrapSingleAllOfRefs() { assertNotNull(allOfRefWithDescriptionAndReadonly.getAllOf()); assertEquals(numberRangeRef, ((Schema) allOfRefWithDescriptionAndReadonly.getAllOf().get(0)).get$ref()); } + + @Test + public void testAllOfEnumWithDefault() { + // The flattened spec should still have both allOf items in query parameter, to allow generators to generate the default value + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/allOf-enum-default.yaml"); + var parameters = openAPI + .getPaths() + .get("/person") + .getGet() + .getParameters(); + assertEquals(1, parameters.size()); + var parameter = parameters.get(0); + assertEquals(2, parameter.getSchema().getAllOf().size()); + } } diff --git a/modules/openapi-generator/src/test/resources/3_0/allOf-enum-default.yaml b/modules/openapi-generator/src/test/resources/3_0/allOf-enum-default.yaml new file mode 100644 index 000000000000..63f1529b2599 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/allOf-enum-default.yaml @@ -0,0 +1,31 @@ +openapi: 3.0.1 +info: + version: 1.0.0 + title: Example + license: + name: MIT +servers: + - url: http://api.example.xyz/v1 +paths: + /person: + get: + parameters: + - name: enum + in: query + required: true + description: Enum value + schema: + allOf: + - $ref: '#/components/schemas/MyEnum' + - default: "One" + operationId: list + responses: + '200': + description: OK +components: + schemas: + MyEnum: + type: string + enum: + - One + - Two \ No newline at end of file