Revert "Don't close nested jars or wrapper when parent is closed"
This reverts commit 360eb027be.
This commit is contained in:
@@ -26,8 +26,11 @@ import java.net.URL;
|
||||
import java.net.URLStreamHandler;
|
||||
import java.net.URLStreamHandlerFactory;
|
||||
import java.security.Permission;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Enumeration;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Spliterator;
|
||||
import java.util.Spliterators;
|
||||
import java.util.function.Supplier;
|
||||
@@ -93,6 +96,8 @@ public class JarFile extends AbstractJarFile implements Iterable<java.util.jar.J
|
||||
|
||||
private volatile JarFileWrapper wrapper;
|
||||
|
||||
private final List<JarFile> nestedJars = Collections.synchronizedList(new ArrayList<>());
|
||||
|
||||
/**
|
||||
* Create a new {@link JarFile} backed by the specified file.
|
||||
* @param file the root jar file
|
||||
@@ -335,8 +340,10 @@ public class JarFile extends AbstractJarFile implements Iterable<java.util.jar.J
|
||||
+ "mechanism used to create your executable jar file");
|
||||
}
|
||||
RandomAccessData entryData = this.entries.getEntryData(entry.getName());
|
||||
return new JarFile(this.rootFile, this.pathFromRoot + "!/" + entry.getName(), entryData,
|
||||
JarFile nestedJar = new JarFile(this.rootFile, this.pathFromRoot + "!/" + entry.getName(), entryData,
|
||||
JarFileType.NESTED_JAR);
|
||||
this.nestedJars.add(nestedJar);
|
||||
return nestedJar;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -361,6 +368,12 @@ public class JarFile extends AbstractJarFile implements Iterable<java.util.jar.J
|
||||
if (this.type == JarFileType.DIRECT) {
|
||||
this.rootFile.close();
|
||||
}
|
||||
if (this.wrapper != null) {
|
||||
this.wrapper.close();
|
||||
}
|
||||
for (JarFile nestedJar : this.nestedJars) {
|
||||
nestedJar.close();
|
||||
}
|
||||
this.closed = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user