8211728: JarFile::versionedStream() does not filter META-INF resources in versioned stream
Reviewed-by: alanb
--- a/src/java.base/share/classes/java/util/jar/JarFile.java Mon Oct 08 13:56:28 2018 -0700
+++ b/src/java.base/share/classes/java/util/jar/JarFile.java Mon Oct 08 14:14:52 2018 -0700
@@ -556,7 +556,8 @@
return JUZFA.entryNameStream(this).map(this::getBasename)
.filter(Objects::nonNull)
.distinct()
- .map(this::getJarEntry);
+ .map(this::getJarEntry)
+ .filter(Objects::nonNull);
}
return stream();
}
--- a/test/jdk/java/util/jar/JarFile/mrjar/TestVersionedStream.java Mon Oct 08 13:56:28 2018 -0700
+++ b/test/jdk/java/util/jar/JarFile/mrjar/TestVersionedStream.java Mon Oct 08 14:14:52 2018 -0700
@@ -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 @@
"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 @@
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");
+ }
}
}