X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=data%2Fyang-data-tree-ri%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Ftree%2Fimpl%2FSchemaAwareApplyOperation.java;fp=data%2Fyang-data-tree-ri%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Ftree%2Fimpl%2FSchemaAwareApplyOperation.java;h=709569a3380493d6a01d9e508fed91d246a52480;hb=da443e62dc61e6ae01ae93f226fab4c92664d157;hp=741d6fd3a61374203c31a602d6cd7ae3a557ef40;hpb=76826832f88746db23040783839e5920e4b31f58;p=yangtools.git diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/SchemaAwareApplyOperation.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/SchemaAwareApplyOperation.java index 741d6fd3a6..709569a338 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/SchemaAwareApplyOperation.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/SchemaAwareApplyOperation.java @@ -19,6 +19,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode; import org.opendaylight.yangtools.yang.data.api.schema.AnyxmlNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; +import org.opendaylight.yangtools.yang.data.spi.node.MandatoryLeafEnforcer; import org.opendaylight.yangtools.yang.data.tree.api.ConflictingModificationAppliedException; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration; import org.opendaylight.yangtools.yang.data.tree.api.DataValidationFailedException; @@ -30,6 +31,7 @@ import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; +import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; @@ -293,4 +295,15 @@ abstract sealed class SchemaAwareApplyOperation extend static final boolean belongsToTree(final TreeType treeType, final DataSchemaNode node) { return treeType == TreeType.OPERATIONAL || node.effectiveConfig().orElse(Boolean.TRUE); } + + static final @Nullable MandatoryLeafEnforcer enforcerFor(final DataSchemaNode schema, + final DataTreeConfiguration treeConfig) { + if (treeConfig.isMandatoryNodesValidationEnabled() && schema instanceof DataNodeContainer container) { + final var includeConfigFalse = treeConfig.getTreeType() == TreeType.OPERATIONAL; + if (includeConfigFalse || schema.effectiveConfig().orElse(Boolean.TRUE)) { + return MandatoryLeafEnforcer.forContainer(container, includeConfigFalse); + } + } + return null; + } }