X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=inline;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2Ftree%2FAbstractNodeContainerModificationStrategy.java;h=2accd980be0c37f4213497f8db10ecc841a3ec05;hb=a7c0733bc9201f67b73196d93792dee582f931fd;hp=4f5516133b5f2876e79f8ef5baaf3e7796e9a2c3;hpb=89e48d8fb668a933b02a89919ec2d6ed5988ccf6;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractNodeContainerModificationStrategy.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractNodeContainerModificationStrategy.java index 4f5516133b..2accd980be 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractNodeContainerModificationStrategy.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/AbstractNodeContainerModificationStrategy.java @@ -18,19 +18,20 @@ import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; +import org.opendaylight.yangtools.yang.data.api.schema.DistinctNodeContainer; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; +import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeContainerBuilder; import org.opendaylight.yangtools.yang.data.api.schema.tree.ConflictingModificationAppliedException; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException; import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType; import org.opendaylight.yangtools.yang.data.api.schema.tree.ModifiedNodeDoesNotExistException; 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; -import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeContainerBuilder; +import org.opendaylight.yangtools.yang.data.spi.tree.MutableTreeNode; +import org.opendaylight.yangtools.yang.data.spi.tree.TreeNode; +import org.opendaylight.yangtools.yang.data.spi.tree.TreeNodeFactory; +import org.opendaylight.yangtools.yang.data.spi.tree.Version; import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus; abstract class AbstractNodeContainerModificationStrategy @@ -101,17 +102,17 @@ abstract class AbstractNodeContainerModificationStrategy } @Override - final void verifyValue(final NormalizedNode writtenValue) { + final void verifyValue(final NormalizedNode writtenValue) { final Class nodeClass = support.requiredClass; checkArgument(nodeClass.isInstance(writtenValue), "Node %s is not of type %s", writtenValue, nodeClass); checkArgument(writtenValue instanceof NormalizedNodeContainer); } @Override - final void verifyValueChildren(final NormalizedNode writtenValue) { + final void verifyValueChildren(final NormalizedNode writtenValue) { if (verifyChildrenStructure) { - final NormalizedNodeContainer container = (NormalizedNodeContainer) writtenValue; - for (final NormalizedNode child : container.getValue()) { + final DistinctNodeContainer container = (DistinctNodeContainer) writtenValue; + for (final NormalizedNode child : container.body()) { final ModificationApplyOperation childOp = childByArg(child.getIdentifier()); if (childOp == null) { throw new SchemaValidationFailedException(String.format( @@ -132,7 +133,7 @@ abstract class AbstractNodeContainerModificationStrategy * * @param writtenValue Effective written value */ - void optionalVerifyValueChildren(final NormalizedNode writtenValue) { + void optionalVerifyValueChildren(final NormalizedNode writtenValue) { // Defaults to no-op } @@ -142,14 +143,14 @@ abstract class AbstractNodeContainerModificationStrategy * * @param writtenValue Effective written value */ - void mandatoryVerifyValueChildren(final NormalizedNode writtenValue) { + void mandatoryVerifyValueChildren(final NormalizedNode writtenValue) { // Defaults to no-op } @Override - protected final void recursivelyVerifyStructure(final NormalizedNode value) { - final NormalizedNodeContainer container = (NormalizedNodeContainer) value; - for (final NormalizedNode child : container.getValue()) { + protected final void recursivelyVerifyStructure(final NormalizedNode value) { + final NormalizedNodeContainer container = (NormalizedNodeContainer) value; + for (final NormalizedNode child : container.body()) { final ModificationApplyOperation childOp = childByArg(child.getIdentifier()); if (childOp == null) { throw new SchemaValidationFailedException( @@ -162,7 +163,7 @@ abstract class AbstractNodeContainerModificationStrategy } @Override - protected TreeNode applyWrite(final ModifiedNode modification, final NormalizedNode newValue, + protected TreeNode applyWrite(final ModifiedNode modification, final NormalizedNode newValue, final Optional currentMeta, final Version version) { final TreeNode newValueMeta = TreeNodeFactory.createTreeNode(newValue, version); @@ -237,10 +238,10 @@ abstract class AbstractNodeContainerModificationStrategy * we do that, ModifiedNode children will look like this node were a TOUCH and we will let applyTouch() do the * heavy lifting of applying the children recursively (either through here or through applyWrite(). */ - final NormalizedNode value = modification.getWrittenValue(); + final NormalizedNode value = modification.getWrittenValue(); - Verify.verify(value instanceof NormalizedNodeContainer, "Attempted to merge non-container %s", value); - for (final NormalizedNode c : ((NormalizedNodeContainer) value).getValue()) { + Verify.verify(value instanceof DistinctNodeContainer, "Attempted to merge non-container %s", value); + for (final NormalizedNode c : ((DistinctNodeContainer) value).body()) { final PathArgument id = c.getIdentifier(); modification.modifyChild(id, resolveChildOperation(id), version); } @@ -248,8 +249,8 @@ abstract class AbstractNodeContainerModificationStrategy } private void mergeChildrenIntoModification(final ModifiedNode modification, - final Collection> children, final Version version) { - for (final NormalizedNode c : children) { + final Collection children, final Version version) { + for (final NormalizedNode c : children) { final ModificationApplyOperation childOp = resolveChildOperation(c.getIdentifier()); final ModifiedNode childNode = modification.modifyChild(c.getIdentifier(), childOp, version); childOp.mergeIntoModifiedNode(childNode, c, version); @@ -257,11 +258,9 @@ abstract class AbstractNodeContainerModificationStrategy } @Override - final void mergeIntoModifiedNode(final ModifiedNode modification, final NormalizedNode value, + final void mergeIntoModifiedNode(final ModifiedNode modification, final NormalizedNode value, final Version version) { - final Collection> children = - ((NormalizedNodeContainer)value).getValue(); - + final Collection children = ((DistinctNodeContainer)value).body(); switch (modification.getOperation()) { case NONE: // Fresh node, just record a MERGE with a value @@ -386,7 +385,7 @@ abstract class AbstractNodeContainerModificationStrategy return null; } - static final TreeNode defaultTreeNode(final NormalizedNode emptyNode) { + static final TreeNode defaultTreeNode(final NormalizedNode emptyNode) { return TreeNodeFactory.createTreeNode(emptyNode, FAKE_VERSION); }