[CORD-2903] Improve SR/Multicast APIs

Change-Id: Id44af87569e0a83129c96504b21c69e1d455f785
(cherry picked from commit a2858a34a26e02e9d2dd66dc562d0f6fb2c4bdd1)
diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastUtils.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastUtils.java
index 924794b..fc89fde 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastUtils.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastUtils.java
@@ -55,7 +55,6 @@
 import org.slf4j.Logger;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
@@ -234,10 +233,11 @@
      *
      * @param mcastIp multicast IP
      * @return source connect point or null if not found
+     *
+     * @deprecated in 1.12 ("Magpie") release.
      */
-    // FIXME To be addressed with multiple sources support
+    @Deprecated
     ConnectPoint getSource(IpAddress mcastIp) {
-        // FIXME we should support different types of routes
         McastRoute mcastRoute = srManager.multicastRouteService.getRoutes().stream()
                 .filter(mcastRouteInternal -> mcastRouteInternal.group().equals(mcastIp))
                 .findFirst().orElse(null);
@@ -247,6 +247,21 @@
     }
 
     /**
+     * Gets sources connect points of given multicast group.
+     *
+     * @param mcastIp multicast IP
+     * @return sources connect points or empty set if not found
+     */
+    Set<ConnectPoint> getSources(IpAddress mcastIp) {
+        // FIXME we should support different types of routes
+        McastRoute mcastRoute = srManager.multicastRouteService.getRoutes().stream()
+                .filter(mcastRouteInternal -> mcastRouteInternal.group().equals(mcastIp))
+                .findFirst().orElse(null);
+        return mcastRoute == null ? ImmutableSet.of() :
+                srManager.multicastRouteService.sources(mcastRoute);
+    }
+
+    /**
      * Gets sinks of given multicast group.
      *
      * @param mcastIp multicast IP
@@ -258,7 +273,7 @@
                 .filter(mcastRouteInternal -> mcastRouteInternal.group().equals(mcastIp))
                 .findFirst().orElse(null);
         return mcastRoute == null ?
-                Collections.emptyMap() :
+                ImmutableMap.of() :
                 srManager.multicastRouteService.routeData(mcastRoute).sinks();
     }