in src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java [414:447]
protected boolean isUpToDate(Collection/*<ResourceWithFlags>*/ src,
ArchiveFileSet existingEntries)
throws IOException {
final Resource[] srcResources = new Resource[src.size()];
int index = 0;
for (Iterator i = src.iterator(); i.hasNext(); ) {
ResourceWithFlags r = (ResourceWithFlags) i.next();
srcResources[index++] =
new MappedResource(r.getResource(),
new MergingMapper(r.getName()));
}
Resource[] outOfDate = ResourceUtils
.selectOutOfDateSources(this, srcResources,
new IdentityMapper(),
existingEntries
.getDirectoryScanner(getProject()));
if (outOfDate.length > 0 && Mode.UPDATE.equals(getMode().getValue())) {
HashSet<String> oodNames = new HashSet<>();
for (int i = 0; i < outOfDate.length; i++) {
oodNames.add(outOfDate[i].getName());
}
List/*<ResourceWithFlags>*/ copy =
new LinkedList/*<ResourceWithFlags>*/(src);
src.clear();
for (Iterator i = copy.iterator(); i.hasNext(); ) {
ResourceWithFlags r = (ResourceWithFlags) i.next();
if (oodNames.contains(r.getName())) {
src.add(r);
}
}
}
return outOfDate.length == 0;
}