Fixing driver matrix to consider inherited behaviours.
Change-Id: I20a6ef53975d0b9e78bdc6308e0165a181ff7046
diff --git a/apps/drivermatrix/src/main/java/org/onosproject/drivermatrix/DriverViewMessageHandler.java b/apps/drivermatrix/src/main/java/org/onosproject/drivermatrix/DriverViewMessageHandler.java
index 148cfbe..7f1443a 100644
--- a/apps/drivermatrix/src/main/java/org/onosproject/drivermatrix/DriverViewMessageHandler.java
+++ b/apps/drivermatrix/src/main/java/org/onosproject/drivermatrix/DriverViewMessageHandler.java
@@ -124,20 +124,29 @@
drivers.forEach(d -> array.add(d.name()));
}
+ private Set<Driver> findLineage(Driver driver) {
+ ImmutableSet.Builder<Driver> lineage = ImmutableSet.builder();
+ lineage.add(driver);
+ List<Driver> parents = driver.parents();
+ if (parents != null) {
+ parents.forEach(p -> lineage.addAll(findLineage(p)));
+ }
+ return lineage.build();
+ }
+
private void addMatrixCells(ObjectNode root, List<Driver> drivers) {
ObjectNode matrix = objectNode();
root.set(MATRIX, matrix);
- drivers.forEach(d -> {
+ drivers.forEach(driver -> {
ObjectNode dnode = objectNode();
- matrix.set(d.name(), dnode);
-
- d.behaviours().forEach(b -> {
+ matrix.set(driver.name(), dnode);
+ Set<Driver> lineage = findLineage(driver);
+ lineage.forEach(d -> d.behaviours().forEach(b -> {
// TODO: can put a payload here, rather than a '1' marker
dnode.put(b.getSimpleName(), ONE);
- });
+ }));
});
}
}
-
}