Fixed bug in ModificationDiff 88/9688/2
authorMartin Sunal <msunal@frinx.io>
Wed, 29 Nov 2017 15:21:04 +0000 (16:21 +0100)
committerMarek Gradzki <mgradzki@cisco.com>
Mon, 4 Dec 2017 14:43:50 +0000 (14:43 +0000)
when leaf is modified in augmentation
modification type is subtree-modified.
Implementation expected only type write
or delete.

Change-Id: I3146b1a7322bd73d7972fecaceeafa654eeb84a4
Signed-off-by: Martin Sunal <msunal@frinx.io>
Signed-off-by: Maros Marsalek <maros.mars@gmail.com>
infra/data-impl/src/main/java/io/fd/honeycomb/data/impl/ModificationDiff.java

index 74e21df..9d97d91 100644 (file)
@@ -18,6 +18,7 @@ package io.fd.honeycomb.data.impl;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType.DELETE;
+import static org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType.SUBTREE_MODIFIED;
 import static org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType.WRITE;
 
 import com.google.common.collect.ImmutableMap;
@@ -50,6 +51,7 @@ final class ModificationDiff {
 
     private static final ModificationDiff EMPTY_DIFF = new ModificationDiff(Collections.emptyMap());
     private static final EnumSet VALID_MODIFICATIONS = EnumSet.of(WRITE, DELETE);
+    private static final EnumSet LEAF_VALID_MODIFICATIONS = EnumSet.of(WRITE, DELETE, SUBTREE_MODIFIED);
 
     private final Map<YangInstanceIdentifier, NormalizedNodeUpdate> updates;
 
@@ -194,7 +196,7 @@ final class ModificationDiff {
                     // For some reason, we get modifications on unmodified list keys
                     // and that messes up our modifications collection here, so we need to skip
                     .filter(Modification::isBeforeAndAfterDifferent)
-                    .filter(child -> VALID_MODIFICATIONS.contains(child.getModificationType()))
+                    .filter(child -> LEAF_VALID_MODIFICATIONS.contains(child.getModificationType()))
                     .findFirst()
                     .isPresent();