in src/main/java/org/apache/sling/installer/provider/jcr/impl/WatchedFolder.java [116:155]
public ScanResult scan() throws RepositoryException {
logger.debug("Scanning {}", path);
Node folder = null;
if (session.itemExists(path)) {
final Item i = session.getItem(path);
if(i.isNode()) {
folder = (Node)i;
}
}
// Return an InstallableResource for all child nodes for which we have a NodeConverter
final ScanResult result = new ScanResult();
final Set<String> resourcesSeen = new HashSet<String>();
if (folder != null) {
scanNode(folder, result, resourcesSeen);
}
// Resources that existed but are not in resourcesSeen need to be
// unregistered from OsgiInstaller
for(final String url : existingResourceUrls) {
if(!resourcesSeen.contains(url)) {
result.toRemove.add(url);
}
}
for(final String u : result.toRemove) {
existingResourceUrls.remove(u);
digests.remove(u);
}
// Update saved digests of the resources that we're returning
for(final InstallableResource r : result.toAdd) {
existingResourceUrls.add(r.getId());
digests.put(r.getId(), r.getDigest());
}
needsScan = false;
return result;
}