BUG-2448 : added more defensive lookup to node & link attributes 00/13300/1
authorDana Kutenicsova <dkutenic@cisco.com>
Fri, 28 Nov 2014 09:51:21 +0000 (10:51 +0100)
committerDana Kutenicsova <dkutenic@cisco.com>
Tue, 2 Dec 2014 10:51:32 +0000 (11:51 +0100)
Change-Id: I2feb75c1a178df0eeffe8e234072eafa3628bd6a
Signed-off-by: Dana Kutenicsova <dkutenic@cisco.com>
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateTopologyBuilder.java

index f855c0f1ffc606215f0a79a2497983b70d0cd35a..234cc4b625c3f18b3ab11e1f10313c5f88909a48 100644 (file)
@@ -455,7 +455,22 @@ public final class LinkstateTopologyBuilder extends AbstractTopologyBuilder<Link
 
     private void createLink(final WriteTransaction trans, final UriBuilder base,
         final LinkstateRoute value, final LinkCase l, final Attributes attributes) {
-        final LinkAttributes la = ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.linkstate.routes.linkstate.routes.linkstate.route.attributes.attribute.type.LinkCase) attributes.getAugmentation(Attributes1.class).getAttributeType()).getLinkAttributes();
+        // defensive lookup
+        final LinkAttributes la;
+        final Attributes1 attr = attributes.getAugmentation(Attributes1.class);
+        if (attr != null) {
+            final AttributeType attrType = attr.getAttributeType();
+            if (attrType != null) {
+                la = ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.linkstate.routes.linkstate.routes.linkstate.route.attributes.attribute.type.LinkCase)
+                    attrType).getLinkAttributes();
+            } else {
+                LOG.debug("Missing attribute type in link {} route {}, skipping it", l, value);
+                la = null;
+            }
+        } else {
+            LOG.debug("Missing attributes in link {} route {}, skipping it", l, value);
+            la = null;
+        }
 
         final IgpLinkAttributesBuilder ilab = new IgpLinkAttributesBuilder();
         if (la != null) {
@@ -480,6 +495,8 @@ public final class LinkstateTopologyBuilder extends AbstractTopologyBuilder<Link
             ilab.addAugmentation(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.ospf.topology.rev131021.IgpLinkAttributes1.class,
                 ospfLinkAttributes(l.getLinkDescriptors().getMultiTopologyId(), la));
             break;
+        default:
+            break;
         }
 
         final LinkBuilder lb = new LinkBuilder();
@@ -624,7 +641,22 @@ public final class LinkstateTopologyBuilder extends AbstractTopologyBuilder<Link
 
     private void createNode(final WriteTransaction trans, final UriBuilder base,
         final LinkstateRoute value, final NodeCase n, final Attributes attributes) {
-        final NodeAttributes na = ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.linkstate.routes.linkstate.routes.linkstate.route.attributes.attribute.type.NodeCase) attributes.getAugmentation(Attributes1.class).getAttributeType()).getNodeAttributes();
+        final NodeAttributes na;
+        //defensive lookup
+        final Attributes1 attr = attributes.getAugmentation(Attributes1.class);
+        if (attr != null) {
+            final AttributeType attrType = attr.getAttributeType();
+            if (attrType != null) {
+                na = ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.linkstate.routes.linkstate.routes.linkstate.route.attributes.attribute.type.NodeCase)
+                    attrType).getNodeAttributes();
+            } else {
+                LOG.debug("Missing attribute type in node {} route {}, skipping it", n, value);
+                na = null;
+            }
+        } else {
+            LOG.debug("Missing attributes in node {} route {}, skipping it", n, value);
+            na = null;
+        }
         final IgpNodeAttributesBuilder inab = new IgpNodeAttributesBuilder();
 
         final List<IpAddress> ids = new ArrayList<>();