import static java.util.Objects.requireNonNull;
import java.util.Optional;
-import javax.annotation.Nonnull;
import org.eclipse.jdt.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.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;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider;
-final class InMemoryDataTreeSnapshot extends AbstractCursorAware implements CursorAwareDataTreeSnapshot {
- private final @NonNull RootModificationApplyOperation applyOper;
- private final @NonNull SchemaContext schemaContext;
+final class InMemoryDataTreeSnapshot extends AbstractCursorAware implements CursorAwareDataTreeSnapshot,
+ EffectiveModelContextProvider {
+ private final @NonNull RootApplyStrategy applyOper;
+ private final @NonNull EffectiveModelContext schemaContext;
private final @NonNull TreeNode rootNode;
- InMemoryDataTreeSnapshot(final SchemaContext schemaContext, final TreeNode rootNode,
- final RootModificationApplyOperation applyOper) {
+ InMemoryDataTreeSnapshot(final EffectiveModelContext schemaContext, final TreeNode rootNode,
+ final RootApplyStrategy applyOper) {
this.schemaContext = requireNonNull(schemaContext);
this.rootNode = requireNonNull(rootNode);
this.applyOper = requireNonNull(applyOper);
}
@Override
- public SchemaContext getSchemaContext() {
+ public EffectiveModelContext getEffectiveModelContext() {
return schemaContext;
}
}
@Override
- public DataTreeSnapshotCursor createCursor(@Nonnull final YangInstanceIdentifier path) {
- final Optional<NormalizedNode<?, ?>> 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));
+ public Optional<DataTreeSnapshotCursor> openCursor(final YangInstanceIdentifier path) {
+ return NormalizedNodes.findNode(rootNode.getData(), path).map(root -> {
+ checkArgument(root instanceof NormalizedNodeContainer, "Child %s is not a container", path);
+ return openCursor(new InMemoryDataTreeSnapshotCursor(this, path, (NormalizedNodeContainer<?, ?, ?>)root));
+ });
}
@Override