aboutsummaryrefslogtreecommitdiffstats
path: root/vespajlib/src
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@vespa.ai>2023-12-08 14:40:01 +0100
committerBjørn Christian Seime <bjorncs@vespa.ai>2023-12-08 14:51:43 +0100
commit7d707401ed2bf651885d4c2fe9b18094f601cab4 (patch)
treea886f75b912ee79eb6b4f2ed88fb73a581d4823c /vespajlib/src
parent39032146a75f003bffb14459fee69bf8b9436fac (diff)
Add validation for nullity taking multiple arguments
Diffstat (limited to 'vespajlib/src')
-rw-r--r--vespajlib/src/main/java/ai/vespa/validation/Validation.java8
-rw-r--r--vespajlib/src/test/java/ai/vespa/validation/ValidationTest.java11
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());
+ }
+
+
}