File tree Expand file tree Collapse 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 Expand file tree Collapse file tree 3 files changed +43
-3
lines changed Original file line number Diff line number Diff line change @@ -156,8 +156,17 @@ public TypeName writeJavaType(
156156 constructorBuilder .addParameter (parameterSpecBuilder .build ());
157157
158158 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+ }
161170 }
162171 }
163172 typeBuilder
@@ -181,6 +190,18 @@ public TypeName writeJavaType(
181190 return className ;
182191 }
183192
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+
184205 private void addJsonRelatedAnnotations (
185206 ParameterSpec .Builder parameterBuilder , String propertyName ) {
186207
Original file line number Diff line number Diff line change 55 schemaRootFileLocations =
66 @ JsonSchemaFileLocation (
77 moduleAndPackage = "com.cosium.json_schema_to_java_record_tests.case1" ,
8- relativeName = "customer .json" ),
8+ relativeName = "customers .json" ),
99 schemaConfigurations = {
10+ @ JsonSchemaConfiguration (
11+ schemaId = "customers" ,
12+ javaTypeQualifiedName = "com.cosium.json_schema_to_java_record_tests.case1.Customers" ),
1013 @ JsonSchemaConfiguration (
1114 schemaId = "customer" ,
1215 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