BUG-2876: switch to using the computed ModificationType 66/16966/2
authorRobert Varga <rovarga@cisco.com>
Sun, 22 Mar 2015 21:51:05 +0000 (22:51 +0100)
committerRobert Varga <rovarga@cisco.com>
Mon, 23 Mar 2015 11:00:36 +0000 (12:00 +0100)
Eliminate the explicit checks and reuse whatever we got in the
ModifiedNode.

Change-Id: I3adf9bf9e887f45db0c6a679e8d084a5dc9ab82a
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeCandidate.java

index 73891f1a06119e3085f3ea8d55243562c8eb046b..1ce5e8b4831044ac27ad80746ba3182ddec35612 100644 (file)
@@ -15,10 +15,6 @@ import java.util.Collection;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
-import org.opendaylight.yangtools.yang.data.api.schema.OrderedLeafSetNode;
-import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode;
-import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode;
@@ -73,40 +69,7 @@ final class InMemoryDataTreeCandidate extends AbstractDataTreeCandidate {
 
         @Override
         public ModificationType getModificationType() {
-            // FIXME: BUG-2876: we should eliminate this in favor of a field in mod
-            switch (mod.getOperation()) {
-            case DELETE:
-                return ModificationType.DELETE;
-            case MERGE:
-                // Merge into non-existing data is a write
-                if (oldMeta == null) {
-                    return ModificationType.WRITE;
-                }
-
-                // Data-based checks to narrow down types
-                final NormalizedNode<?, ?> data = newMeta.getData();
-
-                // leaf or anyxml are always written
-                if (!(data instanceof NormalizedNodeContainer)) {
-                    return ModificationType.WRITE;
-                }
-
-                // Unkeyed collections are always written
-                if (data instanceof UnkeyedListNode || data instanceof OrderedMapNode || data instanceof OrderedLeafSetNode) {
-                    return ModificationType.WRITE;
-                }
-
-                // Everything else is subtree modified
-                return ModificationType.SUBTREE_MODIFIED;
-            case TOUCH:
-                return ModificationType.SUBTREE_MODIFIED;
-            case NONE:
-                return ModificationType.UNMODIFIED;
-            case WRITE:
-                return ModificationType.WRITE;
-            }
-
-            throw new IllegalStateException("Unhandled internal operation " + mod.getOperation());
+            return mod.modificationType();
         }
 
         private Optional<NormalizedNode<?, ?>> optionalData(final TreeNode meta) {
@@ -130,7 +93,7 @@ final class InMemoryDataTreeCandidate extends AbstractDataTreeCandidate {
         @Override
         public DataTreeCandidateNode getModifiedChild(final PathArgument identifier) {
             final Optional<ModifiedNode> childMod = mod.getChild(identifier);
-            if(childMod.isPresent()) {
+            if (childMod.isPresent()) {
                 return childNode(mod);
             }
             return null;