private void addWithRequirements()

in src/main/java/org/apache/sling/graphql/schema/aggregator/impl/DefaultSchemaAggregator.java [161:181]


    private void addWithRequirements(Map<PartialInfo, Partial> providers, Set<Partial> addTo, Set<String> missing, Partial p, int recursionLevel) {

        // simplistic cycle detection
        if(recursionLevel > MAX_REQUIREMENTS_RECURSION_LEVEL) {
            throw new RuntimeException(String.format(
                "Requirements depth over %d, requirements cycle suspected at partial %s", 
                MAX_REQUIREMENTS_RECURSION_LEVEL,
                p.getPartialInfo()
            ));
        }

        addTo.add(p);
        for(PartialInfo req : p.getRequiredPartialNames()) {
            final Partial preq = providers.get(req);
            if(preq == null) {
                missing.add(req.toString());
            } else {
                addWithRequirements(providers, addTo, missing, preq, recursionLevel + 1);
            }
        }
    }