diff options
author | Bjørn Christian Seime <bjorncs@vespa.ai> | 2023-12-08 14:40:01 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@vespa.ai> | 2023-12-08 14:51:43 +0100 |
commit | 7d707401ed2bf651885d4c2fe9b18094f601cab4 (patch) | |
tree | a886f75b912ee79eb6b4f2ed88fb73a581d4823c /vespajlib/src | |
parent | 39032146a75f003bffb14459fee69bf8b9436fac (diff) |
Add validation for nullity taking multiple arguments
Diffstat (limited to 'vespajlib/src')
-rw-r--r-- | vespajlib/src/main/java/ai/vespa/validation/Validation.java | 8 | ||||
-rw-r--r-- | vespajlib/src/test/java/ai/vespa/validation/ValidationTest.java | 11 |
2 files changed, 19 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/ai/vespa/validation/Validation.java b/vespajlib/src/main/java/ai/vespa/validation/Validation.java index c03aa71c1bb..0ef2778f85e 100644 --- a/vespajlib/src/main/java/ai/vespa/validation/Validation.java +++ b/vespajlib/src/main/java/ai/vespa/validation/Validation.java @@ -3,6 +3,7 @@ package ai.vespa.validation; import com.yahoo.yolean.Exceptions; +import java.util.Objects; import java.util.function.Function; import java.util.regex.Pattern; @@ -69,4 +70,11 @@ public class Validation { throw new IllegalArgumentException(description + ", but got: '" + value + "'"); } + public static void requireNonNulls(Object... objs) { + for (int i = 0; i < objs.length; i++) { + int effectivelyFinal = i; + Objects.requireNonNull(objs[i], () -> "Argument at index %d is null".formatted(effectivelyFinal)); + } + } + } diff --git a/vespajlib/src/test/java/ai/vespa/validation/ValidationTest.java b/vespajlib/src/test/java/ai/vespa/validation/ValidationTest.java index 85bd6ed393a..e4d3cc2b854 100644 --- a/vespajlib/src/test/java/ai/vespa/validation/ValidationTest.java +++ b/vespajlib/src/test/java/ai/vespa/validation/ValidationTest.java @@ -3,11 +3,14 @@ package ai.vespa.validation; import org.junit.jupiter.api.Test; +import java.util.List; + import static ai.vespa.validation.Validation.parse; import static ai.vespa.validation.Validation.requireAtLeast; import static ai.vespa.validation.Validation.requireAtMost; import static ai.vespa.validation.Validation.requireInRange; import static ai.vespa.validation.Validation.requireNonBlank; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -68,4 +71,12 @@ class ValidationTest { .getMessage()); } + @Test + void testNonNulls() { + assertDoesNotThrow(() -> Validation.requireNonNulls("hei", 123L, List.of("hoi"))); + var exception = assertThrows(NullPointerException.class, () -> Validation.requireNonNulls("hei", null, List.of("hoi"))); + assertEquals("Argument at index 1 is null", exception.getMessage()); + } + + } |