>>> 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.