- *
- * Checks if provided node modification could be applied to current metadata node.
- *
- * @param modification Modification
- * @param current Metadata Node to which modification should be applied
- * @return true if modification is applicable
- * false if modification is no applicable
- * @throws DataValidationFailedException
- */
- abstract void checkApplicable(YangInstanceIdentifier path, NodeModification modification, Optional<TreeNode> current) throws DataValidationFailedException;
+ *
+ * Checks if provided node modification could be applied to current metadata node.
+ *
+ * @param modification Modification
+ * @param current Metadata Node to which modification should be applied
+ * @param version
+ * @return true if modification is applicable
+ * false if modification is no applicable
+ * @throws DataValidationFailedException
+ */
+ abstract void checkApplicable(YangInstanceIdentifier path, NodeModification modification, Optional<TreeNode> current, Version version) throws DataValidationFailedException;
+
+ /**
+ *
+ * Performs structural verification of NodeModification, such as writen values / types uses
+ * right structural elements.
+ *
+ * @param modification data to be verified.
+ * @param verifyChildren true if structure verification should be run against children.
+ * @throws IllegalArgumentException If provided NodeModification does not adhere to the
+ * structure.
+ */
+ abstract void verifyStructure(NormalizedNode<?, ?> modification, boolean verifyChildren)
+ throws IllegalArgumentException;