in tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java [218:241]
private synchronized void buildTreeRecursive(
RibNode node, @Nullable TargetInfo targetInfo, int depth) {
List<UUID> childIds = children.get(node.getId());
if (childIds == null) {
return;
}
for (UUID childId : childIds) {
Router router = getRouterFromId(childId);
if (router == null) {
throw new IllegalArgumentException();
}
View view = router instanceof ViewRouter ? ((ViewRouter) router).getView() : null;
RibView ribView = view != null ? buildRibView(view) : null;
RibNode childNode = new RibNode(router.getClass().getName(), childId, ribView);
if (targetInfo != null
&& view != null
&& depth > targetInfo.nodeDepth
&& viewIncludesTarget(view, targetInfo.targetX, targetInfo.targetY)) {
targetInfo.setNode(childNode, depth);
}
node.addChildren(childNode);
buildTreeRecursive(childNode, targetInfo, depth + 1);
}
}