return Iterators.emptyIterator();
}
ObjectDatabase leftSource = resolveSource(oldTree.getId());
ObjectDatabase rightSource = resolveSource(newTree.getId());
final PreOrderDiffWalk visitor = new PreOrderDiffWalk(oldTree, newTree, leftSource,
rightSource);
final BlockingQueue<DiffEntry> queue = new ArrayBlockingQueue<>(100);
final DiffEntryProducer diffProducer = new DiffEntryProducer(queue);
diffProducer.setReportTrees(this.reportTrees);
diffProducer.setRecursive(this.recursive);
final List<RuntimeException> producerErrors = new LinkedList<>();
Thread producerThread = new Thread("DiffTree producer thread") {
@Override
public void run() {
Consumer consumer = diffProducer;
if (customFilter != null) {// evaluated the latest
consumer = new PreOrderDiffWalk.FilteringConsumer(consumer, customFilter);
}
if (changeTypeFilter != null) {
consumer = new ChangeTypeFilteringDiffConsumer(changeTypeFilter, consumer);
}
if (boundsFilter != null) {
consumer = new BoundsFilteringDiffConsumer(boundsFilter, consumer,
stagingDatabase());
}
if (!pathFilters.isEmpty()) {// evaluated the former
consumer = new PathFilteringDiffConsumer(pathFilters, consumer);
}
try {
visitor.walk(consumer);
} catch (RuntimeException e) {
LOGGER.error("Error traversing diffs", e);
producerErrors.add(e);
} finally {
diffProducer.finished = true;