diff options
author | Jon Bratseth <bratseth@verizonmedia.com> | 2019-06-04 13:46:45 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@verizonmedia.com> | 2019-06-04 13:46:45 +0200 |
commit | 5b27023172aab47a0b1c164b100dc79fc9bcbe26 (patch) | |
tree | 711f38177e9f05b4872ecc4353c96a112c4a47a7 /config-model-api | |
parent | 9baea78885f4f28d865f45c95775ecb380d02a0c (diff) |
Only warn when surely preventing a validation failure
Diffstat (limited to 'config-model-api')
-rw-r--r-- | config-model-api/abi-spec.json | 5 | ||||
-rw-r--r-- | config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java | 19 |
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; } |