BUG-3674: delete of non-existing data is a no-op
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / tree / SchemaAwareApplyOperation.java
index b771bccadf616380fe98279648c54161d9a93bcb..9ab33e3707930068462158d140c13b071a7049a5 100644 (file)
@@ -175,7 +175,7 @@ abstract class SchemaAwareApplyOperation extends ModificationApplyOperation {
 
     private static void checkDeleteApplicable(final NodeModification modification, final Optional<TreeNode> current) {
         // Delete is always applicable, we do not expose it to subclasses
-        if (current.isPresent()) {
+        if (!current.isPresent()) {
             LOG.trace("Delete operation turned to no-op on missing node {}", modification);
         }
     }
@@ -189,7 +189,8 @@ abstract class SchemaAwareApplyOperation extends ModificationApplyOperation {
     final Optional<TreeNode> apply(final ModifiedNode modification, final Optional<TreeNode> currentMeta, final Version version) {
         switch (modification.getOperation()) {
         case DELETE:
-            modification.resolveModificationType(ModificationType.DELETE);
+            // Deletion of a non-existing node is a no-op, report it as such
+            modification.resolveModificationType(currentMeta.isPresent() ? ModificationType.DELETE : ModificationType.UNMODIFIED);
             return modification.setSnapshot(Optional.<TreeNode> absent());
         case TOUCH:
             Preconditions.checkArgument(currentMeta.isPresent(), "Metadata not available for modification %s",