8211728: JarFile::versionedStream() does not filter META-INF resources in versioned stream

Reviewed-by: alanb
This commit is contained in:
Xueming Shen 2018-10-08 14:14:52 -07:00
parent 85c6642e38
commit 859d376494
2 changed files with 10 additions and 3 deletions

View File

@ -556,7 +556,8 @@ class JarFile extends ZipFile {
return JUZFA.entryNameStream(this).map(this::getBasename)
.filter(Objects::nonNull)
.distinct()
.map(this::getJarEntry);
.map(this::getJarEntry)
.filter(Objects::nonNull);
}
return stream();
}

View File

@ -23,7 +23,7 @@
/*
* @test
* @bug 8163798 8189611
* @bug 8163798 8189611 8211728
* @summary basic tests for multi-release jar versioned streams
* @library /test/lib
* @modules jdk.jartool/sun.tools.jar java.base/jdk.internal.util.jar
@ -82,7 +82,8 @@ public class TestVersionedStream {
"v10/p/Foo.class",
"v10/q/Bar.class",
"v" + LATEST_VERSION + "/p/Bar.class",
"v" + LATEST_VERSION + "/p/Foo.class"
"v" + LATEST_VERSION + "/p/Foo.class",
"v" + LATEST_VERSION + "/META-INF/Foo.class"
);
jar("cf mmr.jar -C base . " +
@ -224,6 +225,11 @@ public class TestVersionedStream {
throw new UncheckedIOException(x);
}
});
if (!unversionedEntryNames.contains("META-INF/Foo.class") ||
versionedNames.indexOf("META-INF/Foo.class") != -1) {
Assert.fail("versioned META-INF/Foo.class test failed");
}
}
}