CLI command to help debug the mapping of next-Objectives to the
groups that are created by device drivers.

Change-Id: Iff9e04e5e96b2cabbdb40e83215315d2e27791a6
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 2b27f0e..72fe8aa 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
@@ -1029,4 +1029,28 @@
     protected static void fail(Objective obj, ObjectiveError error) {
         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 = "";
+            for (GroupKey gk : gkd) {
+                Group g = groupService.getGroup(deviceId, gk);
+                gchain += "  0x" + Integer.toHexString(g.id().id()) + " -->";
+                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();
+                }
+            }
+            mappings.add(gchain);
+        }
+        return mappings;
+    }
 }