In this commit:
    Removing dependence on hashing for unique groupkeys in ofdpa driver.
    Group-store no longer removes groups from store if a group-operation fails due to GROUP_EXISTS.
    Group-store also checks for unique group-id when given by app.
    Group-provider now logs warning before making call to core.

Change-Id: I4a1dcb887cb74cd6e245df0c82c90a50d8f3898a
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java
index 72fe8aa..4ccf671 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java
@@ -1030,26 +1030,30 @@
         obj.context().ifPresent(context -> context.onError(obj, error));
     }
 
-
     @Override
     public List<String> getNextMappings(NextGroup nextGroup) {
         List<String> mappings = new ArrayList<>();
         List<Deque<GroupKey>> gkeys = appKryo.deserialize(nextGroup.data());
         for (Deque<GroupKey> gkd : gkeys) {
             Group lastGroup = null;
-            String gchain = "";
+            StringBuffer gchain = new StringBuffer();
             for (GroupKey gk : gkd) {
                 Group g = groupService.getGroup(deviceId, gk);
-                gchain += "  0x" + Integer.toHexString(g.id().id()) + " -->";
+                if (g == null) {
+                    gchain.append("  ERROR").append(" -->");
+                    continue;
+                }
+                gchain.append("  0x").append(Integer.toHexString(g.id().id()))
+                    .append(" -->");
                 lastGroup = g;
             }
             // add port information for last group in group-chain
             for (Instruction i: lastGroup.buckets().buckets().get(0).treatment().allInstructions()) {
                 if (i instanceof OutputInstruction) {
-                    gchain += " port:" + ((OutputInstruction) i).port();
+                    gchain.append(" port:").append(((OutputInstruction) i).port());
                 }
             }
-            mappings.add(gchain);
+            mappings.add(gchain.toString());
         }
         return mappings;
     }