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%2FUnkeyedListModificationStrategy.java;h=d93d4971d1b12d09bc0ace4355d723a8a346d5ff;hb=a88bcb677187ed7a687890c33d24c2c7fe224c54;hp=d786cc67b5fe61c21ba19df0e6ecd04c1baaca89;hpb=8060e3847199d3907eca10e62ce5fd8502ebf8dc;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/UnkeyedListModificationStrategy.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/UnkeyedListModificationStrategy.java index d786cc67b5..d93d4971d1 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/UnkeyedListModificationStrategy.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/UnkeyedListModificationStrategy.java @@ -14,7 +14,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.IncorrectDataStructureException; -import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType; +import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.MutableTreeNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNodeFactory; @@ -27,8 +27,8 @@ final class UnkeyedListModificationStrategy extends SchemaAwareApplyOperation { private final Optional entryStrategy; - UnkeyedListModificationStrategy(final ListSchemaNode schema) { - entryStrategy = Optional. of(new UnkeyedListItemModificationStrategy(schema)); + UnkeyedListModificationStrategy(final ListSchemaNode schema, final TreeType treeType) { + entryStrategy = Optional. of(new UnkeyedListItemModificationStrategy(schema, treeType)); } @Override @@ -37,9 +37,8 @@ final class UnkeyedListModificationStrategy extends SchemaAwareApplyOperation { } @Override - protected TreeNode applyMerge(final ModifiedNode modification, final TreeNode currentMeta, - final Version version) { - modification.resolveModificationType(ModificationType.WRITE); + protected TreeNode applyMerge(final ModifiedNode modification, final TreeNode currentMeta, final Version version) { + // A merge operation is promoted into a write return applyWrite(modification, Optional.of(currentMeta), version); } @@ -94,11 +93,11 @@ final class UnkeyedListModificationStrategy extends SchemaAwareApplyOperation { private TreeNode mutateChildren(final MutableTreeNode meta, final NormalizedNodeContainerBuilder data, final Version nodeVersion, final Iterable modifications) { - for (ModifiedNode mod : modifications) { + for (final ModifiedNode mod : modifications) { final PathArgument id = mod.getIdentifier(); final Optional cm = meta.getChild(id); - Optional result = resolveChildOperation(id).apply(mod, cm, nodeVersion); + final Optional result = resolveChildOperation(id).apply(mod, cm, nodeVersion); if (result.isPresent()) { final TreeNode tn = result.get(); meta.addChild(tn); @@ -122,13 +121,24 @@ final class UnkeyedListModificationStrategy extends SchemaAwareApplyOperation { } @Override - protected void verifyWrittenStructure(final NormalizedNode writtenValue) { + protected void verifyStructure(final NormalizedNode writtenValue, final boolean verifyChildren) { } + @Override + void recursivelyVerifyStructure(NormalizedNode value) { + // NOOP + } + @Override protected void checkTouchApplicable(final YangInstanceIdentifier path, final NodeModification modification, final Optional current) throws IncorrectDataStructureException { throw new IncorrectDataStructureException(path, "Subtree modification is not allowed."); } + + @Override + void mergeIntoModifiedNode(final ModifiedNode node, final NormalizedNode value, final Version version) { + // Unkeyed lists are always replaced + node.write(value); + } }