X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fmdsal-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fmdsal%2Fconnector%2Fops%2FEditOperationStrategyProvider.java;h=505e38739b458991c5516d72b4ca015420476dff;hb=61613842c6f3ab0aa74360eb6539d930e1c110eb;hp=541c0b288eac9a288aae3054234dac60a81eea98;hpb=ddfdd7b56162e9c45639388b10407d45f5f0ba13;p=netconf.git diff --git a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/EditOperationStrategyProvider.java b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/EditOperationStrategyProvider.java index 541c0b288e..505e38739b 100644 --- a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/EditOperationStrategyProvider.java +++ b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/EditOperationStrategyProvider.java @@ -16,7 +16,11 @@ import org.opendaylight.netconf.api.xml.XmlNetconfConstants; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.EditConfigInput; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.ModifyAction; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; @@ -36,114 +40,122 @@ import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.Dom class EditOperationStrategyProvider extends DomToNormalizedNodeParserFactory.BuildingStrategyProvider { - private static final QName OPERATION_ATTRIBUTE = QName.create(EditConfigInput.QNAME.getNamespace(), null, XmlNetconfConstants.OPERATION_ATTR_KEY); + private static final QName OPERATION_ATTRIBUTE = QName.create(EditConfigInput.QNAME.getNamespace(), null, + XmlNetconfConstants.OPERATION_ATTR_KEY); private final DataTreeChangeTracker changeTracker; - public EditOperationStrategyProvider(final DataTreeChangeTracker changeTracker) { + EditOperationStrategyProvider(final DataTreeChangeTracker changeTracker) { this.changeTracker = changeTracker; } @Override - protected ExtensibleParser.BuildingStrategy> forLeaf() { + protected ExtensibleParser.BuildingStrategy> forLeaf() { return new NetconfOperationLeafStrategy(changeTracker); } @Override - protected ExtensibleParser.BuildingStrategy forContainer() { + protected ExtensibleParser.BuildingStrategy forContainer() { return new NetconfOperationContainerStrategy<>(changeTracker); } @Override - protected ExtensibleParser.BuildingStrategy forMap() { + protected ExtensibleParser.BuildingStrategy forMap() { return new NetconfOperationCollectionStrategy<>(changeTracker); } @Override - protected ExtensibleParser.BuildingStrategy> forLeafSetEntry() { + protected ExtensibleParser.BuildingStrategy> forLeafSetEntry() { return new NetconfOperationLeafSetEntryStrategy(changeTracker); } @Override - protected ExtensibleParser.BuildingStrategy forMapEntry() { + protected ExtensibleParser.BuildingStrategy forMapEntry() { return new NetconfOperationContainerStrategy<>(changeTracker); } @Override - protected ExtensibleParser.BuildingStrategy forOrderedList() { + protected ExtensibleParser.BuildingStrategy forOrderedList() { return new NetconfOperationCollectionStrategy<>(changeTracker); } @Override - protected ExtensibleParser.BuildingStrategy forUnkeyedListEntry() { + protected ExtensibleParser.BuildingStrategy forUnkeyedListEntry() { return new NetconfOperationContainerStrategy<>(changeTracker); } @Override - protected ExtensibleParser.BuildingStrategy forUnkeyedList() { + protected ExtensibleParser.BuildingStrategy forUnkeyedList() { return new NetconfOperationCollectionStrategy<>(changeTracker); } @Override - protected ExtensibleParser.BuildingStrategy forChoice() { + protected ExtensibleParser.BuildingStrategy forChoice() { return new NetconfOperationContainerStrategy<>(changeTracker); } @Override - public ExtensibleParser.BuildingStrategy forAugmentation() { + public ExtensibleParser.BuildingStrategy forAugmentation() { return new NetconfOperationContainerStrategy<>(changeTracker); } - private static class NetconfOperationCollectionStrategy> implements ExtensibleParser.BuildingStrategy { + private static class NetconfOperationCollectionStrategy> + implements ExtensibleParser.BuildingStrategy { private final DataTreeChangeTracker changeTracker; - public NetconfOperationCollectionStrategy(final DataTreeChangeTracker changeTracker) { + NetconfOperationCollectionStrategy(final DataTreeChangeTracker changeTracker) { this.changeTracker = changeTracker; } @Nullable @Override - public N build(final NormalizedNodeBuilder builder) { + public N build(final NormalizedNodeBuilder builder) { changeTracker.popPath(); return builder.build(); } @Override - public void prepareAttributes(final Map attributes, final NormalizedNodeBuilder containerBuilder) { + public void prepareAttributes( + final Map attributes, + final NormalizedNodeBuilder containerBuilder) { changeTracker.pushPath(containerBuilder.build().getIdentifier()); } } - public static final class NetconfOperationLeafStrategy implements ExtensibleParser.BuildingStrategy> { + public static final class NetconfOperationLeafStrategy + implements ExtensibleParser.BuildingStrategy> { private final DataTreeChangeTracker dataTreeChangeTracker; - public NetconfOperationLeafStrategy(final DataTreeChangeTracker dataTreeChangeTracker) { + NetconfOperationLeafStrategy(final DataTreeChangeTracker dataTreeChangeTracker) { this.dataTreeChangeTracker = dataTreeChangeTracker; } @Nullable @Override - public LeafNode build(final NormalizedNodeBuilder> builder) { + public LeafNode build( + final NormalizedNodeBuilder> builder) { LeafNode node = builder.build(); String operation = (String) node.getAttributeValue(OPERATION_ATTRIBUTE); if (operation == null) { return node; } - if(builder instanceof AttributesBuilder) { + if (builder instanceof AttributesBuilder) { ((AttributesBuilder) builder).withAttributes(Collections.emptyMap()); } node = builder.build(); ModifyAction action = ModifyAction.fromXmlValue(operation); - if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 || dataTreeChangeTracker.getRemoveOperationTracker() > 0) { + if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 + || dataTreeChangeTracker .getRemoveOperationTracker() > 0) { return node; } else { if (!action.equals(dataTreeChangeTracker.peekAction())) { dataTreeChangeTracker.pushPath(node.getIdentifier()); - dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, action, new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); + dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, action, + new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); dataTreeChangeTracker.popPath(); return null; } else { @@ -153,22 +165,25 @@ class EditOperationStrategyProvider extends DomToNormalizedNodeParserFactory.Bui } @Override - public void prepareAttributes(final Map attributes, final NormalizedNodeBuilder> containerBuilder) { + public void prepareAttributes( + final Map attributes, + final NormalizedNodeBuilder> containerBuilder) { // Noop } } - public static final class NetconfOperationLeafSetEntryStrategy implements ExtensibleParser.BuildingStrategy> { + public static final class NetconfOperationLeafSetEntryStrategy + implements ExtensibleParser.BuildingStrategy> { private final DataTreeChangeTracker dataTreeChangeTracker; - public NetconfOperationLeafSetEntryStrategy(final DataTreeChangeTracker dataTreeChangeTracker) { + NetconfOperationLeafSetEntryStrategy(final DataTreeChangeTracker dataTreeChangeTracker) { this.dataTreeChangeTracker = dataTreeChangeTracker; } @Nullable @Override - public LeafSetEntryNode build(final NormalizedNodeBuilder> builder) { + public LeafSetEntryNode build(final NormalizedNodeBuilder> builder) { LeafSetEntryNode node = builder.build(); String operation = (String) node.getAttributeValue(OPERATION_ATTRIBUTE); if (operation == null) { @@ -182,12 +197,14 @@ class EditOperationStrategyProvider extends DomToNormalizedNodeParserFactory.Bui node = builder.build(); ModifyAction action = ModifyAction.fromXmlValue(operation); - if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 || dataTreeChangeTracker.getRemoveOperationTracker() > 0) { + if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 + || dataTreeChangeTracker.getRemoveOperationTracker() > 0) { return node; } else { if (!action.equals(dataTreeChangeTracker.peekAction())) { dataTreeChangeTracker.pushPath(node.getIdentifier()); - dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, action, new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); + dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, action, + new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); dataTreeChangeTracker.popPath(); return null; } else { @@ -197,16 +214,18 @@ class EditOperationStrategyProvider extends DomToNormalizedNodeParserFactory.Bui } @Override - public void prepareAttributes(final Map attributes, final NormalizedNodeBuilder> containerBuilder) { - + public void prepareAttributes( + final Map attributes, + final NormalizedNodeBuilder> containerBuilder) { } } - public static final class NetconfOperationContainerStrategy

> implements ExtensibleParser.BuildingStrategy { + public static final class NetconfOperationContainerStrategy

> implements ExtensibleParser.BuildingStrategy { private final DataTreeChangeTracker dataTreeChangeTracker; - public NetconfOperationContainerStrategy(final DataTreeChangeTracker dataTreeChangeTracker) { + NetconfOperationContainerStrategy(final DataTreeChangeTracker dataTreeChangeTracker) { this.dataTreeChangeTracker = dataTreeChangeTracker; } @@ -221,14 +240,16 @@ class EditOperationStrategyProvider extends DomToNormalizedNodeParserFactory.Bui final ModifyAction currentAction = dataTreeChangeTracker.popAction(); //if we know that we are going to delete a parent node just complete the entire subtree - if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 || dataTreeChangeTracker.getRemoveOperationTracker() > 0) { + if (dataTreeChangeTracker.getDeleteOperationTracker() > 0 + || dataTreeChangeTracker.getRemoveOperationTracker() > 0) { dataTreeChangeTracker.popPath(); return node; } else { //if parent and current actions dont match create a DataTreeChange and add it to the change list //dont add a new child to the parent node if (!currentAction.equals(dataTreeChangeTracker.peekAction())) { - dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, currentAction, new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); + dataTreeChangeTracker.addDataTreeChange(new DataTreeChangeTracker.DataTreeChange(node, + currentAction, new ArrayList<>(dataTreeChangeTracker.getCurrentPath()))); dataTreeChangeTracker.popPath(); return null; } else { @@ -239,7 +260,8 @@ class EditOperationStrategyProvider extends DomToNormalizedNodeParserFactory.Bui } @Override - public void prepareAttributes(final Map attributes, final NormalizedNodeBuilder containerBuilder) { + public void prepareAttributes(final Map attributes, + final NormalizedNodeBuilder containerBuilder) { dataTreeChangeTracker.pushPath(containerBuilder.build().getIdentifier()); final String operation = attributes.get(OPERATION_ATTRIBUTE); if (operation != null) {