Segment Routing refactoring

- Change name: McastEventHandler -> McastHandler
- Separate HostHandler from SRManager
- Move storekeys to a dedicated package
- Replace SRObjevtiveContext and BridgeTableObjectiveContext with DefaultObjectiveContext

Change-Id: Iab25529487004759105e5ba60c1d2a3852ac45e6
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/NetworkConfigEventHandler.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/NetworkConfigEventHandler.java
index 0c3fac7..d0f6fc4 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/NetworkConfigEventHandler.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/NetworkConfigEventHandler.java
@@ -23,7 +23,9 @@
 import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.flow.criteria.Criteria;
 import org.onosproject.net.flowobjective.DefaultFilteringObjective;
+import org.onosproject.net.flowobjective.DefaultObjectiveContext;
 import org.onosproject.net.flowobjective.FilteringObjective;
+import org.onosproject.net.flowobjective.ObjectiveContext;
 import org.onosproject.segmentrouting.config.DeviceConfigNotFoundException;
 import org.onosproject.segmentrouting.config.SegmentRoutingAppConfig;
 import org.slf4j.Logger;
@@ -117,9 +119,11 @@
             return;
         }
         getVRouterFlowObjBuilders(pendingAdd).forEach(foBuilder -> {
-            srManager.flowObjectiveService.
-                    filter(deviceId, foBuilder.add(new SRObjectiveContext(deviceId,
-                            SRObjectiveContext.ObjectiveType.FILTER)));
+            ObjectiveContext context = new DefaultObjectiveContext(
+                    (objective) -> log.debug("vRouterMac filter for {} populated", pendingAdd),
+                    (objective, error) ->
+                            log.warn("Failed to populate vRouterMac filter for {}: {}", pendingAdd, error));
+            srManager.flowObjectiveService.filter(deviceId, foBuilder.add(context));
         });
     }
 
@@ -128,9 +132,11 @@
             return;
         }
         getVRouterFlowObjBuilders(pendingRemove).forEach(foBuilder -> {
-            srManager.flowObjectiveService.
-                    filter(deviceId, foBuilder.remove(new SRObjectiveContext(deviceId,
-                            SRObjectiveContext.ObjectiveType.FILTER)));
+            ObjectiveContext context = new DefaultObjectiveContext(
+                    (objective) -> log.debug("vRouterMac filter for {} revoked", pendingRemove),
+                    (objective, error) ->
+                            log.warn("Failed to revoke vRouterMac filter for {}: {}", pendingRemove, error));
+            srManager.flowObjectiveService.filter(deviceId, foBuilder.remove(context));
         });
     }