Skip to content

Commit

Permalink
replace JarURLConnection.getJarFileURL() by .getURL()
Browse files Browse the repository at this point in the history
For typical plain JAR URLs this doesn't make a real difference,
but for special JAR URLs, like Spring Boot uses, it does.
The problem showed with nested JAR URLs of Spring Boot.
Those have a format like
```
jar:nested:/some/file.jar/!BOOT-INF/lib/nested.jar!/com/example/MyClass.class
```
Here the `connection.getJarFileURL()` is
```
nested:/some/file.jar/!BOOT-INF/lib/nested.jar
```
but the `connection.getURL()` is
```
jar:nested:/some/file.jar/!BOOT-INF/lib/nested.jar!/
```
Using the latter yields the correct result and allows the custom JAR URL handler to kick in.
Using the former will yield an exception that ArchUnit doesn't understand the scheme `nested`.

Signed-off-by: Peter Gafert <peter.gafert@archunit.org>
(cherry picked from commit 2ac2a4e)
  • Loading branch information
codecholeric committed Apr 25, 2024
1 parent 9f276fa commit 1d50ff7
Showing 1 changed file with 1 addition and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ private ClassFileInJar(JarURLConnection connection, JarEntry jarEntry) {
}

private URI makeJarUri(JarEntry input) {
return Location.of(connection.getJarFileURL()).append(input.getName()).asURI();
return Location.of(connection.getURL()).append(input.getName()).asURI();
}

URI getUri() {
Expand Down

0 comments on commit 1d50ff7

Please sign in to comment.