This is a rough sketch of my current ideas, as I won't have the time to work on this this week and I know Antoine wants to get his feet wet.
Stefan I'm trying to combine Antoine's and my ideas a little here: * introduce Resource with name, exists and lastmodified as attributes. more can be added later, if needed. should probably go into the types package. * introduce ResourceFactory interface with one method: Resource getResource(String name) types package (or util?). * make ZipScanner return the names of the ZipEntries instead of the name of the archive in getIncludedFiles and so on. * introduce SourceSelector with a method Resource[] selectOutOfDateSources(Resource[] source, FileNameMapper mapper, ResourceFactory targets) that would basically do what SourceFileScanner#restrict does today, but worked on the lastmodfied properties of the Resources. util package. * in Zip - use Resources wrapped around Files for "normal" <fileset>s and wrapped around ZipEntrys for <zipfilesets> that use the src attribute. - use a ResourceFactory that wraps resources around ZipEntrys of the existing archive. - short-circuit, if the archive doesn't exis, off course. we'll probably want to cache the Resources of the existing archive so that we don't re-read the archive for each fileset. * make SourceFileScanner delegate to SourceSelector using a built-in ResourceFactory that wraps Resources around "new File(srcDir, files[i])" and "new File(destDir, name)" respectively. this is here for backwards compatibilty. Optional, not really necessary to fix the bug. * make DirectoryScanner implement ResourceFactory will return a Resource that wraps "new File(dir, name)" * make ZipScanner override the method so that it will return a wrapper around the correct ZipEntry. * something similar needs to be done to FTPDirectoryScanner in oata.taskdefs.optional.net.FTP. * add getIncludedResources() and so on to DirectoryScanner that return Resource instances instead of names. use these methods in all tasks and use SourceSelector instead of SourceFileScanner. -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>