in src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverFactoryActivator.java [578:602]
private void checkFactoryPreconditions(final String unavailableName, final String unavailableServicePid) {
final BundleContext localContext = this.getBundleContext();
if ( localContext != null ) {
final boolean result = this.preconds.checkPreconditions(unavailableName, unavailableServicePid);
if ( result && this.factoryRegistration == null ) {
// check system bundle state - if stopping, don't register new factory
final Bundle systemBundle = localContext.getBundle(Constants.SYSTEM_BUNDLE_LOCATION);
if ( systemBundle != null && systemBundle.getState() != Bundle.STOPPING ) {
boolean create = true;
synchronized ( this ) {
if ( this.factoryRegistration == null ) {
this.factoryRegistration = new FactoryRegistration();
} else {
create = false;
}
}
if ( create ) {
this.registerFactory(localContext);
}
}
} else if ( !result && this.factoryRegistration != null ) {
this.unregisterFactory();
}
}
}