Fixing a couple of NPEs
Change-Id: I19b5a2787b26e67e05640f6c64a13b58f2dc089a
diff --git a/src/main/java/org/onosproject/segmentrouting/config/DeviceConfiguration.java b/src/main/java/org/onosproject/segmentrouting/config/DeviceConfiguration.java
index 5d48b6d..11c3d38 100644
--- a/src/main/java/org/onosproject/segmentrouting/config/DeviceConfiguration.java
+++ b/src/main/java/org/onosproject/segmentrouting/config/DeviceConfiguration.java
@@ -264,12 +264,16 @@
}
@Override
- public Map<Ip4Prefix, List<PortNumber>> getSubnetPortsMap(DeviceId deviceId) {
- Map<Ip4Prefix, List<PortNumber>> subnetPortMap = new HashMap<>();
-
+ public Map<Ip4Prefix, List<PortNumber>> getSubnetPortsMap(DeviceId deviceId)
+ throws DeviceConfigNotFoundException {
+ SegmentRouterInfo srinfo = deviceConfigMap.get(deviceId);
+ if (srinfo == null) {
+ String message = "getSubnetPortsMap fails for device: " + deviceId + ".";
+ throw new DeviceConfigNotFoundException(message);
+ }
// Construct subnet-port mapping from port-subnet mapping
- SetMultimap<PortNumber, Ip4Prefix> portSubnetMap =
- this.deviceConfigMap.get(deviceId).subnets;
+ SetMultimap<PortNumber, Ip4Prefix> portSubnetMap = srinfo.subnets;
+ Map<Ip4Prefix, List<PortNumber>> subnetPortMap = new HashMap<>();
portSubnetMap.entries().forEach(entry -> {
PortNumber port = entry.getKey();
diff --git a/src/main/java/org/onosproject/segmentrouting/config/DeviceProperties.java b/src/main/java/org/onosproject/segmentrouting/config/DeviceProperties.java
index 9d4d884..632eeec 100644
--- a/src/main/java/org/onosproject/segmentrouting/config/DeviceProperties.java
+++ b/src/main/java/org/onosproject/segmentrouting/config/DeviceProperties.java
@@ -93,8 +93,10 @@
*
* @param deviceId device identifier
* @return a map that contains all subnet-to-ports mapping of given device
+ * @throws DeviceConfigNotFoundException
*/
- Map<Ip4Prefix, List<PortNumber>> getSubnetPortsMap(DeviceId deviceId);
+ Map<Ip4Prefix, List<PortNumber>> getSubnetPortsMap(DeviceId deviceId)
+ throws DeviceConfigNotFoundException;
/**
* Returns the VLAN cross-connect configuration.