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=e55154f0d2e8208ce1356ddbad281df343f3a508;hp=a8f44262594a3d42b1ae06f58f4a2709b00b9219;hpb=9b26bdbf76e7792976dbd8c032449c2e664f170b;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 a8f4426259..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); } @@ -46,7 +46,7 @@ abstract class AbstractValueNodeModificationStrategy e } @Override - protected final TreeNode applySubtreeChange(final ModifiedNode modification, + protected final TreeNode applyTouch(final ModifiedNode modification, final TreeNode currentMeta, final Version version) { throw new UnsupportedOperationException("Node " + schema.getPath() + "is leaf type node. Subtree change is not allowed."); @@ -67,8 +67,29 @@ abstract class AbstractValueNodeModificationStrategy e } @Override - protected final void checkSubtreeModificationApplicable(final YangInstanceIdentifier path, final NodeModification modification, - final Optional current) throws IncorrectDataStructureException { + protected final void checkTouchApplicable(final YangInstanceIdentifier path, final NodeModification modification, + 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); + } +}