I'll summarize what has happened in this mail and send a different one
on issues I have myself with the changes.

I ask you to take this summary as starting points to actually review
the code.

(1) New data-type Resource

this is an abstraction of File and ZipEntry (for now) that is used to
handle <zipfileset> and <fileset> in a uniform way inside <zip>.

More importantly it is needed to adapt the old SourceFileScanner logic
in a way that the target is not a file, but a ZipEntry.  This change
is crucial to fix 10755 as we need a way to compare timestamps of the
files to add with the corresponding ZipEntries in the target archive.

(2) New interface ResourceFactory

implemented by DirectoryScanner and ZipScanner for now.  A simple way
to get the Resource corresponding to a name (as returned by a
FileNameMapper).

(3) New interface ResourceScanner that adds getIncludedFileResources
and getIncludedDirectoryResources to FileScanner.

implemented by DirectoryScanner and overridden in ZipScanner.

(4) New utility class SourceSelector.

This is basically SourceFileScanner extended to the Resource concept,
chosing some better names on the way.

Contains a lot of code moved over from SourceFileScanner.

(5) SourceFileScanner now delegates to SourceSelector.

This is basically a boackwards compatibility step.  This also means
that bugs introduced via the Resource concept will affect all tasks
using SourceFileScanner.

(6) ZipScanner now really parses the archive instead of returning the
archive itself in getIncludedFiles.

It has only ever been used in <zip>, and here it is needed to get the
fix right.  It breaks backwards compatibility and will be marked as
such in WHATSNEW.

(7) Zip has more or less been completely rewritten.

It breaks API backwards compatibility and will be marked as such in
WHATSNEW.

(8) Jar, War and Ear have been adapted to changes in Zip.

It breaks API backwards compatibility and will be marked as such in
WHATSNEW.

Stefan

Reply via email to