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=e4b80b2fb5beb1372a447ff7146ab8a843e643bb;hb=bf405586fc69c3781311cfb8ac19ba93b670ec8d;hp=6f4e8497ac387879dcce3c2b11ad9d4916896a6a;hpb=16e21edae5e7d0848708ed35f80a765dcdee61da;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..e4b80b2fb5 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 @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.yang.data.impl.schema.tree; import static com.google.common.base.Preconditions.checkArgument; + import com.google.common.base.Optional; import com.google.common.base.Preconditions; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -30,7 +31,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); } @@ -71,4 +72,25 @@ abstract class AbstractValueNodeModificationStrategy e final Optional current) 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); + } +}