Thomas Vachuska
Committed by Gerrit Code Review

Fixing driver matrix to consider inherited behaviours.

Change-Id: I20a6ef53975d0b9e78bdc6308e0165a181ff7046
...@@ -124,20 +124,29 @@ public class DriverViewMessageHandler extends UiMessageHandler { ...@@ -124,20 +124,29 @@ public class DriverViewMessageHandler extends UiMessageHandler {
124 drivers.forEach(d -> array.add(d.name())); 124 drivers.forEach(d -> array.add(d.name()));
125 } 125 }
126 126
127 + private Set<Driver> findLineage(Driver driver) {
128 + ImmutableSet.Builder<Driver> lineage = ImmutableSet.builder();
129 + lineage.add(driver);
130 + List<Driver> parents = driver.parents();
131 + if (parents != null) {
132 + parents.forEach(p -> lineage.addAll(findLineage(p)));
133 + }
134 + return lineage.build();
135 + }
136 +
127 private void addMatrixCells(ObjectNode root, List<Driver> drivers) { 137 private void addMatrixCells(ObjectNode root, List<Driver> drivers) {
128 ObjectNode matrix = objectNode(); 138 ObjectNode matrix = objectNode();
129 root.set(MATRIX, matrix); 139 root.set(MATRIX, matrix);
130 140
131 - drivers.forEach(d -> { 141 + drivers.forEach(driver -> {
132 ObjectNode dnode = objectNode(); 142 ObjectNode dnode = objectNode();
133 - matrix.set(d.name(), dnode); 143 + matrix.set(driver.name(), dnode);
134 - 144 + Set<Driver> lineage = findLineage(driver);
135 - d.behaviours().forEach(b -> { 145 + lineage.forEach(d -> d.behaviours().forEach(b -> {
136 // TODO: can put a payload here, rather than a '1' marker 146 // TODO: can put a payload here, rather than a '1' marker
137 dnode.put(b.getSimpleName(), ONE); 147 dnode.put(b.getSimpleName(), ONE);
138 - }); 148 + }));
139 }); 149 });
140 } 150 }
141 } 151 }
142 -
143 } 152 }
......