in src/main/java/org/apache/sling/feature/analyser/task/impl/CheckContentPackagesDependencies.java [103:131]
private void verifyDependenciesTree(
AnalyserTaskContext ctx, PackageId root, Map<PackageId, Dependency[]> dependenciesMap) {
logger.debug("Verifying " + root + " transitive dependencies...");
Queue<Dependency> toBeVisited = new LinkedList<>();
enqueue(toBeVisited, dependenciesMap.get(root));
Set<Dependency> alreadyVisited = new HashSet<>();
while (!toBeVisited.isEmpty()) {
Dependency current = toBeVisited.poll();
if (alreadyVisited.add(current)) {
boolean found = false;
for (Entry<PackageId, Dependency[]> entry : dependenciesMap.entrySet()) {
if (current.matches(entry.getKey())) {
enqueue(toBeVisited, entry.getValue());
found = true;
break;
}
}
if (!found) {
ctx.reportError("Missing " + current + " dependency for " + root);
}
}
}
}