Skip to content

Commit 5347fd0

Browse files
committed
Make sure Lists are immutable
1 parent 6c72df1 commit 5347fd0

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

+13-4
Original file line numberDiff line numberDiff line change
@@ -155,18 +155,27 @@ public TypeName writeJavaType(
155155

156156
constructorBuilder.addParameter(parameterSpecBuilder.build());
157157

158-
if (!propertyType.isPrimitive() && required.contains(propertyName)) {
159-
if (isList(propertyType)) {
158+
boolean nonNull = required.contains(propertyName);
159+
if (isList(propertyType)) {
160+
if (nonNull) {
160161
compactConstructorBuilder.addStatement(
161-
"$N = $T.ofNullable($N).orElseGet($T::of)",
162+
"$N = $T.ofNullable($N).map($T::copyOf).orElseGet($T::of)",
162163
propertyName,
163164
Optional.class,
164165
propertyName,
166+
List.class,
165167
List.class);
166168
} else {
167169
compactConstructorBuilder.addStatement(
168-
"$T.requireNonNull($N)", Objects.class, propertyName);
170+
"$N = $T.ofNullable($N).map($T::copyOf).orElse(null)",
171+
propertyName,
172+
Optional.class,
173+
propertyName,
174+
List.class);
169175
}
176+
} else if (!propertyType.isPrimitive() && nonNull) {
177+
compactConstructorBuilder.addStatement(
178+
"$T.requireNonNull($N)", Objects.class, propertyName);
170179
}
171180
}
172181
typeBuilder

0 commit comments

Comments
 (0)