in fam/src/main/java/org/apache/commons/jci2/fam/monitor/FilesystemAlterationObserverImpl.java [119:151]
private void compareChildren() {
if (!file.isDirectory()) {
return;
}
final MonitorFile[] files = file.listFiles();
final Set<Entry> deleted = new HashSet<>(children.values());
for (final MonitorFile f : files) {
final String name = f.getName();
final Entry entry = children.get(name);
if (entry != null) {
// already recognized as child
deleted.remove(entry);
if(entry.needsToBeDeleted()) {
// we have to delete this one
children.remove(name);
}
} else {
// a new child
final Entry newChild = new Entry(f);
children.put(name, newChild);
newChild.needsToBeDeleted();
}
}
// the ones not found on disk anymore
for (final Entry entry : deleted) {
entry.deleteChildrenAndNotify();
children.remove(entry.getName());
}
}