in src/main/java/org/apache/sling/installer/core/impl/OsgiInstallerImpl.java [480:521]
public void registerResources(final String scheme, final InstallableResource[] resources) {
this.listener.start();
try {
List<InternalResource> incomingResources = this.createResources(scheme, resources);
if ( incomingResources == null ) {
// create empty list to make processing easier
incomingResources = new ArrayList<>();
}
logger.debug("Registered new resource scheme: {}", scheme);
synchronized (this.resourcesLock) {
this.newResourcesSchemes.put(scheme, incomingResources);
// Update new/removed resources
final String prefix = scheme + ':';
// newResources are the ones that arrived (via updateResources IIUC)
// since the last call to this method. Here we remove all newResources
// that match our prefix, as the incoming ones replace them
final Iterator<InternalResource> rsrcIter = this.newResources.iterator();
while ( rsrcIter.hasNext() ) {
final InternalResource rsrc = rsrcIter.next();
if ( rsrc.getURL().startsWith(prefix) ) {
prepareToRemove(rsrc, incomingResources);
rsrcIter.remove();
}
}
// removed urls
final Iterator<String> urlIter = this.urlsToRemove.iterator();
while ( urlIter.hasNext() ) {
final String url = urlIter.next();
if ( url.startsWith(prefix) ) {
urlIter.remove();
}
}
}
this.wakeUp();
} finally {
// we simply close all input streams now
this.closeInputStreams(resources);
}
}