Correct mandatory leaf enforcement 54/80254/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Feb 2019 10:46:17 +0000 (11:46 +0100)
committerRobert Varga <nite@hq.sk>
Mon, 11 Feb 2019 10:49:24 +0000 (10:49 +0000)
Previous patch broke mandatory leaf enforcement on operational
data store. This patch fixes the logic to again apply this check.

Change-Id: I7b5d6ea05fea0b4df60c8cde9075168a3fa18e9c
JIRA: YANGTOOLS-947
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractNodeContainerModificationStrategy.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ChoiceModificationStrategy.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ContainerModificationStrategy.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListEntryModificationStrategy.java

index c7686895fd45773475c8ae6991dfa6754626f98d..4821b404a06e1688faa79071aec5d7ec018aeca4 100644 (file)
@@ -116,17 +116,28 @@ abstract class AbstractNodeContainerModificationStrategy<T extends WithStatus>
                 }
             }
 
-            additionalVerifyValueChildren(writtenValue);
+            optionalVerifyValueChildren(writtenValue);
         }
+        mandatoryVerifyValueChildren(writtenValue);
     }
 
     /**
      * Perform additional verification on written value's child structure, like presence of mandatory children and
-     * exclusion. The default implementation does nothing.
+     * exclusion. The default implementation does nothing and is not invoked for non-CONFIG data trees.
      *
      * @param writtenValue Effective written value
      */
-    void additionalVerifyValueChildren(final NormalizedNode<?, ?> writtenValue) {
+    void optionalVerifyValueChildren(final NormalizedNode<?, ?> writtenValue) {
+        // Defaults to no-op
+    }
+
+    /**
+     * Perform additional verification on written value's child structure, like presence of mandatory children.
+     * The default implementation does nothing.
+     *
+     * @param writtenValue Effective written value
+     */
+    void mandatoryVerifyValueChildren(final NormalizedNode<?, ?> writtenValue) {
         // Defaults to no-op
     }
 
index 4052f0db9a66767ab596dbb8ea44f77d9549b467..26eff79aff51a43d50c14015d0ba8dd41f022a94 100644 (file)
@@ -101,7 +101,7 @@ final class ChoiceModificationStrategy extends Visible<ChoiceSchemaNode> {
     }
 
     @Override
-    void additionalVerifyValueChildren(final NormalizedNode<?, ?> writtenValue) {
+    void optionalVerifyValueChildren(final NormalizedNode<?, ?> writtenValue) {
         enforceCases(writtenValue);
     }
 
index 821625f9f6868a87a86ed8a5a0a5b8c336de7e90..cca1169aaf2fe4c6b74bbf2dd84cfa9c986f7c12 100644 (file)
@@ -35,7 +35,7 @@ class ContainerModificationStrategy extends DataNodeContainerModificationStrateg
         }
 
         @Override
-        void additionalVerifyValueChildren(final NormalizedNode<?, ?> writtenValue) {
+        void mandatoryVerifyValueChildren(final NormalizedNode<?, ?> writtenValue) {
             enforcer.enforceOnData(writtenValue);
         }
 
index 3d135f25d9531f181f3e48a4e6604b6fafe2b026..c7378f6fed486f3bb4ab4c679e0d53ff825b8c1a 100644 (file)
@@ -31,7 +31,7 @@ class ListEntryModificationStrategy extends DataNodeContainerModificationStrateg
         }
 
         @Override
-        void additionalVerifyValueChildren(final NormalizedNode<?, ?> writtenValue) {
+        void mandatoryVerifyValueChildren(final NormalizedNode<?, ?> writtenValue) {
             enforcer.enforceOnData(writtenValue);
         }