Ray Milkey
Committed by Pavlin Radoslavov

Fix for ONOS-393 - NPE when one of the devices can no longer be found

[Merged from master]

Change-Id: I5c907d8124585f9af5b3f6e7315c41cbcdd03fb9
(cherry picked from commit f2695400)
...@@ -29,6 +29,7 @@ import org.apache.felix.scr.annotations.Service; ...@@ -29,6 +29,7 @@ import org.apache.felix.scr.annotations.Service;
29 import org.onosproject.event.AbstractListenerRegistry; 29 import org.onosproject.event.AbstractListenerRegistry;
30 import org.onosproject.event.EventDeliveryService; 30 import org.onosproject.event.EventDeliveryService;
31 import org.onosproject.net.ConnectPoint; 31 import org.onosproject.net.ConnectPoint;
32 +import org.onosproject.net.Device;
32 import org.onosproject.net.DeviceId; 33 import org.onosproject.net.DeviceId;
33 import org.onosproject.net.Link; 34 import org.onosproject.net.Link;
34 import org.onosproject.net.Link.State; 35 import org.onosproject.net.Link.State;
...@@ -273,9 +274,12 @@ public class LinkManager ...@@ -273,9 +274,12 @@ public class LinkManager
273 // Removes all links in the specified set and emits appropriate events. 274 // Removes all links in the specified set and emits appropriate events.
274 private void removeLinks(Set<Link> links, boolean isSoftRemove) { 275 private void removeLinks(Set<Link> links, boolean isSoftRemove) {
275 for (Link link : links) { 276 for (Link link : links) {
276 - if (!deviceService.getDevice(link.src().deviceId()).type().equals( 277 + final Device srcDevice = deviceService.getDevice(link.src().deviceId());
277 - deviceService.getDevice(link.dst().deviceId()).type())) { 278 + final Device dstDevice = deviceService.getDevice(link.dst().deviceId());
278 - //TODO this is aweful. need to be fixed so that we don't down 279 + if (srcDevice != null &&
280 + dstDevice != null &&
281 + !srcDevice.type().equals(dstDevice.type())) {
282 + //TODO this is awful. need to be fixed so that we don't down
279 // configured links. perhaps add a mechanism to figure out the 283 // configured links. perhaps add a mechanism to figure out the
280 // state of this link 284 // state of this link
281 log.info("Ignoring removal of link as device types are " + 285 log.info("Ignoring removal of link as device types are " +
......