in src/main/java/org/apache/sling/resourceresolver/impl/FactoryPreconditions.java [141:176]
public boolean checkPreconditions() {
boolean canRegister = true;
for (final RequiredProvider rp : requiredProviders) {
canRegister = false;
for (final ResourceProviderHandler h :
tracker.getResourceProviderStorage().getAllHandlers()) {
final ResourceProviderInfo info = h.getInfo();
if (info == null) {
// provider has been deactivated in the meantime
// ignore and continue
continue;
}
@SuppressWarnings("rawtypes")
final ServiceReference ref = info.getServiceReference();
final Object servicePid = ref.getProperty(Constants.SERVICE_PID);
if (rp.name != null && rp.name.equals(info.getName())) {
canRegister = true;
break;
} else if (rp.filter != null && rp.filter.match(ref)) {
canRegister = true;
break;
} else if (rp.pid != null && rp.pid.equals(servicePid)) {
canRegister = true;
break;
} else if (rp.pid != null
&& rp.pid.equals(ref.getProperty(LegacyResourceProviderWhiteboard.ORIGINAL_SERVICE_PID))) {
canRegister = true;
break;
}
}
if (!canRegister) {
break;
}
}
return canRegister;
}