summaryrefslogtreecommitdiffstats
path: root/config-model-api/src
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-08-30 10:14:25 +0200
committerHarald Musum <musum@yahooinc.com>2023-08-30 10:14:25 +0200
commitfc9568032a48bebe41578c15245858ca2781aa5e (patch)
treeae7acf46160c8de3bf68fe9c9e9ee7baeee5f96a /config-model-api/src
parent306dce28ed3cfa0d2f4679fd2519db3d1ac780c7 (diff)
Rethrow RuntimeException as IllegalArgumentException if parsing validation overrides fails
Diffstat (limited to 'config-model-api/src')
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java18
-rw-r--r--config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java20
2 files changed, 31 insertions, 7 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
index a07ef4b313a..f69cfa6d4c5 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
@@ -104,7 +104,7 @@ public class ValidationOverrides {
try {
return fromXml(IOUtils.readAll(reader));
} catch (IOException e) {
- throw new IllegalArgumentException("Could not read deployment spec", e);
+ throw new IllegalArgumentException("Could not read validation-overrides", e);
}
}
@@ -123,12 +123,16 @@ public class ValidationOverrides {
Element root = XML.getDocument(xmlForm).getDocumentElement();
List<ValidationOverrides.Allow> overrides = new ArrayList<>();
for (Element allow : XML.getChildren(root, "allow")) {
- Instant until = LocalDate.parse(allow.getAttribute("until"), DateTimeFormatter.ISO_DATE)
- .atStartOfDay().atZone(ZoneOffset.UTC).toInstant()
- .plus(Duration.ofDays(1)); // Make the override valid *on* the "until" date
- Optional<ValidationId> validationId = ValidationId.from(XML.getValue(allow));
- // skip unknown ids as they may be valid for other model versions
- validationId.ifPresent(id -> overrides.add(new Allow(id, until)));
+ try {
+ Instant until = LocalDate.parse(allow.getAttribute("until"), DateTimeFormatter.ISO_DATE)
+ .atStartOfDay().atZone(ZoneOffset.UTC).toInstant()
+ .plus(Duration.ofDays(1)); // Make the override valid *on* the "until" date
+ Optional<ValidationId> validationId = ValidationId.from(XML.getValue(allow));
+ // skip unknown ids as they may be valid for other model versions
+ validationId.ifPresent(id -> overrides.add(new Allow(id, until)));
+ } catch (RuntimeException e) {
+ throw new IllegalArgumentException(e);
+ }
}
return new ValidationOverrides(overrides, xmlForm);
}
diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java
index bf71947a983..57f306bf989 100644
--- a/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java
+++ b/config-model-api/src/test/java/com/yahoo/config/application/api/ValidationOverrideTest.java
@@ -69,6 +69,26 @@ public class ValidationOverrideTest {
e.getMessage());
}
}
+
+ @Test
+ public void testInvalidDate() {
+ String validationOverrides =
+ "<validation-overrides>" +
+ " <allow until='2000-02-31'>indexing-change</allow>" +
+ "</validation-overrides>";
+
+ try {
+ ValidationOverrides overrides = ValidationOverrides.fromXml(new StringReader(validationOverrides));
+ Instant now = ManualClock.at("2000-01-01T23:59:00");
+ overrides.allows("indexing-change", now);
+ overrides.validate(now);
+ Assert.fail("Expected validation interval override validation validation failure");
+ }
+ catch (IllegalArgumentException e) {
+ Assert.assertEquals("java.time.format.DateTimeParseException: Text '2000-02-31' could not be parsed: Invalid date 'FEBRUARY 31'",
+ e.getMessage());
+ }
+ }
@Test
public void testEmpty() {