From dd06acc87770d232c5158ad91e7f3706bc436f82 Mon Sep 17 00:00:00 2001 From: xil Date: Tue, 30 Dec 2025 00:30:59 +0000 Subject: [PATCH 1/2] Copy the title field when creating the ArraySchema object in processNormalize31Spec() --- .../org/openapitools/codegen/OpenAPINormalizer.java | 1 + .../openapitools/codegen/OpenAPINormalizerTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+) 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..a9055b60c734 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 @@ -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 From e01ae0c3f99dece9488e619516c26858a4cb9f8f Mon Sep 17 00:00:00 2001 From: xil Date: Tue, 30 Dec 2025 00:36:45 +0000 Subject: [PATCH 2/2] Copy the title field when creating the ArraySchema object in processNormalize31Spec() --- .../org/openapitools/codegen/OpenAPINormalizer.java | 2 +- .../src/test/resources/3_1/issue_18291.yaml | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) 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 a9055b60c734..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); 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