Merge "Bug 1036 - Allow using container in case stmt to preserve uniqueness."
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / md / sal / dom / store / impl / tree / data / InMemoryDataTreeSnapshot.java
1 package org.opendaylight.controller.md.sal.dom.store.impl.tree.data;
2
3 import org.opendaylight.controller.md.sal.dom.store.impl.tree.DataTreeSnapshot;
4 import org.opendaylight.controller.md.sal.dom.store.impl.tree.spi.TreeNode;
5 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
6 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
7 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeUtils;
8 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
9
10 import com.google.common.base.Optional;
11 import com.google.common.base.Preconditions;
12
13 final class InMemoryDataTreeSnapshot implements DataTreeSnapshot {
14     private final ModificationApplyOperation applyOper;
15     private final SchemaContext schemaContext;
16     private final TreeNode rootNode;
17
18     InMemoryDataTreeSnapshot(final SchemaContext schemaContext, final TreeNode rootNode,
19             final ModificationApplyOperation applyOper) {
20         this.schemaContext = Preconditions.checkNotNull(schemaContext);
21         this.rootNode = Preconditions.checkNotNull(rootNode);
22         this.applyOper = Preconditions.checkNotNull(applyOper);
23     }
24
25     TreeNode getRootNode() {
26         return rootNode;
27     }
28
29     SchemaContext getSchemaContext() {
30         return schemaContext;
31     }
32
33     @Override
34     public Optional<NormalizedNode<?, ?>> readNode(final InstanceIdentifier path) {
35         return NormalizedNodeUtils.findNode(rootNode.getData(), path);
36     }
37
38     @Override
39     public InMemoryDataTreeModification newModification() {
40         return new InMemoryDataTreeModification(this, applyOper);
41     }
42
43     @Override
44     public String toString() {
45         return rootNode.getSubtreeVersion().toString();
46     }
47
48 }