diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java index b71ca5b96808..559417a0e78e 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java @@ -860,7 +860,7 @@ protected void normalizeProperties(Map properties, Set v } for (Map.Entry propertiesEntry : properties.entrySet()) { Schema property = propertiesEntry.getValue(); - + // remove x-internal if needed (same logic as normalizeComponentsSchemas) if (property.getExtensions() != null && getRule(REMOVE_X_INTERNAL)) { Object xInternalValue = property.getExtensions().get(X_INTERNAL); @@ -1777,6 +1777,7 @@ protected Schema processNormalize31Spec(Schema schema, Set visitedSchema ArraySchema as = new ArraySchema(); as.setDescription(schema.getDescription()); as.setDefault(schema.getDefault()); + as.setTitle(schema.getTitle()); if (schema.getExample() != null) { as.setExample(schema.getExample()); } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java index eb85fed62eab..2659cb81cace 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java @@ -955,6 +955,10 @@ public void testOpenAPINormalizerProcessingArraySchema31Spec() { assertNotEquals(((Schema) schema11.getOneOf().get(0)).getPrefixItems(), null); assertEquals(((Schema) schema11.getOneOf().get(1)).getItems(), null); + Schema schema13 = openAPI.getComponents().getSchemas().get("OneOfArrayWithTitle"); + assertEquals(((Schema) schema13.getOneOf().get(0)).getTitle(), "dog_array"); + assertEquals(((Schema) schema13.getOneOf().get(1)).getTitle(), "cat_object"); + Map inputRules = Map.of("NORMALIZE_31SPEC", "true"); OpenAPINormalizer openAPINormalizer = new OpenAPINormalizer(openAPI, inputRules); openAPINormalizer.normalize(); @@ -992,6 +996,12 @@ public void testOpenAPINormalizerProcessingArraySchema31Spec() { assertNotEquals(((Schema) schema12.getOneOf().get(0)).getItems(), null); assertEquals(((Schema) schema12.getOneOf().get(0)).getPrefixItems(), null); assertNotEquals(((Schema) schema12.getOneOf().get(1)).getItems(), null); + + Schema schema14 = openAPI.getComponents().getSchemas().get("OneOfArrayWithTitle"); + assertEquals(((Schema) schema14.getOneOf().get(0)).getTitle(), "dog_array"); + assertEquals(((Schema) schema14.getOneOf().get(1)).getTitle(), "cat_object"); + assertTrue(ModelUtils.isArraySchema((Schema) schema14.getOneOf().get(0))); + assertEquals(((Schema) schema14.getOneOf().get(0)).getType(), "array"); } @Test diff --git a/modules/openapi-generator/src/test/resources/3_1/issue_18291.yaml b/modules/openapi-generator/src/test/resources/3_1/issue_18291.yaml index ceb5f10d1a5e..f170e8a2b377 100644 --- a/modules/openapi-generator/src/test/resources/3_1/issue_18291.yaml +++ b/modules/openapi-generator/src/test/resources/3_1/issue_18291.yaml @@ -66,4 +66,15 @@ components: - type: integer maxItems: 3 minItems: 3 - - type: array \ No newline at end of file + - type: array + OneOfArrayWithTitle: + oneOf: + - title: dog_array + type: array + items: + type: string + - title: cat_object + type: object + properties: + name: + type: string \ No newline at end of file