X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2Ftree%2FInMemoryDataTreeSnapshot.java;h=7cc443281c57f8e22a365643ed7e9e1582312a89;hb=8f2876d895936b36aba1fc3ec65b18900e559184;hp=8023c49ab339943aea40b5f7f57d014e075982f2;hpb=540ca8209fbf379920e9d58cc5a9a7d906af9876;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeSnapshot.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeSnapshot.java index 8023c49ab3..7cc443281c 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeSnapshot.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeSnapshot.java @@ -7,25 +7,30 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.tree; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; +import static com.google.common.base.Preconditions.checkArgument; +import static java.util.Objects.requireNonNull; + +import java.util.Optional; +import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; 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.NormalizedNodes; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot; +import org.opendaylight.yangtools.yang.data.api.schema.tree.CursorAwareDataTreeSnapshot; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshotCursor; import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -final class InMemoryDataTreeSnapshot implements DataTreeSnapshot { +final class InMemoryDataTreeSnapshot extends AbstractCursorAware implements CursorAwareDataTreeSnapshot { private final RootModificationApplyOperation applyOper; private final SchemaContext schemaContext; private final TreeNode rootNode; InMemoryDataTreeSnapshot(final SchemaContext schemaContext, final TreeNode rootNode, final RootModificationApplyOperation applyOper) { - this.schemaContext = Preconditions.checkNotNull(schemaContext); - this.rootNode = Preconditions.checkNotNull(rootNode); - this.applyOper = Preconditions.checkNotNull(applyOper); + this.schemaContext = requireNonNull(schemaContext); + this.rootNode = requireNonNull(rootNode); + this.applyOper = requireNonNull(applyOper); } TreeNode getRootNode() { @@ -46,9 +51,20 @@ final class InMemoryDataTreeSnapshot implements DataTreeSnapshot { return new InMemoryDataTreeModification(this, applyOper); } + @Override + public DataTreeSnapshotCursor createCursor(@Nonnull final YangInstanceIdentifier path) { + final Optional> maybeRoot = NormalizedNodes.findNode(rootNode.getData(), path); + if (!maybeRoot.isPresent()) { + return null; + } + + final NormalizedNode root = maybeRoot.get(); + checkArgument(root instanceof NormalizedNodeContainer, "Child %s is not a container", path); + return openCursor(new InMemoryDataTreeSnapshotCursor(this, path, (NormalizedNodeContainer)root)); + } + @Override public String toString() { return rootNode.getSubtreeVersion().toString(); } - -} \ No newline at end of file +}