[SEBA-42] Operational Status Multicast Source

Change-Id: I420254a9a62d1ac9c9f4cab04fc2a44a81f2eb16
diff --git a/src/main/java/org/opencord/cordmcast/CordMcast.java b/src/main/java/org/opencord/cordmcast/CordMcast.java
index 108ceda..0d20e9c 100644
--- a/src/main/java/org/opencord/cordmcast/CordMcast.java
+++ b/src/main/java/org/opencord/cordmcast/CordMcast.java
@@ -87,9 +87,10 @@
 import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;
 import static org.onlab.util.Tools.get;
 import static org.onlab.util.Tools.groupedThreads;
-import static org.opencord.cordmcast.OsgiPropertyConstants.DEFAULT_VLAN_ENABLED;
+
 import static org.opencord.cordmcast.OsgiPropertyConstants.DEFAULT_PRIORITY;
 import static org.opencord.cordmcast.OsgiPropertyConstants.PRIORITY;
+import static org.opencord.cordmcast.OsgiPropertyConstants.DEFAULT_VLAN_ENABLED;
 import static org.opencord.cordmcast.OsgiPropertyConstants.VLAN_ENABLED;
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -145,7 +146,11 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY)
     protected SadisService sadisService;
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY)
+    protected CordMcastStatisticsService cordMcastStatisticsService;
+
     protected McastListener listener = new InternalMulticastListener();
+
     private InternalNetworkConfigListener configListener =
             new InternalNetworkConfigListener();
 
@@ -220,10 +225,26 @@
 
         McastConfig config = networkConfig.getConfig(coreAppId, CORD_MCAST_CONFIG_CLASS);
         updateConfig(config);
-
         log.info("Started");
     }
 
+    @Modified
+    public void modified(ComponentContext context) {
+        Dictionary<?, ?> properties = context != null ? context.getProperties() : new Properties();
+
+        String s = get(properties, VLAN_ENABLED);
+        vlanEnabled = isNullOrEmpty(s) ? DEFAULT_VLAN_ENABLED : Boolean.parseBoolean(s.trim());
+
+        try {
+            s = get(properties, PRIORITY);
+            priority = isNullOrEmpty(s) ? DEFAULT_PRIORITY : Integer.parseInt(s.trim());
+        } catch (NumberFormatException ne) {
+            log.error("Unable to parse configuration parameter for priority", ne);
+            priority = DEFAULT_PRIORITY;
+        }
+        cordMcastStatisticsService.setVlanValue(assignedVlan());
+    }
+
     @Deactivate
     public void deactivate() {
         componentConfigService.unregisterProperties(getClass(), false);
@@ -274,28 +295,10 @@
         return VlanId.vlanId(mcastVlan);
     }
 
-    private VlanId assignedVlan() {
+    protected VlanId assignedVlan() {
         return vlanEnabled ? multicastVlan() : VlanId.NONE;
     }
 
-    @Modified
-    public void modified(ComponentContext context) {
-        Dictionary<?, ?> properties = context != null ? context.getProperties() : new Properties();
-
-        try {
-            String s = get(properties, "vlanEnabled");
-            vlanEnabled = isNullOrEmpty(s) ? DEFAULT_VLAN_ENABLED : Boolean.parseBoolean(s.trim());
-
-            s = get(properties, "priority");
-            priority = isNullOrEmpty(s) ? DEFAULT_PRIORITY : Integer.parseInt(s.trim());
-
-        } catch (Exception e) {
-            log.error("Unable to parse configuration parameter.", e);
-            vlanEnabled = false;
-            priority = DEFAULT_PRIORITY;
-        }
-    }
-
     private class InternalMulticastListener implements McastListener {
         @Override
         public void event(McastEvent event) {
@@ -427,6 +430,7 @@
     }
 
     private void addSink(McastRoute route, ConnectPoint sink) {
+
         if (!isLocalLeader(sink.deviceId())) {
             log.debug("Not the leader of {}. Skip sink_added event for the sink {} and group {}",
                       sink.deviceId(), sink, route.group());