>>> One other thing that I've been wondering about is the stream() and
>>> entries() methods. Has there been any discussion about these doing filter?
>>
>> Not that I’m aware of.
>>
>>> Maybe it is too expensive and best left to the user of the API? Part of the
>>> context for asking is modular JARs of course.
>>
>> Perhaps you can elaborate.
>
> Alan’s point is that traversing using entries()/stream() always returns the
> versioned entries (if any) rather than all entries, thus in a sense filters.
>
> My assumption was the traversal should by default be consistent with a calls
> to getEntry, thus:
>
> jarFile.stream().forEach(e -> {
> JarEntry je = jarFile.getJarEntry(e.getName());
> assert e.equals(je);
> });
>
> There might need to be another stream method that returns all entries.
JarFile.entries() and JarFile.stream() return all the entries; they are not
filtered. Your example would work if the JarFile is constructed without a
Release argument or with the Release.BASE argument. The assertion would fail
if it’s constructed with any other Release argument. Adding a filter and a map
to the stream pipeline would make your example succeed with all values of
Release.