summaryrefslogtreecommitdiffstats
path: root/config-model-api
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2018-07-04 13:39:23 +0200
committerHarald Musum <musum@oath.com>2018-07-04 13:39:23 +0200
commit3b4e76bc05218ed42727db5371416b76710e1567 (patch)
tree362acfda5f0440c6e1f768bf2344a70aaf3f3025 /config-model-api
parentec7dedf2f618b2e3aeb8019877565c1bfbec6047 (diff)
Use new ValidationParameter class instead of booleans
Diffstat (limited to 'config-model-api')
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java23
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java50
2 files changed, 70 insertions, 3 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java
index 572c470b6aa..feccabf47b0 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.api;
+import com.yahoo.config.model.api.ValidationParameters.IgnoreValidationErrors;
import com.yahoo.config.provision.Version;
/**
@@ -17,8 +18,8 @@ public interface ModelFactory {
/**
* Creates an instance of a {@link Model}. The resulting instance will be used to serve config. No model
- * validation will be done, calling this method assumes that {@link #createAndValidateModel} has already
- * been called at some point for this model.
+ * validation will be done, calling this method assumes that{@link #createAndValidateModel(ModelContext, ValidationParameters)}
+ * has already been called at some point for this model.
*
* @param modelContext an instance of {@link ModelContext}, containing dependencies for creating a {@link Model}.
* @return a {@link Model} instance.
@@ -32,7 +33,23 @@ public interface ModelFactory {
* @param modelContext an instance of {@link ModelContext}, containing dependencies for creating a {@link Model}
* @param ignoreValidationErrors true if validation errors should not trigger exceptions
* @return a {@link ModelCreateResult} instance.
+ * @deprecated use {@link #createAndValidateModel(ModelContext, ValidationParameters)}
*/
- ModelCreateResult createAndValidateModel(ModelContext modelContext, boolean ignoreValidationErrors);
+ @Deprecated
+ // TODO: Remove when 6.258 is latest version in use
+ default ModelCreateResult createAndValidateModel(ModelContext modelContext, boolean ignoreValidationErrors) {
+ return createAndValidateModel(modelContext, new ValidationParameters(ignoreValidationErrors
+ ? IgnoreValidationErrors.FALSE
+ : IgnoreValidationErrors.TRUE));
+ }
+ /**
+ * Creates an instance of a {@link Model}. The resulting instance will be used to serve config. Any validation
+ * of a {@link Model} and the {@link ModelContext} can be done in this method.
+ *
+ * @param modelContext an instance of {@link ModelContext}, containing dependencies for creating a {@link Model}
+ * @param validationParameters validation parameters
+ * @return a {@link ModelCreateResult} instance.
+ */
+ ModelCreateResult createAndValidateModel(ModelContext modelContext, ValidationParameters validationParameters);
}
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java
new file mode 100644
index 00000000000..6e081d0d668
--- /dev/null
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java
@@ -0,0 +1,50 @@
+// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.config.model.api;
+
+/**
+ * @author hmusum
+ */
+public class ValidationParameters {
+
+ public enum IgnoreValidationErrors {TRUE, FALSE}
+
+ public enum FailOnIncompatibleChange {TRUE, FALSE} //Note: Default is FALSE
+
+ public enum CheckRouting {TRUE, FALSE}
+
+ private final IgnoreValidationErrors ignoreValidationErrors;
+ private final FailOnIncompatibleChange failOnIncompatibleChange;
+ private final CheckRouting checkRouting;
+
+ public ValidationParameters() {
+ this(IgnoreValidationErrors.FALSE);
+ }
+
+ public ValidationParameters(IgnoreValidationErrors ignoreValidationErrors) {
+ this(ignoreValidationErrors, FailOnIncompatibleChange.FALSE, CheckRouting.TRUE);
+ }
+
+ public ValidationParameters(CheckRouting checkRouting) {
+ this(IgnoreValidationErrors.FALSE, FailOnIncompatibleChange.FALSE, checkRouting);
+ }
+
+ public ValidationParameters(IgnoreValidationErrors ignoreValidationErrors,
+ FailOnIncompatibleChange failOnIncompatibleChange,
+ CheckRouting checkRouting) {
+ this.ignoreValidationErrors = ignoreValidationErrors;
+ this.failOnIncompatibleChange = failOnIncompatibleChange;
+ this.checkRouting = checkRouting;
+ }
+
+ public boolean ignoreValidationErrors() {
+ return ignoreValidationErrors == IgnoreValidationErrors.TRUE;
+ }
+
+ public boolean failOnIncompatibleChanges() {
+ return failOnIncompatibleChange == FailOnIncompatibleChange.TRUE;
+ }
+
+ public boolean checkRouting() {
+ return checkRouting == CheckRouting.TRUE;
+ }
+}