Skip to content

Commit 89a108a

Browse files
authored
Default nested array to null in java generators (#21713)
* default nested array to null in java generators * add test schema
1 parent 0f231d9 commit 89a108a

File tree

9 files changed

+405
-0
lines changed

9 files changed

+405
-0
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1291,6 +1291,9 @@ public String toArrayDefaultValue(CodegenProperty cp, Schema schema) {
12911291
}
12921292
})
12931293
.collect(Collectors.joining(", "));
1294+
} else if (cp.items.isContainer) {
1295+
// TODO nested array/set/map is not supported at the moment so defaulting to null
1296+
defaultValue = null;
12941297
} else { // array item is non-string, e.g. integer
12951298
defaultValue = StringUtils.join(_values, ", ");
12961299
}

modules/openapi-generator/src/test/resources/3_0/java/petstore-with-fake-endpoints-models-for-testing-okhttp-gson.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2809,3 +2809,20 @@ components:
28092809
$ref: '#/components/schemas/ArrayOneOf'
28102810
anyof_prop:
28112811
$ref: '#/components/schemas/ArrayAnyOf'
2812+
NestedArrayWithDefaultValues:
2813+
type: object
2814+
properties:
2815+
nestedArray:
2816+
type: array
2817+
items:
2818+
type: array
2819+
items:
2820+
type: string
2821+
default: ["value1", "value2"]
2822+
default:
2823+
[
2824+
[ "h1", "Header 1" ],
2825+
[ "h2", "Header 2" ],
2826+
[ "h3", "Header 3" ],
2827+
[ "h4", "Header 4" ]
2828+
]

samples/client/petstore/java/okhttp-gson/.openapi-generator/FILES

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ docs/ModelList.md
7171
docs/ModelReturn.md
7272
docs/ModelWithOneOfAnyOfProperties.md
7373
docs/Name.md
74+
docs/NestedArrayWithDefaultValues.md
7475
docs/NewPet.md
7576
docs/NewPetCategoryInlineAllof.md
7677
docs/NewPetCategoryInlineAllofAllOfCategoryTag.md
@@ -216,6 +217,7 @@ src/main/java/org/openapitools/client/model/ModelList.java
216217
src/main/java/org/openapitools/client/model/ModelReturn.java
217218
src/main/java/org/openapitools/client/model/ModelWithOneOfAnyOfProperties.java
218219
src/main/java/org/openapitools/client/model/Name.java
220+
src/main/java/org/openapitools/client/model/NestedArrayWithDefaultValues.java
219221
src/main/java/org/openapitools/client/model/NewPet.java
220222
src/main/java/org/openapitools/client/model/NewPetCategoryInlineAllof.java
221223
src/main/java/org/openapitools/client/model/NewPetCategoryInlineAllofAllOfCategoryTag.java

samples/client/petstore/java/okhttp-gson/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ Class | Method | HTTP request | Description
233233
- [ModelReturn](docs/ModelReturn.md)
234234
- [ModelWithOneOfAnyOfProperties](docs/ModelWithOneOfAnyOfProperties.md)
235235
- [Name](docs/Name.md)
236+
- [NestedArrayWithDefaultValues](docs/NestedArrayWithDefaultValues.md)
236237
- [NewPet](docs/NewPet.md)
237238
- [NewPetCategoryInlineAllof](docs/NewPetCategoryInlineAllof.md)
238239
- [NewPetCategoryInlineAllofAllOfCategoryTag](docs/NewPetCategoryInlineAllofAllOfCategoryTag.md)

samples/client/petstore/java/okhttp-gson/api/openapi.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2916,6 +2916,27 @@ components:
29162916
anyof_prop:
29172917
$ref: "#/components/schemas/ArrayAnyOf"
29182918
type: object
2919+
NestedArrayWithDefaultValues:
2920+
properties:
2921+
nestedArray:
2922+
default:
2923+
- - h1
2924+
- Header 1
2925+
- - h2
2926+
- Header 2
2927+
- - h3
2928+
- Header 3
2929+
- - h4
2930+
- Header 4
2931+
items:
2932+
default:
2933+
- value1
2934+
- value2
2935+
items:
2936+
type: string
2937+
type: array
2938+
type: array
2939+
type: object
29192940
_foo_get_default_response:
29202941
example:
29212942
string:
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
3+
# NestedArrayWithDefaultValues
4+
5+
6+
## Properties
7+
8+
| Name | Type | Description | Notes |
9+
|------------ | ------------- | ------------- | -------------|
10+
|**nestedArray** | **List<List<String>>** | | [optional] |
11+
12+
13+

samples/client/petstore/java/okhttp-gson/src/main/java/org/openapitools/client/JSON.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,7 @@ private static Class getClassByDiscriminator(Map classByDiscriminatorValue, Stri
303303
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ModelReturn.CustomTypeAdapterFactory());
304304
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.ModelWithOneOfAnyOfProperties.CustomTypeAdapterFactory());
305305
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.Name.CustomTypeAdapterFactory());
306+
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.NestedArrayWithDefaultValues.CustomTypeAdapterFactory());
306307
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.NewPet.CustomTypeAdapterFactory());
307308
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.NewPetCategoryInlineAllof.CustomTypeAdapterFactory());
308309
gsonBuilder.registerTypeAdapterFactory(new org.openapitools.client.model.NewPetCategoryInlineAllofAllOfCategoryTag.CustomTypeAdapterFactory());

0 commit comments

Comments
 (0)