1515import java .time .ZonedDateTime ;
1616import java .util .List ;
1717import java .util .Map ;
18+ import java .util .Objects ;
1819import java .util .Optional ;
1920import java .util .Set ;
2021import javax .lang .model .element .Modifier ;
@@ -127,7 +128,9 @@ public TypeName writeJavaType(
127128 } else {
128129 typeBuilder = TypeSpec .recordBuilder (className ).addModifiers (Modifier .PUBLIC );
129130
130- MethodSpec .Builder recordConstructorBuilder = MethodSpec .constructorBuilder ();
131+ MethodSpec .Builder constructorBuilder = MethodSpec .constructorBuilder ();
132+ MethodSpec .Builder compactConstructorBuilder =
133+ MethodSpec .compactConstructorBuilder ().addModifiers (Modifier .PUBLIC );
131134
132135 for (Map .Entry <String , JsonSchemaContent > property : properties ().entrySet ()) {
133136
@@ -150,11 +153,17 @@ public TypeName writeJavaType(
150153 addNullRelatedAnnotations (javaTypes , parameterSpecBuilder , propertyName );
151154 }
152155
153- ParameterSpec parameterSpec = parameterSpecBuilder .build ();
156+ constructorBuilder . addParameter ( parameterSpecBuilder .build () );
154157
155- recordConstructorBuilder .addParameter (parameterSpec );
156- typeBuilder .recordConstructor (recordConstructorBuilder .build ());
158+ if (!propertyType .isPrimitive () && required .contains (propertyName )) {
159+ compactConstructorBuilder .addStatement (
160+ "$T.requireNonNull($N)" , Objects .class , propertyName );
161+ }
157162 }
163+ typeBuilder
164+ .recordConstructor (constructorBuilder .build ())
165+ .addMethod (compactConstructorBuilder .build ());
166+
158167 addRecordBuilderRelatedAnnotations (javaTypes , typeBuilder );
159168 addJsonRelatedAnnotations (typeBuilder );
160169 }
0 commit comments