private boolean dependsOn()

in src/main/java/org/apache/sling/installer/core/impl/util/RefreshDependenciesUtil.java [59:91]


    private boolean dependsOn(List<Long> idChecked, Bundle target, Bundle source) {
        
        if(idChecked.contains(source.getBundleId())) {
            return false;
        }
        idChecked.add(source.getBundleId());
        
        final ExportedPackage [] eps = pckAdmin.getExportedPackages(source);
        if(eps == null) {
            return false;
        }
        
        for(ExportedPackage ep : eps) {
            final Bundle [] importers = ep.getImportingBundles();
            if(importers == null) {
                continue;
            }
            for(Bundle b : importers) {
                if(b.getBundleId() == target.getBundleId()) {
                    log.debug("{} depends on {} via package {}", 
                            new Object[] { target, source, ep.getName() });
                    return true;
                }
                if(dependsOn(idChecked, target, b)) {
                    log.debug("{} depends on {} which depends on {}, returning true",
                            new Object[] { target, b, source });
                    return true;
                }
            }
        }
        
        return false;
    }