private void verifyDependenciesTree()

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);
                }
            }
        }
    }