From 641fc551dba4beb342e811681914f5e5db46bb6f Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 11 Feb 2019 11:46:17 +0100 Subject: [PATCH] Correct mandatory leaf enforcement 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 --- ...stractNodeContainerModificationStrategy.java | 17 ++++++++++++++--- .../schema/tree/ChoiceModificationStrategy.java | 2 +- .../tree/ContainerModificationStrategy.java | 2 +- .../tree/ListEntryModificationStrategy.java | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractNodeContainerModificationStrategy.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractNodeContainerModificationStrategy.java index c7686895fd..4821b404a0 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractNodeContainerModificationStrategy.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractNodeContainerModificationStrategy.java @@ -116,17 +116,28 @@ abstract class AbstractNodeContainerModificationStrategy } } - 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 } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ChoiceModificationStrategy.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ChoiceModificationStrategy.java index 4052f0db9a..26eff79aff 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ChoiceModificationStrategy.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ChoiceModificationStrategy.java @@ -101,7 +101,7 @@ final class ChoiceModificationStrategy extends Visible { } @Override - void additionalVerifyValueChildren(final NormalizedNode writtenValue) { + void optionalVerifyValueChildren(final NormalizedNode writtenValue) { enforceCases(writtenValue); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ContainerModificationStrategy.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ContainerModificationStrategy.java index 821625f9f6..cca1169aaf 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ContainerModificationStrategy.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ContainerModificationStrategy.java @@ -35,7 +35,7 @@ class ContainerModificationStrategy extends DataNodeContainerModificationStrateg } @Override - void additionalVerifyValueChildren(final NormalizedNode writtenValue) { + void mandatoryVerifyValueChildren(final NormalizedNode writtenValue) { enforcer.enforceOnData(writtenValue); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListEntryModificationStrategy.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListEntryModificationStrategy.java index 3d135f25d9..c7378f6fed 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListEntryModificationStrategy.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListEntryModificationStrategy.java @@ -31,7 +31,7 @@ class ListEntryModificationStrategy extends DataNodeContainerModificationStrateg } @Override - void additionalVerifyValueChildren(final NormalizedNode writtenValue) { + void mandatoryVerifyValueChildren(final NormalizedNode writtenValue) { enforcer.enforceOnData(writtenValue); } -- 2.36.6