Bug 8675: Follow-up fix to new XML parser change in yangtools 68/59268/6
authorIgor Foltin <igor.foltin@pantheon.tech>
Wed, 21 Jun 2017 09:06:24 +0000 (11:06 +0200)
committerIgor Foltin <igor.foltin@pantheon.tech>
Tue, 18 Jul 2017 06:15:11 +0000 (06:15 +0000)
Behaviour of the new XML parser in yangtools project needs
to be changed a bit so that RESTCONF/NETCONF projects can be
migrated to the new parser. However, these changes break some
parts of BGPCEP which have already been using it.

This patch provides a fix for the issue and should be merged
right after the following yangtools patch goes in:
https://git.opendaylight.org/gerrit/#/c/59036/

Change-Id: I23a5677e31b01fee7f67c8a5eb6b4081bd976f8b
Signed-off-by: Igor Foltin <igor.foltin@pantheon.tech>
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/ProtocolsConfigFileProcessor.java
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/NetworkTopologyConfigFileProcessor.java

index f55358a4b49b53b5946c971efafe9f053e04a48d..62e73cba172469a149fea161a135c3286e744427 100644 (file)
@@ -32,6 +32,7 @@ import org.opendaylight.yangtools.concepts.AbstractRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -61,7 +62,9 @@ public final class ProtocolsConfigFileProcessor implements ConfigFileProcessor,
 
     @Override
     public void loadConfiguration(@Nonnull final NormalizedNode<?, ?> dto) {
-        final Collection<MapEntryNode> protocolsCollection = ((MapNode) dto).getValue();
+        final ContainerNode protocolsContainer = (ContainerNode) dto;
+        final MapNode protocolList = (MapNode) protocolsContainer.getChild(protocolYIId.getLastPathArgument()).get();
+        final Collection<MapEntryNode> protocolsCollection = protocolList.getValue();
         for (final MapEntryNode protocolEntry : protocolsCollection) {
             final Map.Entry<InstanceIdentifier<?>, DataObject> bi = this.bindingSerializer.fromNormalizedNode(this.protocolYIId, protocolEntry);
             if (bi != null) {
index f79cb5fa047af5765178d032f0bc180d84f39333..ed12a0436e3b386a78ac9efa07b537285eeb2f5a 100644 (file)
@@ -22,6 +22,7 @@ import org.opendaylight.yangtools.concepts.AbstractRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -55,7 +56,10 @@ public final class NetworkTopologyConfigFileProcessor implements ConfigFileProce
 
     @Override
     public void loadConfiguration(@Nonnull final NormalizedNode<?, ?> dto) {
-        final Collection<MapEntryNode> networkTopology = ((MapNode) dto).getValue();
+        final ContainerNode networkTopologyContainer = (ContainerNode) dto;
+        final MapNode topologyList = (MapNode) networkTopologyContainer.getChild(
+                topologyYii.getLastPathArgument()).get();
+        final Collection<MapEntryNode> networkTopology = topologyList.getValue();
         for (final MapEntryNode topology : networkTopology) {
             final Map.Entry<InstanceIdentifier<?>, DataObject> bi = this.bindingSerializer.fromNormalizedNode(this.topologyYii , topology);
             if (bi != null) {