summaryrefslogtreecommitdiffstats
path: root/infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/Validator.java
diff options
context:
space:
mode:
authorMarek Gradzki <mgradzki@cisco.com>2018-04-13 13:38:16 +0200
committerMarek Gradzki <mgradzki@cisco.com>2018-08-17 10:17:58 +0000
commitd1b102f6fafced3c7badb09ecc78fec590704c8a (patch)
treefb9c7041b25cdd36b46cf25e789c850db38f2349 /infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/Validator.java
parentfa641a3e06a905cb3222ebd15a2b4ab90b599efc (diff)
HONEYCOMB-431: add validation support to Writers
This patch introduces FlatWriterRegistry.validateModifications. Implementation iterates over writersOrder following bulkUpdate logic to properly support subtree writers case. Writers are now cabable of validating modifications. Commonly used implementations (GenericWriter and GenericListWriter) delegate validation capbility to Validators. Change-Id: If7a0bb0838c0b8f2c0393c989f3b03853a2ea679 Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
Diffstat (limited to 'infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/Validator.java')
-rw-r--r--infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/Validator.java71
1 files changed, 71 insertions, 0 deletions
diff --git a/infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/Validator.java b/infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/Validator.java
new file mode 100644
index 000000000..2044757ec
--- /dev/null
+++ b/infra/translate-api/src/main/java/io/fd/honeycomb/translate/write/Validator.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2018 Cisco and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.fd.honeycomb.translate.write;
+
+import com.google.common.annotations.Beta;
+import io.fd.honeycomb.translate.write.DataValidationFailedException.CreateValidationFailedException;
+import io.fd.honeycomb.translate.write.DataValidationFailedException.DeleteValidationFailedException;
+import io.fd.honeycomb.translate.write.DataValidationFailedException.UpdateValidationFailedException;
+import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Responsible for validation of DataObjects.
+ * Handles all update operations (create, update, delete).
+ *
+ * @param <D> Specific DataObject derived type, that is handled by this writer
+ * @see Writer#validate(InstanceIdentifier, DataObject, DataObject, WriteContext)
+ */
+@Beta
+public interface Validator<D extends DataObject> {
+ /**
+ * Validates write operation.
+ *
+ * @param id Identifier(from root) of data being written
+ * @param dataAfter New data to be written
+ * @param writeContext Write context that provides information about current state of DataTree.
+ * @throws CreateValidationFailedException if write validation failed
+ */
+ void validateWrite(
+ @Nonnull final InstanceIdentifier<D> id,
+ @Nonnull final D dataAfter,
+ @Nonnull final WriteContext writeContext) throws CreateValidationFailedException;
+
+ /**
+ * Validates update operation.
+ *
+ * @param id Identifier(from root) of data being updated
+ * @param dataBefore Old data
+ * @param dataAfter New, updated data
+ * @param writeContext Write context that provides information about current state of DataTree.
+ * @throws UpdateValidationFailedException if update validation failed
+ */
+ void validateUpdate(InstanceIdentifier<D> id, D dataBefore, D dataAfter, WriteContext writeContext)
+ throws UpdateValidationFailedException;
+
+ /**
+ * Validates delete operation.
+ *
+ * @param id Identifier(from root) of data being written
+ * @param dataBefore Old data being deleted
+ * @param writeContext Write context that provides information about current state of DataTree.
+ * @throws DeleteValidationFailedException if delete validation failed
+ */
+ void validateDelete(InstanceIdentifier<D> id, D dataBefore, WriteContext writeContext)
+ throws DeleteValidationFailedException;
+}