Bug 508: Improved error reporting for failed canCommit phase.
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / md / sal / dom / store / impl / ModificationApplyOperation.java
index 838afe31c6cf15ce52cb46b3b735d9270dc55452..361be6800c41d22a4b02f9ed9441c1018b126c98 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.controller.md.sal.dom.store.impl;
 import org.opendaylight.controller.md.sal.dom.store.impl.tree.NodeModification;
 import org.opendaylight.controller.md.sal.dom.store.impl.tree.StoreMetadataNode;
 import org.opendaylight.controller.md.sal.dom.store.impl.tree.StoreTreeNode;
 import org.opendaylight.controller.md.sal.dom.store.impl.tree.NodeModification;
 import org.opendaylight.controller.md.sal.dom.store.impl.tree.StoreMetadataNode;
 import org.opendaylight.controller.md.sal.dom.store.impl.tree.StoreTreeNode;
+import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument;
 
 import com.google.common.base.Optional;
 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument;
 
 import com.google.common.base.Optional;
@@ -59,17 +60,6 @@ public interface ModificationApplyOperation extends StoreTreeNode<ModificationAp
      */
     Optional<StoreMetadataNode> apply(NodeModification modification, Optional<StoreMetadataNode> storeMeta, UnsignedLong subtreeVersion);
 
      */
     Optional<StoreMetadataNode> apply(NodeModification modification, Optional<StoreMetadataNode> storeMeta, UnsignedLong subtreeVersion);
 
-    /**
-     *
-     * 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
-     */
-    boolean isApplicable(NodeModification modification, Optional<StoreMetadataNode> current);
-
     /**
      *
      * Performs structural verification of NodeModification, such as writen values / types
     /**
      *
      * Performs structural verification of NodeModification, such as writen values / types
@@ -88,4 +78,16 @@ public interface ModificationApplyOperation extends StoreTreeNode<ModificationAp
      */
     @Override
     Optional<ModificationApplyOperation> getChild(PathArgument child);
      */
     @Override
     Optional<ModificationApplyOperation> getChild(PathArgument child);
+
+    /**
+    *
+    * 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 DataPreconditionFailedException
+    */
+    void checkApplicable(InstanceIdentifier path, NodeModification modification, Optional<StoreMetadataNode> current) throws DataPreconditionFailedException;
 }
 }