BUG-509: Refactor listener walking
[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.yangtools.yang.data.api.InstanceIdentifier;
5 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
6 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeUtils;
7 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
8
9 import com.google.common.base.Optional;
10 import com.google.common.base.Preconditions;
11
12 final class InMemoryDataTreeSnapshot implements DataTreeSnapshot {
13     private final ModificationApplyOperation applyOper;
14     private final SchemaContext schemaContext;
15     private final StoreMetadataNode rootNode;
16
17     InMemoryDataTreeSnapshot(final SchemaContext schemaContext, final StoreMetadataNode rootNode,
18             final ModificationApplyOperation applyOper) {
19         this.schemaContext = Preconditions.checkNotNull(schemaContext);
20         this.rootNode = Preconditions.checkNotNull(rootNode);
21         this.applyOper = Preconditions.checkNotNull(applyOper);
22     }
23
24     StoreMetadataNode getRootNode() {
25         return rootNode;
26     }
27
28     SchemaContext getSchemaContext() {
29         return schemaContext;
30     }
31
32     @Override
33     public Optional<NormalizedNode<?, ?>> readNode(final InstanceIdentifier path) {
34         return NormalizedNodeUtils.findNode(rootNode.getData(), path);
35     }
36
37     @Override
38     public InMemoryDataTreeModification newModification() {
39         return new InMemoryDataTreeModification(this, applyOper);
40     }
41
42     @Override
43     public String toString() {
44         return rootNode.getSubtreeVersion().toString();
45     }
46
47 }