File tree 3 files changed +43
-3
lines changed
core/src/main/java/com/cosium/json_schema_to_java_record
java/com/cosium/json_schema_to_java_record_tests/case1
resources/com/cosium/json_schema_to_java_record_tests/case1
3 files changed +43
-3
lines changed Original file line number Diff line number Diff line change @@ -156,8 +156,17 @@ public TypeName writeJavaType(
156
156
constructorBuilder .addParameter (parameterSpecBuilder .build ());
157
157
158
158
if (!propertyType .isPrimitive () && required .contains (propertyName )) {
159
- compactConstructorBuilder .addStatement (
160
- "$T.requireNonNull($N)" , Objects .class , propertyName );
159
+ if (isList (propertyType )) {
160
+ compactConstructorBuilder .addStatement (
161
+ "$N = $T.ofNullable($N).orElseGet($T::of)" ,
162
+ propertyName ,
163
+ Optional .class ,
164
+ propertyName ,
165
+ List .class );
166
+ } else {
167
+ compactConstructorBuilder .addStatement (
168
+ "$T.requireNonNull($N)" , Objects .class , propertyName );
169
+ }
161
170
}
162
171
}
163
172
typeBuilder
@@ -181,6 +190,18 @@ public TypeName writeJavaType(
181
190
return className ;
182
191
}
183
192
193
+ private boolean isList (TypeName type ) {
194
+ ClassName className ;
195
+ if (type instanceof ClassName classNameCandidate ) {
196
+ className = classNameCandidate ;
197
+ } else if (type instanceof ParameterizedTypeName parameterizedTypeName ) {
198
+ className = parameterizedTypeName .rawType ();
199
+ } else {
200
+ return false ;
201
+ }
202
+ return className .canonicalName ().equals (List .class .getCanonicalName ());
203
+ }
204
+
184
205
private void addJsonRelatedAnnotations (
185
206
ParameterSpec .Builder parameterBuilder , String propertyName ) {
186
207
Original file line number Diff line number Diff line change 5
5
schemaRootFileLocations =
6
6
@ JsonSchemaFileLocation (
7
7
moduleAndPackage = "com.cosium.json_schema_to_java_record_tests.case1" ,
8
- relativeName = "customer .json" ),
8
+ relativeName = "customers .json" ),
9
9
schemaConfigurations = {
10
+ @ JsonSchemaConfiguration (
11
+ schemaId = "customers" ,
12
+ javaTypeQualifiedName = "com.cosium.json_schema_to_java_record_tests.case1.Customers" ),
10
13
@ JsonSchemaConfiguration (
11
14
schemaId = "customer" ,
12
15
javaTypeQualifiedName = "com.cosium.json_schema_to_java_record_tests.case1.Customer" ),
Original file line number Diff line number Diff line change
1
+ {
2
+ "$schema" : " https://json-schema.org/draft/2020-12/schema" ,
3
+ "$id" : " customers" ,
4
+ "type" : " object" ,
5
+ "properties" : {
6
+ "list" : {
7
+ "type" : " array" ,
8
+ "items" : {
9
+ "$ref" : " classpath:/com/cosium/json_schema_to_java_record_tests/case1/customer.json"
10
+ }
11
+ }
12
+ },
13
+ "required" : [
14
+ " list"
15
+ ]
16
+ }
You can’t perform that action at this time.
0 commit comments