Skip to content

Commit fb43e09

Browse files
committed
fix: Reject null branches in ValidationError with a clear message
1 parent ff24f44 commit fb43e09

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

src/main/java/com/retailsvc/http/validate/ValidationError.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.retailsvc.http.validate;
22

33
import java.util.List;
4+
import java.util.Objects;
45

56
public record ValidationError(
67
String pointer,
@@ -10,6 +11,8 @@ public record ValidationError(
1011
List<ValidationError> branches) {
1112

1213
public ValidationError {
14+
Objects.requireNonNull(
15+
branches, "branches must not be null; use the 4-arg constructor for a leaf error");
1316
branches = List.copyOf(branches);
1417
}
1518

src/test/java/com/retailsvc/http/validate/ValidationErrorTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.retailsvc.http.validate;
22

33
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.assertj.core.api.Assertions.assertThatNullPointerException;
45

56
import java.util.ArrayList;
67
import java.util.List;
@@ -24,4 +25,11 @@ void canonicalConstructorCopiesBranchesDefensively() {
2425

2526
assertThat(e.branches()).containsExactly(branch);
2627
}
28+
29+
@Test
30+
void nullBranchesArgumentThrows() {
31+
assertThatNullPointerException()
32+
.isThrownBy(() -> new ValidationError("/x", "oneOf", "summary", "s", null))
33+
.withMessageContaining("branches");
34+
}
2735
}

0 commit comments

Comments
 (0)