Remove duplicated getPairDevice implementation

Change-Id: I10847d8909070ad75e0ccbcf432b80f460a4fed1
diff --git a/app/src/main/java/org/onosproject/segmentrouting/DefaultRoutingHandler.java b/app/src/main/java/org/onosproject/segmentrouting/DefaultRoutingHandler.java
index 96f26cc..ae20b3f 100644
--- a/app/src/main/java/org/onosproject/segmentrouting/DefaultRoutingHandler.java
+++ b/app/src/main/java/org/onosproject/segmentrouting/DefaultRoutingHandler.java
@@ -47,6 +47,7 @@
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
@@ -195,12 +196,12 @@
                 EcmpShortestPathGraph ecmpSpgUpdated =
                         new EcmpShortestPathGraph(dstSw, srManager);
                 updatedEcmpSpgMap.put(dstSw, ecmpSpgUpdated);
-                DeviceId pairDev = getPairDev(dstSw);
-                if (pairDev != null) {
+                Optional<DeviceId> pairDev = srManager.getPairDeviceId(dstSw);
+                if (pairDev.isPresent()) {
                     // pairDev may not be available yet, but we still need to add
-                    ecmpSpgUpdated = new EcmpShortestPathGraph(pairDev, srManager);
-                    updatedEcmpSpgMap.put(pairDev, ecmpSpgUpdated);
-                    edgePairs.add(new EdgePair(dstSw, pairDev));
+                    ecmpSpgUpdated = new EcmpShortestPathGraph(pairDev.get(), srManager);
+                    updatedEcmpSpgMap.put(pairDev.get(), ecmpSpgUpdated);
+                    edgePairs.add(new EdgePair(dstSw, pairDev.get()));
                 }
                 DeviceId ret = shouldHandleRouting(dstSw);
                 if (ret == null) {
@@ -283,9 +284,9 @@
                 // ensure connect points are edge-pairs
                 Iterator<ConnectPoint> iter = cpts.iterator();
                 DeviceId dev1 = iter.next().deviceId();
-                DeviceId pairDev = getPairDev(dev1);
-                if (iter.next().deviceId().equals(pairDev)) {
-                    edgePairs.add(new EdgePair(dev1, pairDev));
+                Optional<DeviceId> pairDev = srManager.getPairDeviceId(dev1);
+                if (pairDev.isPresent() && iter.next().deviceId().equals(pairDev.get())) {
+                    edgePairs.add(new EdgePair(dev1, pairDev.get()));
                 } else {
                     log.warn("Connectpoints {} for subnets {} not on "
                             + "pair-devices.. aborting populateSubnet", cpts, subnets);
@@ -343,9 +344,9 @@
                         log.warn(e.getMessage() + "aborting populateSubnet on targetSw {}", targetSw.id());
                         continue;
                     }
+                    Optional<DeviceId> pairDev = srManager.getPairDeviceId(dstSw);
                     if (dstSw.equals(targetSw.id()) || !isEdge ||
-                            (cpts.size() == 2 &&
-                                targetSw.id().equals(getPairDev(dstSw)))) {
+                            (cpts.size() == 2 && pairDev.isPresent() && targetSw.id().equals(pairDev.get()))) {
                         continue;
                     }
                     routeChanges.add(Lists.newArrayList(targetSw.id(), dstSw));
@@ -414,12 +415,12 @@
                 EcmpShortestPathGraph ecmpSpgUpdated =
                         new EcmpShortestPathGraph(sw.id(), srManager);
                 updatedEcmpSpgMap.put(sw.id(), ecmpSpgUpdated);
-                DeviceId pairDev = getPairDev(sw.id());
-                if (pairDev != null) {
+                Optional<DeviceId> pairDev = srManager.getPairDeviceId(sw.id());
+                if (pairDev.isPresent()) {
                     // pairDev may not be available yet, but we still need to add
-                    ecmpSpgUpdated = new EcmpShortestPathGraph(pairDev, srManager);
-                    updatedEcmpSpgMap.put(pairDev, ecmpSpgUpdated);
-                    edgePairs.add(new EdgePair(sw.id(), pairDev));
+                    ecmpSpgUpdated = new EcmpShortestPathGraph(pairDev.get(), srManager);
+                    updatedEcmpSpgMap.put(pairDev.get(), ecmpSpgUpdated);
+                    edgePairs.add(new EdgePair(sw.id(), pairDev.get()));
                 }
             }
 
@@ -1256,8 +1257,8 @@
         // handle clearing state for a failed switch in case the switch does
         // not have a pair, or the pair is not available
         if (failedSwitch != null) {
-            DeviceId pairDev = getPairDev(failedSwitch);
-            if (pairDev == null || !srManager.deviceService.isAvailable(pairDev)) {
+            Optional<DeviceId> pairDev = srManager.getPairDeviceId(failedSwitch);
+            if (!pairDev.isPresent() || !srManager.deviceService.isAvailable(pairDev.get())) {
                 log.debug("Proxy Route changes to downed Sw:{}", failedSwitch);
                 srManager.deviceService.getDevices().forEach(dev -> {
                     if (!dev.id().equals(failedSwitch) &&
@@ -1392,22 +1393,22 @@
             return null;
         }
         NodeId myNode = srManager.mastershipService.getMasterFor(deviceId);
-        DeviceId pairDev = getPairDev(deviceId);
+        Optional<DeviceId> pairDev = srManager.getPairDeviceId(deviceId);
 
-        if (pairDev != null) {
-            if (!srManager.deviceService.isAvailable(pairDev)) {
+        if (pairDev.isPresent()) {
+            if (!srManager.deviceService.isAvailable(pairDev.get())) {
                 log.warn("pairedDev {} not available .. routing both this dev:{} "
                         + "and pair without mastership check for pair",
                           pairDev, deviceId);
-                return pairDev; // handle both temporarily
+                return pairDev.get(); // handle both temporarily
             }
-            NodeId pairMasterNode = srManager.mastershipService.getMasterFor(pairDev);
+            NodeId pairMasterNode = srManager.mastershipService.getMasterFor(pairDev.get());
             if (myNode.compareTo(pairMasterNode) <= 0) {
                 log.debug("Handling routing for both dev:{} pair-dev:{}; myNode: {}"
                         + " pairMaster:{} compare:{}", deviceId, pairDev,
                         myNode, pairMasterNode,
                         myNode.compareTo(pairMasterNode));
-                return pairDev; // handle both
+                return pairDev.get(); // handle both
             } else {
                 log.debug("PairDev node: {} should handle routing for dev:{} and "
                         + "pair-dev:{}", pairMasterNode, deviceId, pairDev);
@@ -1418,24 +1419,6 @@
     }
 
     /**
-     * Returns the configured paired DeviceId for the given Device, or null
-     * if no such paired device has been configured.
-     *
-     * @param deviceId
-     * @return configured pair deviceId or null
-     */
-    private DeviceId getPairDev(DeviceId deviceId) {
-        DeviceId pairDev;
-        try {
-            pairDev = srManager.deviceConfiguration.getPairDeviceId(deviceId);
-        } catch (DeviceConfigNotFoundException e) {
-            log.warn(e.getMessage() + " .. cannot continue routing for dev: {}");
-            return null;
-        }
-        return pairDev;
-    }
-
-    /**
      * Returns the set of deviceIds which are the next hops from the targetSw
      * to the dstSw according to the latest ECMP spg.
      *