@@ -1371,29 +1371,8 @@ public class Zip extends MatchingTask {
}
}
Resource[] resources = selectFileResources(initialResources[i]);
newerResources[i] =
ResourceUtils.selectOutOfDateSources(this,
resources,
myMapper,
getZipScanner());
if (!doFilesonly) {
Union u = new Union();
u.addAll(Arrays
.asList(selectDirectoryResources(initialResources[i])));
ResourceCollection rc =
ResourceUtils.selectSources(this, u,
myMapper,
getZipScanner(),
MISSING_DIR_PROVIDER);
if (rc.size() > 0) {
ArrayList newer = new ArrayList();
newer.addAll(Arrays.asList(((Union) rc).listResources()));
newer.addAll(Arrays.asList(newerResources[i]));
newerResources[i] =
(Resource[]) newer.toArray(newerResources[i]);
}
}
newerResources[i] = selectOutOfDateResources(initialResources[i],
myMapper);
needsUpdate = needsUpdate || (newerResources[i].length > 0);
if (needsUpdate && !doUpdate) {
@@ -1477,29 +1456,8 @@ public class Zip extends MatchingTask {
}
}
Resource[] rs = selectFileResources(initialResources[i]);
newerResources[i] =
ResourceUtils.selectOutOfDateSources(this,
rs,
new IdentityMapper(),
getZipScanner());
if (!doFilesonly) {
Union u = new Union();
u.addAll(Arrays
.asList(selectDirectoryResources(initialResources[i])));
ResourceCollection rc =
ResourceUtils.selectSources(this, u,
new IdentityMapper(),
getZipScanner(),
MISSING_DIR_PROVIDER);
if (rc.size() > 0) {
ArrayList newer = new ArrayList();
newer.addAll(Arrays.asList(((Union) rc).listResources()));
newer.addAll(Arrays.asList(newerResources[i]));
newerResources[i] =
(Resource[]) newer.toArray(newerResources[i]);
}
}
newerResources[i] = selectOutOfDateResources(initialResources[i],
new IdentityMapper());
needsUpdate = needsUpdate || (newerResources[i].length > 0);
if (needsUpdate && !doUpdate) {
@@ -1517,6 +1475,29 @@ public class Zip extends MatchingTask {
return new ArchiveState(needsUpdate, newerResources);
}
private Resource[] selectOutOfDateResources(Resource[] initial,
FileNameMapper mapper) {
Resource[] rs = selectFileResources(initial);
Resource[] result =
ResourceUtils.selectOutOfDateSources(this, rs, mapper,
getZipScanner());
if (!doFilesonly) {
Union u = new Union();
u.addAll(Arrays.asList(selectDirectoryResources(initial)));
ResourceCollection rc =
ResourceUtils.selectSources(this, u, mapper,
getZipScanner(),
MISSING_DIR_PROVIDER);
if (rc.size() > 0) {
ArrayList newer = new ArrayList();
newer.addAll(Arrays.asList(((Union) rc).listResources()));
newer.addAll(Arrays.asList(result));
result = (Resource[]) newer.toArray(result);
}
}
return result;
}
/**
* Fetch all included and not excluded resources from the sets.
*