Sharpen {mandatory,optional}VerifyValueChildren() 64/106064/7
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 12 Jun 2023 12:48:19 +0000 (14:48 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 12 Jun 2023 12:49:49 +0000 (14:49 +0200)
We know the data needs to be a DistinctNodeContainer, codify that into
the contract, instead of a plain NormalizedNode.

Change-Id: I53a1b77500b6cf52795262906285025a6253f474
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AbstractNodeContainerModificationStrategy.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ChoiceModificationStrategy.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ContainerModificationStrategy.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MapEntryModificationStrategy.java

index a0d6daeac92774d03f4af1815eb8c6d80bb1af6a..d1438ed70f90a242c2fe6343b0fcdbde964a2bbf 100644 (file)
@@ -110,10 +110,10 @@ abstract class AbstractNodeContainerModificationStrategy<T extends DataSchemaNod
 
     @Override
     final void verifyValueChildren(final NormalizedNode writtenValue) {
+        final var container = (DistinctNodeContainer<?, ?>) writtenValue;
         if (verifyChildrenStructure) {
-            final var container = (DistinctNodeContainer<?, ?>) writtenValue;
             for (var child : container.body()) {
-                final ModificationApplyOperation childOp = childByArg(child.name());
+                final var childOp = childByArg(child.name());
                 if (childOp == null) {
                     throw new SchemaValidationFailedException(String.format(
                         "Node %s is not a valid child of %s according to the schema.",
@@ -122,9 +122,9 @@ abstract class AbstractNodeContainerModificationStrategy<T extends DataSchemaNod
                 childOp.fullVerifyStructure(child);
             }
 
-            optionalVerifyValueChildren(writtenValue);
+            optionalVerifyValueChildren(container);
         }
-        mandatoryVerifyValueChildren(writtenValue);
+        mandatoryVerifyValueChildren(container);
     }
 
     /**
@@ -133,7 +133,7 @@ abstract class AbstractNodeContainerModificationStrategy<T extends DataSchemaNod
      *
      * @param writtenValue Effective written value
      */
-    void optionalVerifyValueChildren(final NormalizedNode writtenValue) {
+    void optionalVerifyValueChildren(final DistinctNodeContainer<?, ?> writtenValue) {
         // Defaults to no-op
     }
 
@@ -143,7 +143,7 @@ abstract class AbstractNodeContainerModificationStrategy<T extends DataSchemaNod
      *
      * @param writtenValue Effective written value
      */
-    void mandatoryVerifyValueChildren(final NormalizedNode writtenValue) {
+    void mandatoryVerifyValueChildren(final DistinctNodeContainer<?, ?> writtenValue) {
         // Defaults to no-op
     }
 
index 3b64b9324ce1527de17a6f946f3561cfedf9945f..8d842c66e0535462028cea64c0470740369c3066 100644 (file)
@@ -19,6 +19,7 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
+import org.opendaylight.yangtools.yang.data.api.schema.DistinctNodeContainer;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeBuilder;
@@ -92,7 +93,7 @@ final class ChoiceModificationStrategy extends Visible<ChoiceSchemaNode> {
     }
 
     @Override
-    void optionalVerifyValueChildren(final NormalizedNode writtenValue) {
+    void optionalVerifyValueChildren(final DistinctNodeContainer<?, ?> writtenValue) {
         enforceCases(writtenValue);
     }
 
index 124a5b36ae27a52f867848a39f25c86c5837991c..1e5574bddf281ec52866e0e9df37683abbcd6144 100644 (file)
@@ -12,6 +12,7 @@ import static java.util.Objects.requireNonNull;
 import java.util.Optional;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.DistinctNodeContainer;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration;
@@ -36,7 +37,7 @@ class ContainerModificationStrategy extends DataNodeContainerModificationStrateg
         }
 
         @Override
-        void mandatoryVerifyValueChildren(final NormalizedNode writtenValue) {
+        void mandatoryVerifyValueChildren(final DistinctNodeContainer<?, ?> writtenValue) {
             enforcer.enforceOnData(writtenValue);
         }
 
index 94a27cbfa76d6790b3b0a9714dd7f3991623c0a2..2015259c041e5ccd34edf42ac62b9e1ba8b3a8fb 100644 (file)
@@ -12,6 +12,7 @@ import static java.util.Objects.requireNonNull;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
+import org.opendaylight.yangtools.yang.data.api.schema.DistinctNodeContainer;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder;
@@ -31,7 +32,7 @@ class MapEntryModificationStrategy extends DataNodeContainerModificationStrategy
         }
 
         @Override
-        void mandatoryVerifyValueChildren(final NormalizedNode writtenValue) {
+        void mandatoryVerifyValueChildren(final DistinctNodeContainer<?, ?> writtenValue) {
             enforcer.enforceOnData(writtenValue);
         }