Update JarURLConnection to support jar:file://… URLs
Previously, JarURLConnection would fail when created with a URL that began with jar:file:// as the double-slash is not included in jarFile.getUrl().getFile(). This commit updates JarURLConnection to normalise the value return from url.getFile() to remove a double-slash when present. Fixes gh-5287 Closes gh-5289
This commit is contained in:
committed by
Andy Wilkinson
parent
d6ad4dcc11
commit
a0f76eab47
@@ -334,6 +334,22 @@ public class JarFileTests {
|
||||
assertThat(connection.getEntryName(), equalTo("2.dat"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createNonNestedUrlFromStringCreatedUsingPath() throws Exception {
|
||||
// gh-5287
|
||||
JarFile.registerUrlProtocolHandler();
|
||||
String spec = "jar:" + this.rootJarFile.toPath().toUri() + "!/2.dat";
|
||||
URL url = new URL(spec);
|
||||
assertThat(url.toString(), equalTo(spec));
|
||||
InputStream inputStream = url.openStream();
|
||||
assertThat(inputStream, notNullValue());
|
||||
assertThat(inputStream.read(), equalTo(2));
|
||||
JarURLConnection connection = (JarURLConnection) url.openConnection();
|
||||
assertThat(connection.getURL().toString(), equalTo(spec));
|
||||
assertThat(connection.getJarFileURL().toURI(), equalTo(this.rootJarFile.toURI()));
|
||||
assertThat(connection.getEntryName(), equalTo("2.dat"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getDirectoryInputStream() throws Exception {
|
||||
InputStream inputStream = this.jarFile
|
||||
|
||||
Reference in New Issue
Block a user