diff --git a/hibernate-core/src/main/java/org/hibernate/boot/archive/internal/JarFileBasedArchiveDescriptor.java b/hibernate-core/src/main/java/org/hibernate/boot/archive/internal/JarFileBasedArchiveDescriptor.java index eb1212fa71..8ba2f98d54 100644 --- a/hibernate-core/src/main/java/org/hibernate/boot/archive/internal/JarFileBasedArchiveDescriptor.java +++ b/hibernate-core/src/main/java/org/hibernate/boot/archive/internal/JarFileBasedArchiveDescriptor.java @@ -70,44 +70,38 @@ public void visitArchive(ArchiveContext context) { // // This algorithm assumes that the zipped file is only the URL root (including entry), not // just any random entry - try { - final InputStream is = new BufferedInputStream( jarFile.getInputStream( zipEntry ) ); - try { - final JarInputStream jarInputStream = new JarInputStream( is ); - ZipEntry subZipEntry = jarInputStream.getNextEntry(); - while ( subZipEntry != null ) { - if ( ! subZipEntry.isDirectory() ) { + try (InputStream is = new BufferedInputStream( jarFile.getInputStream( zipEntry ) )) { + final JarInputStream jarInputStream = new JarInputStream( is ); + ZipEntry subZipEntry = jarInputStream.getNextEntry(); + while ( subZipEntry != null ) { + if ( ! subZipEntry.isDirectory() ) { - final String name = extractName( subZipEntry ); - final String relativeName = extractRelativeName( subZipEntry ); - final InputStreamAccess inputStreamAccess = buildByteBasedInputStreamAccess( name, jarInputStream ); + final String name = extractName( subZipEntry ); + final String relativeName = extractRelativeName( subZipEntry ); + final InputStreamAccess inputStreamAccess = buildByteBasedInputStreamAccess( name, jarInputStream ); - final ArchiveEntry entry = new ArchiveEntry() { - @Override - public String getName() { - return name; - } + final ArchiveEntry entry = new ArchiveEntry() { + @Override + public String getName() { + return name; + } - @Override - public String getNameWithinArchive() { - return relativeName; - } + @Override + public String getNameWithinArchive() { + return relativeName; + } - @Override - public InputStreamAccess getStreamAccess() { - return inputStreamAccess; - } - }; + @Override + public InputStreamAccess getStreamAccess() { + return inputStreamAccess; + } + }; - final ArchiveEntryHandler entryHandler = context.obtainArchiveEntryHandler( entry ); - entryHandler.handleEntry( entry, context ); - } - - subZipEntry = jarInputStream.getNextEntry(); + final ArchiveEntryHandler entryHandler = context.obtainArchiveEntryHandler( entry ); + entryHandler.handleEntry( entry, context ); } - } - finally { - is.close(); + + subZipEntry = jarInputStream.getNextEntry(); } } catch (Exception e) { @@ -118,8 +112,8 @@ public InputStreamAccess getStreamAccess() { final String name = extractName( zipEntry ); final String relativeName = extractRelativeName( zipEntry ); final InputStreamAccess inputStreamAccess; - try { - inputStreamAccess = buildByteBasedInputStreamAccess( name, jarFile.getInputStream( zipEntry ) ); + try (InputStream is = jarFile.getInputStream( zipEntry )) { + inputStreamAccess = buildByteBasedInputStreamAccess( name, is ); } catch (IOException e) { throw new ArchiveException(