Correct mandatory leaf enforcement 56/80256/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Feb 2019 10:46:17 +0000 (11:46 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Feb 2019 10:59:05 +0000 (11:59 +0100)
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>
(cherry picked from commit 875459db2abd73cbe5c9977c421e923e2c428de3)

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 5a8e1d28bde966e5a406e582964e7566f9c8c9d4..2e247f8dedde7b8b9cf92eab71b9ae05bd2fd622 100644 (file)
@@ -69,17 +69,28 @@ abstract class AbstractNodeContainerModificationStrategy extends SchemaAwareAppl
                 }
             }
 
-            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 a03c21e7e8b5917e6f18503b365fbc41bf0d56ab..f513527744cb131bc5720e76bcd9f01cccae0d7e 100644 (file)
@@ -99,7 +99,7 @@ final class ChoiceModificationStrategy extends AbstractNodeContainerModification
     }
 
     @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 825a77ddedab8394d332b95ca8b6a9517dbfd3d2..8e42a550ae68dd50f24af4a098292018820dc3f4 100644 (file)
@@ -30,7 +30,7 @@ class ListEntryModificationStrategy extends DataNodeContainerModificationStrateg
         }
 
         @Override
-        void additionalVerifyValueChildren(final NormalizedNode<?, ?> writtenValue) {
+        void mandatoryVerifyValueChildren(final NormalizedNode<?, ?> writtenValue) {
             enforcer.enforceOnData(writtenValue);
         }