diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/InMemoryDataTree.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/InMemoryDataTree.java index 1854017f371..7052d87df3d 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/InMemoryDataTree.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/InMemoryDataTree.java @@ -12,7 +12,6 @@ import com.google.common.base.MoreObjects; import java.lang.invoke.MethodHandles; import java.lang.invoke.VarHandle; -import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; @@ -21,7 +20,6 @@ import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration; import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree; import org.opendaylight.yangtools.yang.model.api.ContainerLike; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -76,14 +74,14 @@ public InMemoryDataTree(final TreeNode rootNode, final DataTreeConfiguration tre } private ModificationApplyOperation getOperation(final DataSchemaNode rootSchemaNode) { - if (rootSchemaNode instanceof ContainerLike && maskMandatory) { - return new ContainerModificationStrategy((ContainerLike) rootSchemaNode, treeConfig); + if (rootSchemaNode instanceof ContainerLike rootContainerLike && maskMandatory) { + return new ContainerModificationStrategy(rootContainerLike, treeConfig); } - if (rootSchemaNode instanceof ListSchemaNode) { + if (rootSchemaNode instanceof ListSchemaNode rootList) { final PathArgument arg = treeConfig.getRootPath().getLastPathArgument(); if (arg instanceof NodeIdentifierWithPredicates) { - return maskMandatory ? new MapEntryModificationStrategy((ListSchemaNode) rootSchemaNode, treeConfig) - : MapEntryModificationStrategy.of((ListSchemaNode) rootSchemaNode, treeConfig); + return maskMandatory ? new MapEntryModificationStrategy(rootList, treeConfig) + : MapEntryModificationStrategy.of(rootList, treeConfig); } } @@ -108,20 +106,20 @@ private synchronized void internalSetSchemaContext(final EffectiveModelContext n LOG.debug("Following schema contexts will be attempted {}", newSchemaContext); - final DataSchemaContextTree contextTree = DataSchemaContextTree.from(newSchemaContext); - final Optional rootContextNode = contextTree.findChild(getRootPath()); + final var contextTree = DataSchemaContextTree.from(newSchemaContext); + final var rootContextNode = contextTree.findChild(getRootPath()); if (!rootContextNode.isPresent()) { LOG.warn("Could not find root {} in new schema context, not upgrading", getRootPath()); return; } - final DataSchemaNode rootSchemaNode = rootContextNode.orElseThrow().getDataSchemaNode(); + final var rootSchemaNode = rootContextNode.orElseThrow().dataSchemaNode(); if (!(rootSchemaNode instanceof DataNodeContainer)) { LOG.warn("Root {} resolves to non-container type {}, not upgrading", getRootPath(), rootSchemaNode); return; } - final ModificationApplyOperation rootNode = getOperation(rootSchemaNode); + final var rootNode = getOperation(rootSchemaNode); DataTreeState currentState; DataTreeState newState; do { diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/di/InMemoryDataTreeFactory.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/di/InMemoryDataTreeFactory.java index 2a2fdbe0388..dc2a0653011 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/di/InMemoryDataTreeFactory.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/di/InMemoryDataTreeFactory.java @@ -9,7 +9,6 @@ import static com.google.common.base.Preconditions.checkArgument; -import java.util.Optional; import javax.inject.Inject; import javax.inject.Singleton; import org.eclipse.jdt.annotation.NonNull; @@ -31,7 +30,6 @@ import org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree; import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode; import org.opendaylight.yangtools.yang.data.tree.impl.node.Version; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree; import org.opendaylight.yangtools.yang.model.api.ContainerLike; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; @@ -155,11 +153,11 @@ void deactivate() { private static DataSchemaNode getRootSchemaNode(final EffectiveModelContext schemaContext, final YangInstanceIdentifier rootPath) { - final DataSchemaContextTree contextTree = DataSchemaContextTree.from(schemaContext); - final Optional rootContextNode = contextTree.findChild(rootPath); + final var contextTree = DataSchemaContextTree.from(schemaContext); + final var rootContextNode = contextTree.findChild(rootPath); checkArgument(rootContextNode.isPresent(), "Failed to find root %s in schema context", rootPath); - final DataSchemaNode rootSchemaNode = rootContextNode.orElseThrow().getDataSchemaNode(); + final var rootSchemaNode = rootContextNode.orElseThrow().dataSchemaNode(); checkArgument(rootSchemaNode instanceof DataNodeContainer, "Root %s resolves to non-container type %s", rootPath, rootSchemaNode); return rootSchemaNode; diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java index 109a16876e4..b404a2d7287 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java @@ -23,8 +23,8 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.codec.InstanceIdentifierCodec; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.Composite; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.PathMixin; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.Composite; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.PathMixin; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.util.LeafrefResolver; @@ -46,7 +46,7 @@ public abstract class AbstractStringInstanceIdentifierCodec extends AbstractName @Override protected final String serializeImpl(final YangInstanceIdentifier data) { final StringBuilder sb = new StringBuilder(); - DataSchemaContextNode current = getDataContextTree().getRoot(); + DataSchemaContext current = getDataContextTree().getRoot(); QNameModule lastModule = null; for (var arg : data.getPathArguments()) { current = current instanceof Composite composite ? composite.childByArg(arg) : null; diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContext.java similarity index 81% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContext.java index 04abc1fd045..65cfcbcec65 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContext.java @@ -20,13 +20,13 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.Composite; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.SimpleValue; -import org.opendaylight.yangtools.yang.data.util.impl.model.AbstractCompositeContextNode; -import org.opendaylight.yangtools.yang.data.util.impl.model.AbstractDataSchemaContextNode; -import org.opendaylight.yangtools.yang.data.util.impl.model.AbstractMixinContextNode; -import org.opendaylight.yangtools.yang.data.util.impl.model.LeafContextNode; -import org.opendaylight.yangtools.yang.data.util.impl.model.LeafListItemContextNode; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.Composite; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.SimpleValue; +import org.opendaylight.yangtools.yang.data.util.impl.context.AbstractCompositeContext; +import org.opendaylight.yangtools.yang.data.util.impl.context.AbstractContext; +import org.opendaylight.yangtools.yang.data.util.impl.context.AbstractPathMixinContext; +import org.opendaylight.yangtools.yang.data.util.impl.context.LeafContext; +import org.opendaylight.yangtools.yang.data.util.impl.context.LeafListItemContext; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; @@ -38,11 +38,11 @@ * {@link org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode} and serialization format defined in RFC6020, * since the mapping is not one-to-one. */ -public sealed interface DataSchemaContextNode permits AbstractDataSchemaContextNode, Composite, SimpleValue { +public sealed interface DataSchemaContext permits AbstractContext, Composite, SimpleValue { /** - * A {@link DataSchemaContextNode} containing other {@link DataSchemaContextNode}s. + * A {@link DataSchemaContext} containing other {@link DataSchemaContext}s. */ - sealed interface Composite extends DataSchemaContextNode permits PathMixin, AbstractCompositeContextNode { + sealed interface Composite extends DataSchemaContext permits PathMixin, AbstractCompositeContext { /** * Find a child node identifier by its {@link PathArgument}. * @@ -50,7 +50,7 @@ sealed interface Composite extends DataSchemaContextNode permits PathMixin, Abst * @return A child node, or {@code null} if not found * @throws NullPointerException if {@code arg} is {@code null} */ - @Nullable DataSchemaContextNode childByArg(PathArgument arg); + @Nullable DataSchemaContext childByArg(PathArgument arg); /** * Find a child node identifier by its {code data tree} {@link QName}. This method returns intermediate nodes @@ -63,7 +63,7 @@ sealed interface Composite extends DataSchemaContextNode permits PathMixin, Abst * @return A child node, or {@code null} if not found * @throws NullPointerException if {@code arg} is {@code null} */ - @Nullable DataSchemaContextNode childByQName(QName qname); + @Nullable DataSchemaContext childByQName(QName qname); /** * Find a child node as identified by a {@link YangInstanceIdentifier} relative to this node. @@ -72,7 +72,7 @@ sealed interface Composite extends DataSchemaContextNode permits PathMixin, Abst * @return Child node if present, or empty when corresponding child is not found. * @throws NullPointerException if {@code path} is {@code null} */ - default @Nullable DataSchemaContextNode childByPath(final @NonNull YangInstanceIdentifier path) { + default @Nullable DataSchemaContext childByPath(final @NonNull YangInstanceIdentifier path) { final var it = path.getPathArguments().iterator(); if (!it.hasNext()) { return this; @@ -92,7 +92,7 @@ sealed interface Composite extends DataSchemaContextNode permits PathMixin, Abst } /** - * Attempt to enter a child {@link DataSchemaContextNode} towards the {@link DataSchemaNode} child identified by + * Attempt to enter a child {@link DataSchemaContext} towards the {@link DataSchemaNode} child identified by * specified {@code data tree} {@link QName}, adjusting provided {@code stack} with inference steps * corresponding to the transition to the returned node. The stack is expected to be correctly pointing at this * node's schema, otherwise the results of this method are undefined. @@ -102,10 +102,10 @@ sealed interface Composite extends DataSchemaContextNode permits PathMixin, Abst * @return A DataSchemaContextNode on the path towards the specified child * @throws NullPointerException if any argument is {@code null} */ - @Nullable DataSchemaContextNode enterChild(SchemaInferenceStack stack, QName child); + @Nullable DataSchemaContext enterChild(SchemaInferenceStack stack, QName child); /** - * Attempt to enter a child {@link DataSchemaContextNode} towards the {@link DataSchemaNode} child identified by + * Attempt to enter a child {@link DataSchemaContext} towards the {@link DataSchemaNode} child identified by * specified {@link PathArgument}, adjusting provided {@code stack} with inference steps corresponding to * the transition to the returned node. The stack is expected to be correctly pointing at this node's schema, * otherwise the results of this method are undefined. @@ -115,7 +115,7 @@ sealed interface Composite extends DataSchemaContextNode permits PathMixin, Abst * @return A DataSchemaContextNode for the specified child * @throws NullPointerException if any argument is {@code null} */ - @Nullable DataSchemaContextNode enterChild(SchemaInferenceStack stack, PathArgument child); + @Nullable DataSchemaContext enterChild(SchemaInferenceStack stack, PathArgument child); } /** @@ -133,7 +133,7 @@ sealed interface Composite extends DataSchemaContextNode permits PathMixin, Abst *

* This trait is important for XML codec, but also for JSON encoding of {@link YangInstanceIdentifier}. */ - sealed interface PathMixin extends Composite permits AbstractMixinContextNode { + sealed interface PathMixin extends Composite permits AbstractPathMixinContext { /** * The mixed-in {@link NodeIdentifier}. * @@ -147,11 +147,11 @@ sealed interface PathMixin extends Composite permits AbstractMixinContextNode { /** * Marker interface for contexts which boil down to a simple, not-structured value. The */ - sealed interface SimpleValue extends DataSchemaContextNode permits LeafContextNode, LeafListItemContextNode { + sealed interface SimpleValue extends DataSchemaContext permits LeafContext, LeafListItemContext { // Marker interface } - @NonNull DataSchemaNode getDataSchemaNode(); + @NonNull DataSchemaNode dataSchemaNode(); /** * Return the fixed {@link YangInstanceIdentifier} step, if available. This method returns {@code null} for contexts diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextTree.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextTree.java index ce6e52945b3..063ae6fbf69 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextTree.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextTree.java @@ -17,8 +17,8 @@ import org.opendaylight.yangtools.concepts.CheckedValue; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.Composite; -import org.opendaylight.yangtools.yang.data.util.impl.model.ContainerContextNode; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.Composite; +import org.opendaylight.yangtools.yang.data.util.impl.context.ContainerContext; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.spi.AbstractEffectiveModelContextProvider; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; @@ -28,8 +28,8 @@ * schema and data has differences, the mapping is not trivial -- which is where this class comes in. */ public final class DataSchemaContextTree extends AbstractEffectiveModelContextProvider { - public record NodeAndStack(@NonNull DataSchemaContextNode node, @NonNull SchemaInferenceStack stack) { - public NodeAndStack(final @NonNull DataSchemaContextNode node, final @NonNull SchemaInferenceStack stack) { + public record NodeAndStack(@NonNull DataSchemaContext node, @NonNull SchemaInferenceStack stack) { + public NodeAndStack(final @NonNull DataSchemaContext node, final @NonNull SchemaInferenceStack stack) { this.node = requireNonNull(node); this.stack = requireNonNull(stack); } @@ -43,11 +43,11 @@ public DataSchemaContextTree load(final EffectiveModelContext key) { } }); - private final @NonNull ContainerContextNode root; + private final @NonNull ContainerContext root; private DataSchemaContextTree(final EffectiveModelContext ctx) { super(ctx); - root = new ContainerContextNode(ctx); + root = new ContainerContext(ctx); } public static @NonNull DataSchemaContextTree from(final @NonNull EffectiveModelContext ctx) { @@ -61,7 +61,7 @@ private DataSchemaContextTree(final EffectiveModelContext ctx) { * @return Child node if present, or empty when corresponding child is not found. * @throws NullPointerException if {@code path} is null */ - public @NonNull Optional<@NonNull DataSchemaContextNode> findChild(final @NonNull YangInstanceIdentifier path) { + public @NonNull Optional<@NonNull DataSchemaContext> findChild(final @NonNull YangInstanceIdentifier path) { // Optional.ofNullable() inline due to annotations final var child = root.childByPath(path); return child == null ? Optional.empty() : Optional.of(child); @@ -77,8 +77,8 @@ private DataSchemaContextTree(final EffectiveModelContext ctx) { */ public @NonNull CheckedValue<@NonNull NodeAndStack, @NonNull IllegalArgumentException> enterPath( final YangInstanceIdentifier path) { - final var stack = SchemaInferenceStack.of((EffectiveModelContext) root.getDataSchemaNode()); - DataSchemaContextNode node = root; + final var stack = SchemaInferenceStack.of((EffectiveModelContext) root.dataSchemaNode()); + DataSchemaContext node = root; for (var arg : path.getPathArguments()) { final var child = node instanceof Composite composite ? composite.enterChild(stack, arg) : null; if (child == null) { @@ -90,7 +90,7 @@ private DataSchemaContextTree(final EffectiveModelContext ctx) { return CheckedValue.ofValue(new NodeAndStack(node, stack)); } - public DataSchemaContextNode.@NonNull Composite getRoot() { + public DataSchemaContext.@NonNull Composite getRoot() { return root; } } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/XpathStringParsingPathArgumentBuilder.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/XpathStringParsingPathArgumentBuilder.java index 4e2955f6013..e238a807863 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/XpathStringParsingPathArgumentBuilder.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/XpathStringParsingPathArgumentBuilder.java @@ -22,9 +22,9 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.Composite; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.PathMixin; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.SimpleValue; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.Composite; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.PathMixin; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.SimpleValue; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; @@ -71,7 +71,7 @@ final class XpathStringParsingPathArgumentBuilder implements Mutable { private final SchemaInferenceStack stack; private final String data; - private DataSchemaContextNode current; + private DataSchemaContext current; private QNameModule lastModule; private int offset; @@ -113,7 +113,7 @@ private PathArgument computeNextArgument() { return computeIdentifierWithPredicate(name); } - private DataSchemaContextNode nextContextNode(final QName qname) { + private DataSchemaContext nextContextNode(final QName qname) { current = getChild(current, qname); checkValid(current != null, "%s is not correct schema node identifier.", qname); while (current instanceof PathMixin mixin) { @@ -124,7 +124,7 @@ private DataSchemaContextNode nextContextNode(final QName qname) { return current; } - private static DataSchemaContextNode getChild(final DataSchemaContextNode parent, final QName qname) { + private static DataSchemaContext getChild(final DataSchemaContext parent, final QName qname) { return parent instanceof Composite composite ? composite.childByQName(qname) : null; } @@ -170,7 +170,7 @@ private PathArgument computeIdentifierWithPredicate(final QName name) { // Break-out from method for leaf-list case if (key == null && currentNode instanceof SimpleValue) { checkValid(offset == data.length(), "Leaf argument must be last argument of instance identifier."); - final var currentSchema = currentNode.getDataSchemaNode(); + final var currentSchema = currentNode.dataSchemaNode(); final Object value = codec.deserializeKeyValue(currentSchema, type -> resolveLeafref(currentSchema.getQName(), type), keyValue); @@ -181,7 +181,7 @@ private PathArgument computeIdentifierWithPredicate(final QName name) { throw iae("%s is not correct schema node identifier.", key); } - final Object value = codec.deserializeKeyValue(keyNode.getDataSchemaNode(), + final Object value = codec.deserializeKeyValue(keyNode.dataSchemaNode(), type -> resolveLeafref(key, type), keyValue); keyValues.put(key, value); } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractCompositeContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractCompositeContext.java similarity index 58% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractCompositeContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractCompositeContext.java index 16c9b0607a7..25c2c0cc772 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractCompositeContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractCompositeContext.java @@ -5,37 +5,35 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import static java.util.Objects.requireNonNull; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; -import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.Composite; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.Composite; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; -public abstract sealed class AbstractCompositeContextNode extends AbstractDataSchemaContextNode implements Composite - permits ListItemContextNode, ContainerContextNode { +public abstract sealed class AbstractCompositeContext extends AbstractContext implements Composite + permits ListItemContext, ContainerContext { // FIXME: ImmutableMaps with compare-and-swap updates - private final ConcurrentMap byArg = new ConcurrentHashMap<>(); - private final ConcurrentMap byQName = new ConcurrentHashMap<>(); + private final ConcurrentMap byArg = new ConcurrentHashMap<>(); + private final ConcurrentMap byQName = new ConcurrentHashMap<>(); private final DataNodeContainer container; - AbstractCompositeContextNode(final NodeIdentifier pathStep, final DataNodeContainer container, + AbstractCompositeContext(final NodeIdentifier pathStep, final DataNodeContainer container, final DataSchemaNode schema) { super(pathStep, schema); this.container = requireNonNull(container); } @Override - public final AbstractDataSchemaContextNode childByArg(final PathArgument arg) { + public final AbstractContext childByArg(final PathArgument arg) { final var existing = byArg.get(requireNonNull(arg)); if (existing != null) { return existing; @@ -44,7 +42,7 @@ public final AbstractDataSchemaContextNode childByArg(final PathArgument arg) { } @Override - public final AbstractDataSchemaContextNode childByQName(final QName qname) { + public final AbstractContext childByQName(final QName qname) { var existing = byQName.get(requireNonNull(qname)); if (existing != null) { return existing; @@ -53,17 +51,16 @@ public final AbstractDataSchemaContextNode childByQName(final QName qname) { } @Override - public final DataSchemaContextNode enterChild(final SchemaInferenceStack stack, final QName qname) { + public final AbstractContext enterChild(final SchemaInferenceStack stack, final QName qname) { return pushToStack(stack, childByQName(qname)); } @Override - public final DataSchemaContextNode enterChild(final SchemaInferenceStack stack, final PathArgument arg) { + public final AbstractContext enterChild(final SchemaInferenceStack stack, final PathArgument arg) { return pushToStack(stack, childByArg(arg)); } - private static @Nullable DataSchemaContextNode pushToStack(final SchemaInferenceStack stack, - final @Nullable AbstractDataSchemaContextNode child) { + private static AbstractContext pushToStack(final SchemaInferenceStack stack, final AbstractContext child) { requireNonNull(stack); if (child != null) { child.pushToStack(stack); @@ -71,20 +68,19 @@ public final DataSchemaContextNode enterChild(final SchemaInferenceStack stack, return child; } - private AbstractDataSchemaContextNode fromLocalSchema(final PathArgument child) { + private AbstractContext fromLocalSchema(final PathArgument child) { return fromSchemaAndQNameChecked(container, child.getNodeType()); } - private static AbstractDataSchemaContextNode fromLocalSchemaAndQName(final DataNodeContainer schema, - final QName child) { + private static AbstractContext fromLocalSchemaAndQName(final DataNodeContainer schema, final QName child) { return fromSchemaAndQNameChecked(schema, child); } - private AbstractDataSchemaContextNode register(final AbstractDataSchemaContextNode potential) { + private AbstractContext register(final AbstractContext potential) { if (potential != null) { // FIXME: use putIfAbsent() to make sure we do not perform accidental overrwrites byArg.put(potential.getPathStep(), potential); - for (QName qname : potential.qnameIdentifiers()) { + for (var qname : potential.qnameIdentifiers()) { byQName.put(qname, potential); } } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractDataSchemaContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractContext.java similarity index 69% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractDataSchemaContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractContext.java index 4de531c4b68..b7759e16964 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractDataSchemaContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractContext.java @@ -5,21 +5,19 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; -import java.util.Set; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext; import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; -import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerLike; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -34,20 +32,19 @@ * {@link org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode} and serialization format defined in RFC6020, * since the mapping is not one-to-one. */ -public abstract sealed class AbstractDataSchemaContextNode implements DataSchemaContextNode - permits AbstractMixinContextNode, AbstractCompositeContextNode, - LeafContextNode, LeafListItemContextNode, OpaqueContextNode { - private final @Nullable NodeIdentifier pathStep; +public abstract sealed class AbstractContext implements DataSchemaContext + permits AbstractPathMixinContext, AbstractCompositeContext, LeafContext, LeafListItemContext, OpaqueContext { + private final NodeIdentifier pathStep; final @NonNull DataSchemaNode dataSchemaNode; - AbstractDataSchemaContextNode(final NodeIdentifier pathStep, final DataSchemaNode dataSchemaNode) { + AbstractContext(final NodeIdentifier pathStep, final DataSchemaNode dataSchemaNode) { this.dataSchemaNode = requireNonNull(dataSchemaNode); this.pathStep = pathStep; } @Override - public final DataSchemaNode getDataSchemaNode() { + public final DataSchemaNode dataSchemaNode() { return dataSchemaNode; } @@ -56,7 +53,7 @@ public final NodeIdentifier pathStep() { return pathStep; } - Set qnameIdentifiers() { + ImmutableSet qnameIdentifiers() { return ImmutableSet.of(dataSchemaNode.getQName()); } @@ -70,21 +67,21 @@ void pushToStack(final @NonNull SchemaInferenceStack stack) { stack.enterSchemaTree(dataSchemaNode.getQName()); } - static AbstractDataSchemaContextNode fromSchemaAndQNameChecked(final DataNodeContainer schema, final QName child) { + static AbstractContext fromSchemaAndQNameChecked(final DataNodeContainer schema, final QName child) { return lenientOf(findChildSchemaNode(schema, child)); } private static DataSchemaNode findChildSchemaNode(final DataNodeContainer parent, final QName child) { - final DataSchemaNode potential = parent.dataChildByName(child); + final var potential = parent.dataChildByName(child); return potential == null ? findChoice(Iterables.filter(parent.getChildNodes(), ChoiceSchemaNode.class), child) : potential; } // FIXME: this looks like it should be a Predicate on a stream with findFirst() private static ChoiceSchemaNode findChoice(final Iterable choices, final QName child) { - for (ChoiceSchemaNode choice : choices) { + for (var choice : choices) { // FIXME: this looks weird: what are we looking for again? - for (CaseSchemaNode caze : choice.getCases()) { + for (var caze : choice.getCases()) { if (findChildSchemaNode(caze, child) != null) { return choice; } @@ -93,53 +90,53 @@ private static ChoiceSchemaNode findChoice(final Iterable choi return null; } - static @NonNull AbstractDataSchemaContextNode of(final @NonNull DataSchemaNode schema) { + static @NonNull AbstractContext of(final @NonNull DataSchemaNode schema) { if (schema instanceof ContainerLike containerLike) { - return new ContainerContextNode(containerLike); + return new ContainerContext(containerLike); } else if (schema instanceof ListSchemaNode list) { return fromListSchemaNode(list); } else if (schema instanceof LeafSchemaNode leaf) { - return new LeafContextNode(leaf); + return new LeafContext(leaf); } else if (schema instanceof ChoiceSchemaNode choice) { - return new ChoiceContextNode(choice); + return new ChoiceContext(choice); } else if (schema instanceof LeafListSchemaNode leafList) { - return new LeafListContextNode(leafList); + return new LeafListContext(leafList); } else if (schema instanceof AnydataSchemaNode anydata) { - return new OpaqueContextNode(anydata); + return new OpaqueContext(anydata); } else if (schema instanceof AnyxmlSchemaNode anyxml) { - return new OpaqueContextNode(anyxml); + return new OpaqueContext(anyxml); } else { throw new IllegalStateException("Unhandled schema " + schema); } } // FIXME: do we tolerate null argument? do we tolerate unknown subclasses? - private static @Nullable AbstractDataSchemaContextNode lenientOf(final @Nullable DataSchemaNode schema) { + private static @Nullable AbstractContext lenientOf(final @Nullable DataSchemaNode schema) { if (schema instanceof ContainerLike containerLike) { - return new ContainerContextNode(containerLike); + return new ContainerContext(containerLike); } else if (schema instanceof ListSchemaNode list) { return fromListSchemaNode(list); } else if (schema instanceof LeafSchemaNode leaf) { - return new LeafContextNode(leaf); + return new LeafContext(leaf); } else if (schema instanceof ChoiceSchemaNode choice) { - return new ChoiceContextNode(choice); + return new ChoiceContext(choice); } else if (schema instanceof LeafListSchemaNode leafList) { - return new LeafListContextNode(leafList); + return new LeafListContext(leafList); } else if (schema instanceof AnydataSchemaNode anydata) { - return new OpaqueContextNode(anydata); + return new OpaqueContext(anydata); } else if (schema instanceof AnyxmlSchemaNode anyxml) { - return new OpaqueContextNode(anyxml); + return new OpaqueContext(anyxml); } else { return null; } } - private static @NonNull AbstractDataSchemaContextNode fromListSchemaNode(final ListSchemaNode potential) { + private static @NonNull AbstractContext fromListSchemaNode(final ListSchemaNode potential) { var keyDefinition = potential.getKeyDefinition(); if (keyDefinition.isEmpty()) { - return new ListContextNode(potential); + return new ListContext(potential); } else { - return new MapContextNode(potential); + return new MapContext(potential); } } } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractListLikeContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractListLikeContext.java similarity index 58% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractListLikeContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractListLikeContext.java index 895b208a284..4ec4f228e15 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractListLikeContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractListLikeContext.java @@ -5,45 +5,47 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import static java.util.Objects.requireNonNull; -import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; /** - * An {@link AbstractMixinContextNode} which corresponding to a {@code list} or {@code leaf-list} node. NormalizedNode - * representation of these nodes is similar to JSON encoding and therefore we have two {@link DataSchemaContextNode} - * levels backed by a single {@link DataSchemaNode}. + * An {@link AbstractPathMixinContext} which corresponding to a {@code list} or {@code leaf-list} node. NormalizedNode + * representation of these nodes is similar to JSON encoding and therefore we have two {@link DataSchemaContext} levels + * backed by a single {@link DataSchemaNode}. */ -abstract sealed class AbstractListLikeContextNode extends AbstractMixinContextNode - permits LeafListContextNode, ListContextNode, MapContextNode { - private final @NonNull AbstractDataSchemaContextNode child; +abstract sealed class AbstractListLikeContext extends AbstractPathMixinContext + permits LeafListContext, ListContext, MapContext { + private final AbstractContext child; - AbstractListLikeContextNode(final DataSchemaNode schema, final AbstractDataSchemaContextNode child) { + AbstractListLikeContext(final DataSchemaNode schema, final AbstractContext child) { super(schema); this.child = requireNonNull(child); } @Override - public final AbstractDataSchemaContextNode childByQName(final QName qname) { + public final AbstractContext childByQName(final QName qname) { return qname.equals(dataSchemaNode.getQName()) ? child : null; } + @Override + public abstract AbstractContext childByArg(PathArgument arg); + // Stack is already pointing to the corresponding statement, now we are just working with the child @Override - public final AbstractDataSchemaContextNode enterChild(final SchemaInferenceStack stack, final QName qname) { + public final AbstractContext enterChild(final SchemaInferenceStack stack, final QName qname) { requireNonNull(stack); return childByQName(qname); } @Override - public final DataSchemaContextNode enterChild(final SchemaInferenceStack stack, final PathArgument arg) { + public final AbstractContext enterChild(final SchemaInferenceStack stack, final PathArgument arg) { requireNonNull(stack); return childByArg(arg); } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractMixinContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractPathMixinContext.java similarity index 65% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractMixinContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractPathMixinContext.java index 5c3a84e229a..924d432d28b 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/AbstractMixinContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/AbstractPathMixinContext.java @@ -5,15 +5,15 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.PathMixin; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.PathMixin; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -public abstract sealed class AbstractMixinContextNode extends AbstractDataSchemaContextNode implements PathMixin - permits AbstractListLikeContextNode, ChoiceContextNode { - AbstractMixinContextNode(final DataSchemaNode schema) { +public abstract sealed class AbstractPathMixinContext extends AbstractContext implements PathMixin + permits AbstractListLikeContext, ChoiceContext { + AbstractPathMixinContext(final DataSchemaNode schema) { super(NodeIdentifier.create(schema.getQName()), schema); } } \ No newline at end of file diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ChoiceContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ChoiceContext.java similarity index 60% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ChoiceContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ChoiceContext.java index 4d55778cac0..aa5387dc4f9 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ChoiceContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ChoiceContext.java @@ -5,36 +5,33 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import static com.google.common.base.Verify.verifyNotNull; import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableMap; -import java.util.Set; -import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.jdt.annotation.Nullable; +import com.google.common.collect.ImmutableSet; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; -final class ChoiceContextNode extends AbstractMixinContextNode { - private final ImmutableMap byArg; - private final ImmutableMap byQName; - private final ImmutableMap childToCase; +final class ChoiceContext extends AbstractPathMixinContext { + private final ImmutableMap byArg; + private final ImmutableMap byQName; + private final ImmutableMap childToCase; - ChoiceContextNode(final ChoiceSchemaNode schema) { + ChoiceContext(final ChoiceSchemaNode schema) { super(schema); - final var childToCaseBuilder = ImmutableMap.builder(); - final var byQNameBuilder = ImmutableMap.builder(); - final var byArgBuilder = ImmutableMap.builder(); + final var childToCaseBuilder = ImmutableMap.builder(); + final var byQNameBuilder = ImmutableMap.builder(); + final var byArgBuilder = ImmutableMap.builder(); for (var caze : schema.getCases()) { for (var cazeChild : caze.getChildNodes()) { - final var childOp = AbstractDataSchemaContextNode.of(cazeChild); + final var childOp = AbstractContext.of(cazeChild); byArgBuilder.put(childOp.getPathStep(), childOp); childToCaseBuilder.put(childOp, caze.getQName()); for (QName qname : childOp.qnameIdentifiers()) { @@ -49,37 +46,36 @@ final class ChoiceContextNode extends AbstractMixinContextNode { } @Override - public AbstractDataSchemaContextNode childByArg(final PathArgument arg) { + public AbstractContext childByArg(final PathArgument arg) { return byArg.get(requireNonNull(arg)); } @Override - public AbstractDataSchemaContextNode childByQName(final QName child) { + public AbstractContext childByQName(final QName child) { return byQName.get(requireNonNull(child)); } @Override - Set qnameIdentifiers() { + ImmutableSet qnameIdentifiers() { return byQName.keySet(); } @Override - public DataSchemaContextNode enterChild(final SchemaInferenceStack stack, final QName qname) { + public AbstractContext enterChild(final SchemaInferenceStack stack, final QName qname) { return pushToStack(stack, childByQName(qname)); } @Override - public DataSchemaContextNode enterChild(final SchemaInferenceStack stack, final PathArgument arg) { + public AbstractContext enterChild(final SchemaInferenceStack stack, final PathArgument arg) { return pushToStack(stack, childByArg(arg)); } @Override - void pushToStack(final @NonNull SchemaInferenceStack stack) { + void pushToStack(final SchemaInferenceStack stack) { stack.enterChoice(dataSchemaNode.getQName()); } - private @Nullable DataSchemaContextNode pushToStack(final SchemaInferenceStack stack, - final @Nullable AbstractDataSchemaContextNode child) { + private AbstractContext pushToStack(final SchemaInferenceStack stack, final AbstractContext child) { requireNonNull(stack); if (child != null) { final var caseName = verifyNotNull(childToCase.get(child), "No case statement for %s in %s", child, this); diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ContainerContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ContainerContext.java similarity index 72% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ContainerContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ContainerContext.java index d0df8ebabdc..884470f252e 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ContainerContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ContainerContext.java @@ -5,13 +5,13 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.model.api.ContainerLike; -public final class ContainerContextNode extends AbstractCompositeContextNode { - public ContainerContextNode(final ContainerLike schema) { +public final class ContainerContext extends AbstractCompositeContext { + public ContainerContext(final ContainerLike schema) { super(NodeIdentifier.create(schema.getQName()), schema, schema); } } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/LeafContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/LeafContext.java similarity index 72% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/LeafContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/LeafContext.java index 785194179ac..a0b4debfd0b 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/LeafContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/LeafContext.java @@ -5,14 +5,14 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.SimpleValue; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.SimpleValue; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; -public final class LeafContextNode extends AbstractDataSchemaContextNode implements SimpleValue { - LeafContextNode(final LeafSchemaNode schema) { +public final class LeafContext extends AbstractContext implements SimpleValue { + LeafContext(final LeafSchemaNode schema) { super(NodeIdentifier.create(schema.getQName()), schema); } } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/LeafListContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/LeafListContext.java similarity index 68% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/LeafListContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/LeafListContext.java index 7cd323cb8bd..054a55d0848 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/LeafListContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/LeafListContext.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import static java.util.Objects.requireNonNull; @@ -13,13 +13,13 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; -final class LeafListContextNode extends AbstractListLikeContextNode { - LeafListContextNode(final LeafListSchemaNode schema) { - super(schema, new LeafListItemContextNode(schema)); +final class LeafListContext extends AbstractListLikeContext { + LeafListContext(final LeafListSchemaNode schema) { + super(schema, new LeafListItemContext(schema)); } @Override - public AbstractDataSchemaContextNode childByArg(final PathArgument arg) { + public AbstractContext childByArg(final PathArgument arg) { return requireNonNull(arg) instanceof NodeWithValue ? childByQName(arg.getNodeType()) : null; } } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/LeafListItemContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/LeafListItemContext.java similarity index 72% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/LeafListItemContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/LeafListItemContext.java index 7a287d8eb5b..f56076a1f1e 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/LeafListItemContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/LeafListItemContext.java @@ -5,14 +5,14 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.SimpleValue; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContext.SimpleValue; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; -public final class LeafListItemContextNode extends AbstractDataSchemaContextNode implements SimpleValue { - LeafListItemContextNode(final LeafListSchemaNode schema) { +public final class LeafListItemContext extends AbstractContext implements SimpleValue { + LeafListItemContext(final LeafListSchemaNode schema) { super(null, schema); } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ListContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ListContext.java similarity index 71% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ListContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ListContext.java index ff9b5b092bb..2c9d01ebf96 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ListContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ListContext.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import static java.util.Objects.requireNonNull; @@ -13,15 +13,15 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; -final class ListContextNode extends AbstractListLikeContextNode { - ListContextNode(final ListSchemaNode schema) { +final class ListContext extends AbstractListLikeContext { + ListContext(final ListSchemaNode schema) { // FIXME: yeah, NodeIdentifier is being used for individual nodes, but it really should not // (they are not addressable) - super(schema, new ListItemContextNode(NodeIdentifier.create(schema.getQName()), schema)); + super(schema, new ListItemContext(NodeIdentifier.create(schema.getQName()), schema)); } @Override - public AbstractDataSchemaContextNode childByArg(final PathArgument arg) { + public AbstractContext childByArg(final PathArgument arg) { return requireNonNull(arg) instanceof NodeIdentifier ? childByQName(arg.getNodeType()) : null; } } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ListItemContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ListItemContext.java similarity index 80% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ListItemContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ListItemContext.java index 47ed32d3fa2..da3a708ed02 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/ListItemContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/ListItemContext.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; @@ -16,8 +16,8 @@ /** * Individual list items -- be {@link MapEntryNode} or {@link UnkeyedListEntryNode}. */ -final class ListItemContextNode extends AbstractCompositeContextNode { - ListItemContextNode(final NodeIdentifier pathStep, final ListSchemaNode schema) { +final class ListItemContext extends AbstractCompositeContext { + ListItemContext(final NodeIdentifier pathStep, final ListSchemaNode schema) { super(pathStep, schema, schema); } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/MapContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/MapContext.java similarity index 70% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/MapContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/MapContext.java index a93e96386cb..a31ab9d9114 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/MapContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/MapContext.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import static java.util.Objects.requireNonNull; @@ -13,13 +13,13 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; -final class MapContextNode extends AbstractListLikeContextNode { - MapContextNode(final ListSchemaNode list) { - super(list, new ListItemContextNode(null, list)); +final class MapContext extends AbstractListLikeContext { + MapContext(final ListSchemaNode list) { + super(list, new ListItemContext(null, list)); } @Override - public AbstractDataSchemaContextNode childByArg(final PathArgument arg) { + public AbstractContext childByArg(final PathArgument arg) { return requireNonNull(arg) instanceof NodeIdentifierWithPredicates ? childByQName(arg.getNodeType()) : null; } } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/OpaqueContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/OpaqueContext.java similarity index 74% rename from data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/OpaqueContextNode.java rename to data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/OpaqueContext.java index 5ede935c4df..50591ba052e 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/model/OpaqueContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/context/OpaqueContext.java @@ -5,13 +5,13 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -final class OpaqueContextNode extends AbstractDataSchemaContextNode { - OpaqueContextNode(final DataSchemaNode schema) { +final class OpaqueContext extends AbstractContext { + OpaqueContext(final DataSchemaNode schema) { super(NodeIdentifier.create(schema.getQName()), schema); } } diff --git a/data/yang-data-util/src/test/java/org/opendaylight/yangtools/yang/data/util/impl/model/YT1412Test.java b/data/yang-data-util/src/test/java/org/opendaylight/yangtools/yang/data/util/impl/context/YT1412Test.java similarity index 77% rename from data/yang-data-util/src/test/java/org/opendaylight/yangtools/yang/data/util/impl/model/YT1412Test.java rename to data/yang-data-util/src/test/java/org/opendaylight/yangtools/yang/data/util/impl/context/YT1412Test.java index 825eacc1265..70f8bff32c9 100644 --- a/data/yang-data-util/src/test/java/org/opendaylight/yangtools/yang/data/util/impl/model/YT1412Test.java +++ b/data/yang-data-util/src/test/java/org/opendaylight/yangtools/yang/data/util/impl/context/YT1412Test.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.data.util.impl.model; +package org.opendaylight.yangtools.yang.data.util.impl.context; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; @@ -51,16 +51,16 @@ static void cleanup() { @Test void testEnterThroughChoice() { - final var one = assertInstanceOf(ContainerContextNode.class, CONTEXT.getRoot().enterChild(stack, ONE)); + final var one = assertInstanceOf(ContainerContext.class, CONTEXT.getRoot().enterChild(stack, ONE)); assertInstanceOf(ContainerEffectiveStatement.class, stack.currentStatement()); - final var two = assertInstanceOf(ChoiceContextNode.class, one.enterChild(stack, FOUR)); + final var two = assertInstanceOf(ChoiceContext.class, one.enterChild(stack, FOUR)); assertInstanceOf(ChoiceEffectiveStatement.class, stack.currentStatement()); - final var three = assertInstanceOf(ChoiceContextNode.class, two.enterChild(stack, FOUR)); + final var three = assertInstanceOf(ChoiceContext.class, two.enterChild(stack, FOUR)); assertInstanceOf(ChoiceEffectiveStatement.class, stack.currentStatement()); - assertInstanceOf(LeafContextNode.class, three.enterChild(stack, FOUR)); + assertInstanceOf(LeafContext.class, three.enterChild(stack, FOUR)); assertInstanceOf(LeafEffectiveStatement.class, stack.currentStatement()); assertEquals(Absolute.of(ONE, TWO, THREE, THREE, FOUR, FOUR), stack.toSchemaNodeIdentifier()); @@ -68,13 +68,13 @@ void testEnterThroughChoice() { @Test void testEnterThroughAugment() { - final var one = assertInstanceOf(ContainerContextNode.class, CONTEXT.getRoot().enterChild(stack, ONE)); + final var one = assertInstanceOf(ContainerContext.class, CONTEXT.getRoot().enterChild(stack, ONE)); assertInstanceOf(ContainerEffectiveStatement.class, stack.currentStatement()); - final var five = assertInstanceOf(ListContextNode.class, one.enterChild(stack, FIVE)); + final var five = assertInstanceOf(ListContext.class, one.enterChild(stack, FIVE)); assertInstanceOf(ListEffectiveStatement.class, stack.currentStatement()); - assertInstanceOf(ListItemContextNode.class, five.enterChild(stack, FIVE)); + assertInstanceOf(ListItemContext.class, five.enterChild(stack, FIVE)); assertInstanceOf(ListEffectiveStatement.class, stack.currentStatement()); assertEquals(Absolute.of(ONE, FIVE), stack.toSchemaNodeIdentifier()); @@ -82,16 +82,16 @@ void testEnterThroughAugment() { @Test void testEnterThroughAugmentChoiceAugment() { - final var one = assertInstanceOf(ContainerContextNode.class, CONTEXT.getRoot().enterChild(stack, ONE)); + final var one = assertInstanceOf(ContainerContext.class, CONTEXT.getRoot().enterChild(stack, ONE)); assertInstanceOf(ContainerEffectiveStatement.class, stack.currentStatement()); - final var two = assertInstanceOf(ChoiceContextNode.class, one.enterChild(stack, SIX)); + final var two = assertInstanceOf(ChoiceContext.class, one.enterChild(stack, SIX)); assertInstanceOf(ChoiceEffectiveStatement.class, stack.currentStatement()); - final var three = assertInstanceOf(ChoiceContextNode.class, two.enterChild(stack, SIX)); + final var three = assertInstanceOf(ChoiceContext.class, two.enterChild(stack, SIX)); assertInstanceOf(ChoiceEffectiveStatement.class, stack.currentStatement()); - assertInstanceOf(LeafContextNode.class, three.enterChild(stack, SIX)); + assertInstanceOf(LeafContext.class, three.enterChild(stack, SIX)); assertInstanceOf(LeafEffectiveStatement.class, stack.currentStatement()); assertEquals(Absolute.of(ONE, TWO, THREE, THREE, SIX, SIX), stack.toSchemaNodeIdentifier()); @@ -101,7 +101,7 @@ void testEnterThroughAugmentChoiceAugment() { void testEnterChoicePath() { final var result = CONTEXT.enterPath(YangInstanceIdentifier.of(ONE, TWO, THREE, FOUR)).orElseThrow(); - assertInstanceOf(LeafContextNode.class, result.node()); + assertInstanceOf(LeafContext.class, result.node()); assertEquals(Absolute.of(ONE, TWO, THREE, THREE, FOUR, FOUR), result.stack().toSchemaNodeIdentifier()); } @@ -109,7 +109,7 @@ void testEnterChoicePath() { void testEnterAugmentPath() { final var result = CONTEXT.enterPath(YangInstanceIdentifier.of(ONE, FIVE, FIVE)).orElseThrow(); - assertInstanceOf(ListItemContextNode.class, result.node()); + assertInstanceOf(ListItemContext.class, result.node()); assertEquals(Absolute.of(ONE, FIVE), result.stack().toSchemaNodeIdentifier()); } @@ -117,7 +117,7 @@ void testEnterAugmentPath() { void testEnterAugmentChoicePath() { final var result = CONTEXT.enterPath(YangInstanceIdentifier.of(ONE, TWO, THREE, SIX)).orElseThrow(); - assertInstanceOf(LeafContextNode.class, result.node()); + assertInstanceOf(LeafContext.class, result.node()); assertEquals(Absolute.of(ONE, TWO, THREE, THREE, SIX, SIX), result.stack().toSchemaNodeIdentifier()); } }