BUG-4684: validate changes against effective state
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / tree / SchemaAwareApplyOperation.java
index a511ddf064b719cb1c0f1320b6da2ec21b98e959..22a056fca3c0fa4f33854103864cf76135a82891 100644 (file)
@@ -115,19 +115,19 @@ abstract class SchemaAwareApplyOperation extends ModificationApplyOperation {
     }
 
     @Override
-    final void checkApplicable(final YangInstanceIdentifier path,final NodeModification modification, final Optional<TreeNode> current) throws DataValidationFailedException {
+    final void checkApplicable(final YangInstanceIdentifier path,final NodeModification modification, final Optional<TreeNode> current, final Version version) throws DataValidationFailedException {
         switch (modification.getOperation()) {
         case DELETE:
             checkDeleteApplicable(modification, current);
             break;
         case TOUCH:
-            checkTouchApplicable(path, modification, current);
+            checkTouchApplicable(path, modification, current, version);
             break;
         case WRITE:
-            checkWriteApplicable(path, modification, current);
+            checkWriteApplicable(path, modification, current, version);
             break;
         case MERGE:
-            checkMergeApplicable(path, modification, current);
+            checkMergeApplicable(path, modification, current, version);
             break;
         case NONE:
             break;
@@ -136,7 +136,8 @@ abstract class SchemaAwareApplyOperation extends ModificationApplyOperation {
         }
     }
 
-    protected void checkMergeApplicable(final YangInstanceIdentifier path, final NodeModification modification, final Optional<TreeNode> current) throws DataValidationFailedException {
+    protected void checkMergeApplicable(final YangInstanceIdentifier path, final NodeModification modification,
+            final Optional<TreeNode> current, final Version version) throws DataValidationFailedException {
         final Optional<TreeNode> original = modification.getOriginal();
         if (original.isPresent() && current.isPresent()) {
             /*
@@ -162,7 +163,7 @@ abstract class SchemaAwareApplyOperation extends ModificationApplyOperation {
      * @throws DataValidationFailedException
      */
     protected void checkWriteApplicable(final YangInstanceIdentifier path, final NodeModification modification,
-        final Optional<TreeNode> current) throws DataValidationFailedException {
+        final Optional<TreeNode> current, final Version version) throws DataValidationFailedException {
         final Optional<TreeNode> original = modification.getOriginal();
         if (original.isPresent() && current.isPresent()) {
             checkNotConflicting(path, original.get(), current.get());
@@ -256,8 +257,8 @@ abstract class SchemaAwareApplyOperation extends ModificationApplyOperation {
      * @throws ConflictingModificationAppliedException If subtree was changed in conflicting way
      * @throws IncorrectDataStructureException If subtree modification is not applicable (e.g. leaf node).
      */
-    protected abstract void checkTouchApplicable(YangInstanceIdentifier path, final NodeModification modification,
-            final Optional<TreeNode> current) throws DataValidationFailedException;
+    protected abstract void checkTouchApplicable(YangInstanceIdentifier path, NodeModification modification,
+            Optional<TreeNode> current, Version version) throws DataValidationFailedException;
 
     /**
      * Checks if supplied schema node belong to specified Data Tree type. All nodes belong to the operational tree,