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