Group handling changes:
      Edge case fix in group store where extraneous group buckets are updated so the group can be reused
      Bug fix for broadcast group in OF-DPA as there can only be one l2flood group per vlan
      Group operation failure codes are now reported by the provider to the core
      Group ids are displayed in hex in a couple of places

Change-Id: Ib48d21aa96e0400b77999a1b45839c28f678e524
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2GroupHandler.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2GroupHandler.java
index 56433cf..7a42d93 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2GroupHandler.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2GroupHandler.java
@@ -556,7 +556,8 @@
         }
 
         // assemble info for l2 flood group
-        Integer l2floodgroupId = L2_FLOOD_TYPE | (vlanId.toShort() << 16) | nextObj.id();
+        // since there can be only one flood group for a vlan, its index is always the same - 0
+        Integer l2floodgroupId = L2_FLOOD_TYPE | (vlanId.toShort() << 16);
         int l2floodgk = L2_FLOOD_TYPE | nextObj.id() << 12;
         final GroupKey l2floodgroupkey = new DefaultGroupKey(OFDPA2Pipeline.appKryo.serialize(l2floodgk));
         // collection of group buckets pointing to all the l2 interface groups
@@ -1007,7 +1008,7 @@
         if (gceSet != null) {
             for (GroupChainElem gce : gceSet) {
                 log.info("Group service {} group key {} in device {}. "
-                                + "Processing next group in group chain with group id {}",
+                                + "Processing next group in group chain with group id 0x{}",
                         (added) ? "ADDED" : "processed",
                         key, deviceId,
                         Integer.toHexString(gce.groupDescription.givenGroupId()));
@@ -1020,7 +1021,7 @@
                 pendingNextObjectives.invalidate(key);
                 nextGrpList.forEach(nextGrp -> {
                     log.info("Group service {} group key {} in device:{}. "
-                                    + "Done implementing next objective: {} <<-->> gid:{}",
+                                    + "Done implementing next objective: {} <<-->> gid:0x{}",
                             (added) ? "ADDED" : "processed",
                             key, deviceId, nextGrp.nextObjective().id(),
                             Integer.toHexString(groupService.getGroup(deviceId, key)
@@ -1116,7 +1117,6 @@
             this.nextObj = nextObj;
         }
 
-        @SuppressWarnings("unused")
         public List<Deque<GroupKey>> groupKey() {
             return gkeys;
         }