X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2Ftree%2FAbstractValueNodeModificationStrategy.java;h=ae7edda82b93c3f158700076d4913078846f6cf4;hb=refs%2Fchanges%2F75%2F33475%2F1;hp=6f4e8497ac387879dcce3c2b11ad9d4916896a6a;hpb=b43b9ed6f627a4a1d2ecc6081ed4f0024761e4a3;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractValueNodeModificationStrategy.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractValueNodeModificationStrategy.java index 6f4e8497ac..ae7edda82b 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractValueNodeModificationStrategy.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractValueNodeModificationStrategy.java @@ -30,7 +30,7 @@ abstract class AbstractValueNodeModificationStrategy e } @Override - protected final void verifyWrittenStructure(final NormalizedNode writtenValue) { + protected final void verifyStructure(final NormalizedNode writtenValue, final boolean verifyChildren) { checkArgument(nodeClass.isInstance(writtenValue), "Node should must be of type %s", nodeClass); } @@ -68,7 +68,28 @@ abstract class AbstractValueNodeModificationStrategy e @Override protected final void checkTouchApplicable(final YangInstanceIdentifier path, final NodeModification modification, - final Optional current) throws IncorrectDataStructureException { + final Optional current, final Version version) throws IncorrectDataStructureException { throw new IncorrectDataStructureException(path, "Subtree modification is not allowed."); } -} \ No newline at end of file + + @Override + void mergeIntoModifiedNode(final ModifiedNode node, final NormalizedNode value, final Version version) { + + switch (node.getOperation()) { + // Delete performs a data dependency check on existence of the node. Performing a merge + // on DELETE means we + // are really performing a write. + case DELETE: + case WRITE: + node.write(value); + break; + default: + node.updateValue(LogicalOperation.MERGE, value); + } + } + + @Override + void recursivelyVerifyStructure(NormalizedNode value) { + verifyStructure(value, false); + } +}