[SDFAB-359] Purge all objective for a given application ID

Change-Id: I51847b0be890deacec5caddc18d52bcd2993959a
(cherry picked from commit 607fd0b70e4553226d0937d36de9cde655f2eb62)
diff --git a/apps/virtual/app/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkFlowObjectiveManager.java b/apps/virtual/app/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkFlowObjectiveManager.java
index 0a5a509..b4c84b6 100644
--- a/apps/virtual/app/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkFlowObjectiveManager.java
+++ b/apps/virtual/app/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkFlowObjectiveManager.java
@@ -26,6 +26,7 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.onlab.osgi.ServiceDirectory;
 import org.onlab.util.KryoNamespace;
+import org.onosproject.core.ApplicationId;
 import org.onosproject.incubator.net.virtual.AbstractVnetService;
 import org.onosproject.incubator.net.virtual.NetworkId;
 import org.onosproject.incubator.net.virtual.VirtualNetworkFlowObjectiveStore;
@@ -248,6 +249,12 @@
         return pendingFlowObjectives;
     }
 
+    @Override
+    public void purgeAll(DeviceId deviceId, ApplicationId appId) {
+        // TODO: purge queued flow objectives?
+        pipeliners.get(deviceId).purgeAll(appId);
+    }
+
     private boolean queueFwdObjective(DeviceId deviceId, ForwardingObjective fwd) {
         boolean queued = false;
         synchronized (pendingForwards) {
@@ -696,6 +703,11 @@
         }
 
         @Override
+        public void purgeAll(ApplicationId appId) {
+            flowRuleService.purgeFlowRules(deviceId, appId);
+        }
+
+        @Override
         public List<String> getNextMappings(NextGroup nextGroup) {
             // Default single table pipeline does not use nextObjectives or groups
             return null;