15
15
import java .time .ZonedDateTime ;
16
16
import java .util .List ;
17
17
import java .util .Map ;
18
+ import java .util .Objects ;
18
19
import java .util .Optional ;
19
20
import java .util .Set ;
20
21
import javax .lang .model .element .Modifier ;
@@ -127,7 +128,9 @@ public TypeName writeJavaType(
127
128
} else {
128
129
typeBuilder = TypeSpec .recordBuilder (className ).addModifiers (Modifier .PUBLIC );
129
130
130
- MethodSpec .Builder recordConstructorBuilder = MethodSpec .constructorBuilder ();
131
+ MethodSpec .Builder constructorBuilder = MethodSpec .constructorBuilder ();
132
+ MethodSpec .Builder compactConstructorBuilder =
133
+ MethodSpec .compactConstructorBuilder ().addModifiers (Modifier .PUBLIC );
131
134
132
135
for (Map .Entry <String , JsonSchemaContent > property : properties ().entrySet ()) {
133
136
@@ -150,11 +153,17 @@ public TypeName writeJavaType(
150
153
addNullRelatedAnnotations (javaTypes , parameterSpecBuilder , propertyName );
151
154
}
152
155
153
- ParameterSpec parameterSpec = parameterSpecBuilder .build ();
156
+ constructorBuilder . addParameter ( parameterSpecBuilder .build () );
154
157
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
+ }
157
162
}
163
+ typeBuilder
164
+ .recordConstructor (constructorBuilder .build ())
165
+ .addMethod (compactConstructorBuilder .build ());
166
+
158
167
addRecordBuilderRelatedAnnotations (javaTypes , typeBuilder );
159
168
addJsonRelatedAnnotations (typeBuilder );
160
169
}
0 commit comments