Skip to content

Commit 873e272

Browse files
authored
[Normalizer] Copy the title field when creating the ArraySchema object in processNormalize31Spec (#22592)
* Copy the title field when creating the ArraySchema object in processNormalize31Spec() * Copy the title field when creating the ArraySchema object in processNormalize31Spec()
1 parent 80be730 commit 873e272

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/OpenAPINormalizer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -860,7 +860,7 @@ protected void normalizeProperties(Map<String, Schema> properties, Set<Schema> v
860860
}
861861
for (Map.Entry<String, Schema> propertiesEntry : properties.entrySet()) {
862862
Schema property = propertiesEntry.getValue();
863-
863+
864864
// remove x-internal if needed (same logic as normalizeComponentsSchemas)
865865
if (property.getExtensions() != null && getRule(REMOVE_X_INTERNAL)) {
866866
Object xInternalValue = property.getExtensions().get(X_INTERNAL);
@@ -1777,6 +1777,7 @@ protected Schema processNormalize31Spec(Schema schema, Set<Schema> visitedSchema
17771777
ArraySchema as = new ArraySchema();
17781778
as.setDescription(schema.getDescription());
17791779
as.setDefault(schema.getDefault());
1780+
as.setTitle(schema.getTitle());
17801781
if (schema.getExample() != null) {
17811782
as.setExample(schema.getExample());
17821783
}

modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -955,6 +955,10 @@ public void testOpenAPINormalizerProcessingArraySchema31Spec() {
955955
assertNotEquals(((Schema) schema11.getOneOf().get(0)).getPrefixItems(), null);
956956
assertEquals(((Schema) schema11.getOneOf().get(1)).getItems(), null);
957957

958+
Schema schema13 = openAPI.getComponents().getSchemas().get("OneOfArrayWithTitle");
959+
assertEquals(((Schema) schema13.getOneOf().get(0)).getTitle(), "dog_array");
960+
assertEquals(((Schema) schema13.getOneOf().get(1)).getTitle(), "cat_object");
961+
958962
Map<String, String> inputRules = Map.of("NORMALIZE_31SPEC", "true");
959963
OpenAPINormalizer openAPINormalizer = new OpenAPINormalizer(openAPI, inputRules);
960964
openAPINormalizer.normalize();
@@ -992,6 +996,12 @@ public void testOpenAPINormalizerProcessingArraySchema31Spec() {
992996
assertNotEquals(((Schema) schema12.getOneOf().get(0)).getItems(), null);
993997
assertEquals(((Schema) schema12.getOneOf().get(0)).getPrefixItems(), null);
994998
assertNotEquals(((Schema) schema12.getOneOf().get(1)).getItems(), null);
999+
1000+
Schema schema14 = openAPI.getComponents().getSchemas().get("OneOfArrayWithTitle");
1001+
assertEquals(((Schema) schema14.getOneOf().get(0)).getTitle(), "dog_array");
1002+
assertEquals(((Schema) schema14.getOneOf().get(1)).getTitle(), "cat_object");
1003+
assertTrue(ModelUtils.isArraySchema((Schema) schema14.getOneOf().get(0)));
1004+
assertEquals(((Schema) schema14.getOneOf().get(0)).getType(), "array");
9951005
}
9961006

9971007
@Test

modules/openapi-generator/src/test/resources/3_1/issue_18291.yaml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,15 @@ components:
6666
- type: integer
6767
maxItems: 3
6868
minItems: 3
69-
- type: array
69+
- type: array
70+
OneOfArrayWithTitle:
71+
oneOf:
72+
- title: dog_array
73+
type: array
74+
items:
75+
type: string
76+
- title: cat_object
77+
type: object
78+
properties:
79+
name:
80+
type: string

0 commit comments

Comments
 (0)