Skip to content

Commit 0c0c845

Browse files
committed
Validate non-null properties with Objects#requireNonNull
1 parent 04eedcc commit 0c0c845

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

core/src/main/java/com/cosium/json_schema_to_java_record/JsonSchemaContent.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.time.ZonedDateTime;
1616
import java.util.List;
1717
import java.util.Map;
18+
import java.util.Objects;
1819
import java.util.Optional;
1920
import java.util.Set;
2021
import 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

Comments
 (0)