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