Split out DataSchemaContextNode.Composite 92/106092/3
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 21 May 2023 00:03:58 +0000 (02:03 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 21 May 2023 00:28:23 +0000 (02:28 +0200)
Reduce the number of possible implementations of getChild()/enterChild()
by encapsulating them in a specialized interface.

JIRA: YANGTOOLS-1413
Change-Id: Ib3817ee143c99a0f3ba30bea6c2a9aa3b961749c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
13 files changed:
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextNode.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextTree.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/XpathStringParsingPathArgumentBuilder.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/AbstractCompositeContextNode.java [new file with mode: 0644]
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/AbstractDataSchemaContextNode.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/AbstractInteriorContextNode.java [deleted file]
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/AbstractLeafContextNode.java [deleted file]
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/AbstractMixinContextNode.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/DataContainerContextNode.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/LeafContextNode.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/LeafListEntryContextNode.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/OpaqueContextNode.java

index 3f637be1e7743b0bef1d886962b1f315c749bce4..f853563c5e773b540fc90359a62aa0d689085d88 100644 (file)
@@ -23,6 +23,7 @@ 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.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.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.util.LeafrefResolver;
@@ -48,7 +49,7 @@ public abstract class AbstractStringInstanceIdentifierCodec extends AbstractName
         DataSchemaContextNode current = getDataContextTree().getRoot();
         QNameModule lastModule = null;
         for (var arg : data.getPathArguments()) {
-            current = current.getChild(arg);
+            current = current instanceof Composite composite ? composite.getChild(arg) : null;
             checkArgument(current != null, "Invalid input %s: schema for argument %s (after %s) not found", data, arg,
                     sb);
 
index 9ccabc384b257b6415ed3712b7fd34c358138b02..ac6579dc2b7cf7a28cb95dea3f3b854d9acfb7ad 100644 (file)
@@ -21,8 +21,10 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 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.PathMixin;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.SimpleValue;
+import org.opendaylight.yangtools.yang.data.util.impl.legacy.AbstractCompositeContextNode;
 import org.opendaylight.yangtools.yang.data.util.impl.legacy.AbstractDataSchemaContextNode;
 import org.opendaylight.yangtools.yang.data.util.impl.legacy.AbstractMixinContextNode;
 import org.opendaylight.yangtools.yang.data.util.impl.legacy.LeafContextNode;
@@ -38,7 +40,91 @@ import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
  * {@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, PathMixin, SimpleValue {
+public sealed interface DataSchemaContextNode permits AbstractDataSchemaContextNode, Composite, PathMixin, SimpleValue {
+    /**
+     * A {@link DataSchemaContextNode} containing other {@link DataSchemaContextNode}s.
+     */
+    sealed interface Composite extends DataSchemaContextNode permits AbstractCompositeContextNode {
+        /**
+         * Find a child node identifier by its {@link PathArgument}.
+         *
+         * @param child Child path argument
+         * @return A child node, or null if not found
+         */
+        // FIXME: YANGTOOLS-1413: document PathArgument type mismatch, nullness and also rename it to 'childForArg'
+        @Nullable DataSchemaContextNode getChild(PathArgument child);
+
+        /**
+         * Find a child node identifier by its {code data tree} {@link QName}. This method returns intermediate nodes
+         * significant from {@link YangInstanceIdentifier} hierarchy of {@link PathArgument}s. If the returned node
+         * indicates is also a {@link PathMixin}, it represents a {@link NormalizedNode} encapsulation which is not
+         * visible in RFC7950 XML encoding, and a further call to this method with the same {@code child} argument will
+         * provide the next step.
+         *
+         * @param child Child data tree QName
+         * @return A child node, or null if not found
+         */
+        // FIXME: YANGTOOLS-1413: document child == null, also rename to 'childForQName'
+        @Nullable DataSchemaContextNode getChild(QName child);
+
+        /**
+         * Find a child node as identified by a {@link YangInstanceIdentifier} relative to this node.
+         *
+         * @param path Path towards the child node
+         * @return Child node if present, or empty when corresponding child is not found.
+         * @throws NullPointerException if {@code path} is null
+         */
+        // FIXME: YANGTOOLS-1413: rename add a childForPath() method and rename this to 'findChildForPath'
+        default @NonNull Optional<@NonNull DataSchemaContextNode> findChild(
+                final @NonNull YangInstanceIdentifier path) {
+            final var it = path.getPathArguments().iterator();
+            if (!it.hasNext()) {
+                return Optional.of(this);
+            }
+
+            var current = this;
+            while (true) {
+                final var child = current.getChild(it.next());
+                if (child == null) {
+                    return Optional.empty();
+                }
+                if (!it.hasNext()) {
+                    return Optional.of(child);
+                }
+                if (!(child instanceof Composite compositeChild)) {
+                    return Optional.empty();
+                }
+                current = compositeChild;
+            }
+        }
+
+        /**
+         * Attempt to enter a child {@link DataSchemaContextNode} 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.
+         *
+         * @param stack {@link SchemaInferenceStack} to update
+         * @param child Child QName
+         * @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);
+
+        /**
+         * Attempt to enter a child {@link DataSchemaContextNode} 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.
+         *
+         * @param stack {@link SchemaInferenceStack} to update
+         * @param child Child path argument
+         * @return A DataSchemaContextNode for the specified child
+         * @throws NullPointerException if any argument is {@code null}
+         */
+        @Nullable DataSchemaContextNode enterChild(SchemaInferenceStack stack, PathArgument child);
+    }
+
     /**
     * This node is a {@link NormalizedNode} intermediate, not represented in RFC7950 XML encoding. This is typically
     * one of
@@ -95,71 +181,4 @@ public sealed interface DataSchemaContextNode permits AbstractDataSchemaContextN
         }
         throw new UnsupportedOperationException(this + " does not have a fixed path step");
     }
-
-    /**
-     * Find a child node identifier by its {@link PathArgument}.
-     *
-     * @param child Child path argument
-     * @return A child node, or null if not found
-     */
-    // FIXME: YANGTOOLS-1413: document PathArgument type mismatch, nullness and also rename it to 'childForArg'
-    @Nullable DataSchemaContextNode getChild(PathArgument child);
-
-    /**
-     * Find a child node identifier by its {code data tree} {@link QName}. This method returns intermediate nodes
-     * significant from {@link YangInstanceIdentifier} hierarchy of {@link PathArgument}s. If the returned node
-     * indicates is also a {@link PathMixin}, it represents a {@link NormalizedNode} encapsulation which is not visible
-     * in RFC7950 XML encoding, and a further call to this method with the same {@code child} argument will provide the
-     * next step.
-     *
-     * @param child Child data tree QName
-     * @return A child node, or null if not found
-     */
-    // FIXME: YANGTOOLS-1413: document child == null, also rename to 'childForQName'
-    @Nullable DataSchemaContextNode getChild(QName child);
-
-    /**
-     * Find a child node as identified by a {@link YangInstanceIdentifier} relative to this node.
-     *
-     * @param path Path towards the child node
-     * @return Child node if present, or empty when corresponding child is not found.
-     * @throws NullPointerException if {@code path} is null
-     */
-    // FIXME: YANGTOOLS-1413: rename add a childForPath() method and rename this to 'findChildForPath'
-    default @NonNull Optional<@NonNull DataSchemaContextNode> findChild(final @NonNull YangInstanceIdentifier path) {
-        var currentOp = this;
-        for (var arg : path.getPathArguments()) {
-            currentOp = currentOp.getChild(arg);
-            if (currentOp == null) {
-                return Optional.empty();
-            }
-        }
-        return Optional.of(currentOp);
-    }
-
-    /**
-     * Attempt to enter a child {@link DataSchemaContextNode} 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.
-     *
-     * @param stack {@link SchemaInferenceStack} to update
-     * @param child Child QName
-     * @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);
-
-    /**
-     * Attempt to enter a child {@link DataSchemaContextNode} 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.
-     *
-     * @param stack {@link SchemaInferenceStack} to update
-     * @param child Child path argument
-     * @return A DataSchemaContextNode for the specified child
-     * @throws NullPointerException if any argument is {@code null}
-     */
-    @Nullable DataSchemaContextNode enterChild(SchemaInferenceStack stack, PathArgument child);
 }
index d1454bafd4c65db8ec7942495e8f9a843d36d6ea..807a0ce4402722a41f4c37df95f3e3dab54559ba 100644 (file)
@@ -17,6 +17,7 @@ import org.eclipse.jdt.annotation.NonNull;
 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.legacy.ContainerContextNode;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.spi.AbstractEffectiveModelContextProvider;
@@ -77,7 +78,7 @@ public final class DataSchemaContextTree extends AbstractEffectiveModelContextPr
         final var stack = SchemaInferenceStack.of((EffectiveModelContext) root.getDataSchemaNode());
         DataSchemaContextNode node = root;
         for (var arg : path.getPathArguments()) {
-            final var child = node.enterChild(stack, arg);
+            final var child = node instanceof Composite composite ? composite.enterChild(stack, arg) : null;
             if (child == null) {
                 return CheckedValue.ofException(new IllegalArgumentException("Failed to find " + arg + " in " + node));
             }
@@ -87,7 +88,7 @@ public final class DataSchemaContextTree extends AbstractEffectiveModelContextPr
         return CheckedValue.ofValue(new NodeAndStack(node, stack));
     }
 
-    public @NonNull DataSchemaContextNode getRoot() {
+    public DataSchemaContextNode.@NonNull Composite getRoot() {
         return root;
     }
 }
index 881912dca7f36edb3836c08ef6c2b5cb75049f3c..29b9998a31f834fc641d1e8ecf5123f34bac1452 100644 (file)
@@ -22,6 +22,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent
 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.model.api.TypeDefinition;
@@ -113,16 +114,20 @@ final class XpathStringParsingPathArgumentBuilder implements Mutable {
     }
 
     private DataSchemaContextNode nextContextNode(final QName name) {
-        current = current.getChild(name);
+        current = getChild(current, name);
         checkValid(current != null, "%s is not correct schema node identifier.", name);
         while (current instanceof PathMixin mixin) {
             product.add(mixin.mixinPathStep());
-            current = current.getChild(name);
+            current = getChild(current, name);
         }
         stack.enterDataTree(name);
         return current;
     }
 
+    private static DataSchemaContextNode getChild(final DataSchemaContextNode parent, final QName name) {
+        return parent instanceof Composite composite ? composite.getChild(name) : null;
+    }
+
     /**
      * Creates path argument with predicates and sets offset
      * to end of path argument.
@@ -171,8 +176,11 @@ final class XpathStringParsingPathArgumentBuilder implements Mutable {
                     type -> resolveLeafref(currentSchema.getQName(), type), keyValue);
                 return new NodeWithValue<>(name, value);
             }
-            final DataSchemaContextNode keyNode = currentNode.getChild(key);
-            checkValid(keyNode != null, "%s is not correct schema node identifier.", key);
+            final var keyNode = currentNode instanceof Composite composite ? composite.getChild(key) : null;
+            if (keyNode == null) {
+                throw iae("%s is not correct schema node identifier.", key);
+            }
+
             final Object value = codec.deserializeKeyValue(keyNode.getDataSchemaNode(),
                 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/legacy/AbstractCompositeContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/AbstractCompositeContextNode.java
new file mode 100644 (file)
index 0000000..e90e1d0
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.legacy;
+
+import static java.util.Objects.requireNonNull;
+
+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.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.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
+
+public abstract sealed class AbstractCompositeContextNode extends AbstractDataSchemaContextNode implements Composite
+        permits AbstractMixinContextNode, DataContainerContextNode {
+    AbstractCompositeContextNode(final NodeIdentifier pathStep, final DataSchemaNode schema) {
+        super(pathStep, schema);
+    }
+
+    @Override
+    public final DataSchemaContextNode enterChild(final SchemaInferenceStack stack, final QName child) {
+        return enterChild(requireNonNull(child), requireNonNull(stack));
+    }
+
+    @Override
+    public final DataSchemaContextNode enterChild(final SchemaInferenceStack stack,
+            final PathArgument child) {
+        return enterChild(requireNonNull(child), requireNonNull(stack));
+    }
+
+    abstract @Nullable DataSchemaContextNode enterChild(@NonNull QName child, @NonNull SchemaInferenceStack stack);
+
+    abstract @Nullable DataSchemaContextNode enterChild(@NonNull PathArgument child,
+        @NonNull SchemaInferenceStack stack);
+}
\ No newline at end of file
index 9f1af08a31dea76ad29ed19c758daf269ed893c8..5f7b2c71bbf72154bea0e8fd8c8d17c0f2da05be 100644 (file)
@@ -16,7 +16,6 @@ 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.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode;
 import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
@@ -36,7 +35,7 @@ import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
  * since the mapping is not one-to-one.
  */
 public abstract sealed class AbstractDataSchemaContextNode implements DataSchemaContextNode
-        permits AbstractInteriorContextNode, AbstractLeafContextNode {
+        permits AbstractCompositeContextNode, LeafContextNode, LeafListEntryContextNode, OpaqueContextNode {
     private final @Nullable NodeIdentifier pathStep;
 
     final @NonNull DataSchemaNode dataSchemaNode;
@@ -60,22 +59,6 @@ public abstract sealed class AbstractDataSchemaContextNode implements DataSchema
         return ImmutableSet.of(dataSchemaNode.getQName());
     }
 
-    @Override
-    public final @Nullable DataSchemaContextNode enterChild(final SchemaInferenceStack stack, final QName child) {
-        return enterChild(requireNonNull(child), requireNonNull(stack));
-    }
-
-    @Override
-    public final @Nullable DataSchemaContextNode enterChild(final SchemaInferenceStack stack,
-            final PathArgument child) {
-        return enterChild(requireNonNull(child), requireNonNull(stack));
-    }
-
-    abstract @Nullable DataSchemaContextNode enterChild(@NonNull QName child, @NonNull SchemaInferenceStack stack);
-
-    abstract @Nullable DataSchemaContextNode enterChild(@NonNull PathArgument child,
-        @NonNull SchemaInferenceStack stack);
-
     /**
      * Push this node into specified {@link SchemaInferenceStack}.
      *
diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/AbstractInteriorContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/AbstractInteriorContextNode.java
deleted file mode 100644 (file)
index f2ae376..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * 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.legacy;
-
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-
-abstract sealed class AbstractInteriorContextNode extends AbstractDataSchemaContextNode
-        permits AbstractMixinContextNode, DataContainerContextNode {
-    AbstractInteriorContextNode(final NodeIdentifier pathStep, final DataSchemaNode schema) {
-        super(pathStep, schema);
-    }
-}
\ No newline at end of file
diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/AbstractLeafContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/impl/legacy/AbstractLeafContextNode.java
deleted file mode 100644 (file)
index 71df2bf..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * 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.legacy;
-
-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.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
-
-abstract sealed class AbstractLeafContextNode extends AbstractDataSchemaContextNode
-        permits LeafContextNode, LeafListEntryContextNode, OpaqueContextNode {
-    AbstractLeafContextNode(final NodeIdentifier pathStep, final DataSchemaNode schema) {
-        super(pathStep, schema);
-    }
-
-    @Override
-    public final DataSchemaContextNode getChild(final PathArgument child) {
-        return null;
-    }
-
-    @Override
-    public final DataSchemaContextNode getChild(final QName child) {
-        return null;
-    }
-
-    @Override
-    protected final DataSchemaContextNode enterChild(final QName child, final SchemaInferenceStack stack) {
-        return null;
-    }
-
-    @Override
-    protected final DataSchemaContextNode enterChild(final PathArgument child, final SchemaInferenceStack stack) {
-        return null;
-    }
-}
index be0d221a7217b6af6c482c9e26e0a1dd9f581273..42c802e6fcd4abd3b721e35eefc1f336ed454833 100644 (file)
@@ -11,7 +11,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.PathMixin;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 
-public abstract sealed class AbstractMixinContextNode extends AbstractInteriorContextNode implements PathMixin
+public abstract sealed class AbstractMixinContextNode extends AbstractCompositeContextNode implements PathMixin
         permits AbstractListLikeContextNode, ChoiceNodeContextNode {
     AbstractMixinContextNode(final DataSchemaNode schema) {
         super(NodeIdentifier.create(schema.getQName()), schema);
index 10327134025a37c475ef75ce9d48c118ba5dad0d..49b67b985d9c2c1972552c7c566511a0b2f6777a 100644 (file)
@@ -21,7 +21,7 @@ import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
 
-abstract sealed class DataContainerContextNode extends AbstractInteriorContextNode
+abstract sealed class DataContainerContextNode extends AbstractCompositeContextNode
         permits AbstractListItemContextNode, ContainerContextNode {
     private final ConcurrentMap<PathArgument, AbstractDataSchemaContextNode> byArg = new ConcurrentHashMap<>();
     private final ConcurrentMap<QName, AbstractDataSchemaContextNode> byQName = new ConcurrentHashMap<>();
index fd0f7ca59b7c90fce6d0d90badbfcb8703475b1f..8ee81016f5ee5d6dc5b0892bdbaa12f613664ebc 100644 (file)
@@ -11,7 +11,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.SimpleValue;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 
-public final class LeafContextNode extends AbstractLeafContextNode implements SimpleValue {
+public final class LeafContextNode extends AbstractDataSchemaContextNode implements SimpleValue {
     LeafContextNode(final LeafSchemaNode schema) {
         super(NodeIdentifier.create(schema.getQName()), schema);
     }
index 297a166b48d1907bb20003f287281b327969fb6a..da31d726c60f236adae09b280cc68522d0a9801d 100644 (file)
@@ -11,7 +11,7 @@ import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.SimpleVal
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
 
-public final class LeafListEntryContextNode extends AbstractLeafContextNode implements SimpleValue {
+public final class LeafListEntryContextNode extends AbstractDataSchemaContextNode implements SimpleValue {
     LeafListEntryContextNode(final LeafListSchemaNode schema) {
         super(null, schema);
     }
index 6fc31efcd09f33d95aded14cf81dde220da6558a..07f3f2ed1b614bb717af8a6d45ba3f3e5a10b0dc 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.yangtools.yang.data.util.impl.legacy;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 
-final class OpaqueContextNode extends AbstractLeafContextNode {
+final class OpaqueContextNode extends AbstractDataSchemaContextNode {
     OpaqueContextNode(final DataSchemaNode schema) {
         super(NodeIdentifier.create(schema.getQName()), schema);
     }