summaryrefslogtreecommitdiffstats
path: root/config-model-api
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2019-06-04 13:46:45 +0200
committerJon Bratseth <bratseth@verizonmedia.com>2019-06-04 13:46:45 +0200
commit5b27023172aab47a0b1c164b100dc79fc9bcbe26 (patch)
tree711f38177e9f05b4872ecc4353c96a112c4a47a7 /config-model-api
parent9baea78885f4f28d865f45c95775ecb380d02a0c (diff)
Only warn when surely preventing a validation failure
Diffstat (limited to 'config-model-api')
-rw-r--r--config-model-api/abi-spec.json5
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java19
2 files changed, 15 insertions, 9 deletions
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json
index c7b80dce778..28c04f38da5 100644
--- a/config-model-api/abi-spec.json
+++ b/config-model-api/abi-spec.json
@@ -493,7 +493,8 @@
],
"methods": [
"public void <init>()",
- "public void <init>(com.yahoo.config.application.api.DeployLogger)",
+ "public void <init>(com.yahoo.config.application.api.ValidationOverrides, com.yahoo.config.application.api.DeployLogger)",
+ "public void invalid(com.yahoo.config.application.api.ValidationId, java.lang.String, java.time.Instant)",
"public boolean allows(com.yahoo.config.application.api.ValidationId, java.time.Instant)",
"public java.lang.String xmlForm()",
"public java.lang.String toString()"
@@ -520,7 +521,7 @@
],
"methods": [
"public void <init>(java.util.List)",
- "public final void invalid(com.yahoo.config.application.api.ValidationId, java.lang.String, java.time.Instant)",
+ "public void invalid(com.yahoo.config.application.api.ValidationId, java.lang.String, java.time.Instant)",
"public final boolean allows(java.lang.String, java.time.Instant)",
"public boolean allows(com.yahoo.config.application.api.ValidationId, java.time.Instant)",
"public java.lang.String xmlForm()",
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 7514a66e282..bcf2ce3999a 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
@@ -29,8 +29,6 @@ import java.util.logging.Logger;
*/
public class ValidationOverrides {
- private static final Logger log = Logger.getLogger(ValidationOverrides.class.getName());
-
public static final ValidationOverrides empty = new ValidationOverrides(ImmutableList.of(), "<validation-overrides/>");
/** A special instance which behaves as if it contained a valid allow override for every (valid) validation id */
@@ -51,7 +49,7 @@ public class ValidationOverrides {
}
/** Throws a ValidationException unless this validation is overridden at this time */
- public final void invalid(ValidationId validationId, String message, Instant now) {
+ public void invalid(ValidationId validationId, String message, Instant now) {
if ( ! allows(validationId, now))
throw new ValidationException(validationId, message);
}
@@ -176,23 +174,30 @@ public class ValidationOverrides {
public static class AllowAllValidationOverrides extends ValidationOverrides {
private final DeployLogger logger;
+ private final ValidationOverrides wrapped;
/** Create an instance of this which doesn't log */
public AllowAllValidationOverrides() {
- this(null);
+ this(null, null);
}
/** Creates an instance of this which logs what is allows to the given deploy logger */
- public AllowAllValidationOverrides(DeployLogger logger) {
+ public AllowAllValidationOverrides(ValidationOverrides wrapped, DeployLogger logger) {
super(List.of());
+ this.wrapped = wrapped;
this.logger = logger;
}
+ @Override
+ public void invalid(ValidationId validationId, String message, Instant now) {
+ // Log if would otherwise be invalid
+ if (wrapped != null && logger != null && ! wrapped.allows(validationId, now))
+ logger.log(Level.WARNING, "Possibly destructive change '" + validationId + "' allowed");
+ }
+
/** Returns whether the given (assumed invalid) change is allowed by this at the moment */
@Override
public boolean allows(ValidationId validationId, Instant now) {
- if (logger != null)
- logger.log(Level.WARNING, "Possibly destructive change '" + validationId + "' allowed");
return true;
}