Fix deleting VLANs on fabric

Change-Id: I980656b06c88c32551e549e8fd4b355ce9042a3e
diff --git a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
index ab31aee..4549bd0 100644
--- a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
+++ b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/CordFabricManager.java
@@ -49,6 +49,7 @@
 import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -240,8 +241,13 @@
 
     @Override
     public void removeVlan(VlanId vlanId) {
-        vlans.removeAll(vlanId)
-                .forEach(cp -> removeForwarding(vlanId, cp.deviceId(), cp.port()));
+        Collection<ConnectPoint> ports = vlans.removeAll(vlanId);
+
+        ports.forEach(cp -> removeForwarding(vlanId, cp.deviceId(), cp.port(),
+                                             ports.stream()
+                                                     .filter(p -> p != cp)
+                                                     .map(ConnectPoint::port)
+                                                     .collect(Collectors.toList())));
     }
 
     @Override
@@ -287,19 +293,24 @@
         flowObjectiveService.forward(deviceId, objective);
     }
 
-    private void removeForwarding(VlanId vlanId, DeviceId deviceId, PortNumber inPort) {
+    private void removeForwarding(VlanId vlanId, DeviceId deviceId, PortNumber inPort,
+                                  List<PortNumber> outPorts) {
         TrafficSelector selector = DefaultTrafficSelector.builder()
                 .matchVlanId(vlanId)
                 .matchInPort(inPort)
                 .build();
 
+        TrafficTreatment.Builder treatmentBuilder = DefaultTrafficTreatment.builder();
+
+        outPorts.forEach(p -> treatmentBuilder.setOutput(p));
+
         ForwardingObjective objective = DefaultForwardingObjective.builder()
                 .fromApp(appId)
                 .makePermanent()
                 .withFlag(ForwardingObjective.Flag.VERSATILE)
                 .withPriority(PRIORITY)
                 .withSelector(selector)
-                .withTreatment(DefaultTrafficTreatment.builder().build())
+                .withTreatment(treatmentBuilder.build())
                 .remove(new ObjectiveHandler());
 
         flowObjectiveService.forward(deviceId, objective);