Bug 6093 - COMPILATION ERROR sxp-mapper 88/40588/4
authorMartin Mihálek <mamihale@cisco.com>
Tue, 21 Jun 2016 09:07:19 +0000 (11:07 +0200)
committerMichal Rehak <mirehak@cisco.com>
Tue, 21 Jun 2016 09:56:58 +0000 (11:56 +0200)
Updated to reflect change in SXP API

Change-Id: I2359e3a15e24bc1e7a879759266b70f08fd1901e
Signed-off-by: Martin Mihálek <mamihale@cisco.com>
Signed-off-by: Michal Rehak <mirehak@cisco.com>
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/dao/MasterDatabaseBindingDaoImpl.java
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/listen/MasterDatabaseBindingListenerImpl.java
sxp-mapper/src/test/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/dao/MasterDatabaseBindingDaoImplTest.java
sxp-mapper/src/test/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/listen/MasterDatabaseBindingListenerImplTest.java

index c5121a68e55c81f4899f1f07fb2f8fa23446a9d2..e45c71a6a14a54e92983ece462616ec07d6c36f9 100644 (file)
@@ -15,6 +15,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -27,9 +28,12 @@ import org.opendaylight.groupbasedpolicy.sxp.mapper.api.ReadableAsyncByKey;
 import org.opendaylight.groupbasedpolicy.sxp.mapper.api.SimpleCachedDao;
 import org.opendaylight.groupbasedpolicy.sxp.mapper.impl.util.SxpListenerUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.MasterDatabaseFields;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.Sgt;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.master.database.fields.MasterDatabaseBinding;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.SxpDatabasesFields;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.SxpNodeIdentity;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.network.topology.topology.node.SxpDomains;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -90,22 +94,29 @@ public class MasterDatabaseBindingDaoImpl implements DSAsyncDao<IpPrefix, Master
                     cachedDao.invalidateCache();
 
                     for (Node node : input.get().getNode()) {
-                        final SxpNodeIdentity sxpNodeIdentity = node.getAugmentation(SxpNodeIdentity.class);
-                        if (sxpNodeIdentity != null) {
-                            final List<MasterDatabaseBinding> masterDBBindings = sxpNodeIdentity.getMasterDatabase().getMasterDatabaseBinding();
-                            if (masterDBBindings != null) {
-                                for (MasterDatabaseBinding masterDBItem : masterDBBindings) {
-                                    // update all
-                                    final MasterDatabaseBinding previousValue = cachedDao.update(
-                                            masterDBItem.getIpPrefix(), masterDBItem);
-                                    if (previousValue != null) {
-                                        LOG.warn("updated key already obtained: [node:{}, sgt:{}]",
-                                                node.getNodeId().getValue(),
-                                                masterDBItem.getSecurityGroupTag());
+                        java.util.Optional.ofNullable(node.getAugmentation(SxpNodeIdentity.class))
+                                .map(SxpNodeIdentity::getSxpDomains)
+                                .map(SxpDomains::getSxpDomain)
+                                .ifPresent((sxpDomain) -> {
+                                    final List<MasterDatabaseBinding> masterDBBindings = sxpDomain.stream()
+                                            .map(SxpDatabasesFields::getMasterDatabase)
+                                            .filter(masterDb -> masterDb != null)
+                                            .map(MasterDatabaseFields::getMasterDatabaseBinding)
+                                            .filter(binding -> binding != null)
+                                            .flatMap(Collection::stream)
+                                            .collect(Collectors.toList());
+
+                                    for (MasterDatabaseBinding masterDBItem : masterDBBindings) {
+                                        // update all
+                                        final MasterDatabaseBinding
+                                                previousValue =
+                                                cachedDao.update(masterDBItem.getIpPrefix(), masterDBItem);
+                                        if (previousValue != null) {
+                                            LOG.warn("updated key already obtained: [node:{}, sgt:{}]",
+                                                    node.getNodeId().getValue(), masterDBItem.getSecurityGroupTag());
+                                        }
                                     }
-                                }
-                            }
-                        }
+                                });
                     }
                 } else {
                     LOG.warn("failed to update cache of SxpMasterDB - no data");
index 76d726c0eeab6d7674ea66cc385890370a0511a3..6df2c7a028437696648d24b86c40889dc1d72f66 100644 (file)
@@ -33,6 +33,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controll
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.Sgt;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.master.database.fields.MasterDatabaseBinding;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.SxpNodeIdentity;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.network.topology.topology.node.SxpDomains;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.network.topology.topology.node.sxp.domains.SxpDomain;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.sxp.databases.fields.MasterDatabase;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
@@ -76,6 +78,8 @@ public class MasterDatabaseBindingListenerImpl implements MasterDatabaseBindingL
         sxpDbPath = MasterDatabaseBindingListener.SXP_TOPOLOGY_PATH
                 .child(Node.class)
                 .augmentation(SxpNodeIdentity.class)
+                .child(SxpDomains.class)
+                .child(SxpDomain.class)
                 .child(MasterDatabase.class)
                 .child(MasterDatabaseBinding.class);
 
index f0d4c8df68ab57141f886b0a6e26347d8cd3cf96..171709bebf17788a277f9362a58e6ba2fc9eff52 100644 (file)
@@ -35,6 +35,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.mast
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.master.database.fields.MasterDatabaseBindingBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.SxpNodeIdentity;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.SxpNodeIdentityBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.network.topology.topology.node.SxpDomainsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.network.topology.topology.node.sxp.domains.SxpDomainBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.sxp.databases.fields.MasterDatabaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
@@ -74,8 +76,13 @@ public class MasterDatabaseBindingDaoImplTest {
                 .setNode(Lists.newArrayList(new NodeBuilder()
                         .setNodeId(new NodeId("utNodeId"))
                         .addAugmentation(SxpNodeIdentity.class, new SxpNodeIdentityBuilder()
-                                .setMasterDatabase(new MasterDatabaseBuilder()
-                                        .setMasterDatabaseBinding(Lists.newArrayList(MASTER_DB_BINDING_VALUE))
+                                .setSxpDomains(new SxpDomainsBuilder()
+                                        .setSxpDomain(Collections.singletonList(new SxpDomainBuilder()
+                                                .setDomainName("global")
+                                                .setMasterDatabase(new MasterDatabaseBuilder()
+                                                        .setMasterDatabaseBinding(Lists.newArrayList(MASTER_DB_BINDING_VALUE))
+                                                        .build())
+                                                .build()))
                                         .build())
                                 .build())
                         .build()))
index 6fe38dbbf9bb2f7352282516692521f1a2ed7830..435cf4d8686f0f187e4ed93800678a4d1e8cbc1a 100644 (file)
@@ -40,6 +40,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.mast
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.master.database.fields.MasterDatabaseBindingBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.master.database.fields.MasterDatabaseBindingKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.SxpNodeIdentity;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.network.topology.topology.node.SxpDomains;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.network.topology.topology.node.sxp.domains.SxpDomain;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.network.topology.topology.node.sxp.domains.SxpDomainKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.node.rev160308.sxp.databases.fields.MasterDatabase;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
@@ -59,6 +62,8 @@ public class MasterDatabaseBindingListenerImplTest {
             MasterDatabaseBindingListener.SXP_TOPOLOGY_PATH
                     .child(Node.class, new NodeKey(new NodeId("utNodeId")))
                     .augmentation(SxpNodeIdentity.class)
+                    .child(SxpDomains.class)
+                    .child(SxpDomain.class, new SxpDomainKey("global"))
                     .child(MasterDatabase.class)
                     .child(MasterDatabaseBinding.class, new MasterDatabaseBindingKey(IP_PREFIX));
     private static final DataTreeIdentifier<MasterDatabaseBinding> MASTER_DB_BINDING_TREE_PATH =