diff --git a/platform/core-impl/src/com/intellij/openapi/vfs/impl/ZipHandler.java b/platform/core-impl/src/com/intellij/openapi/vfs/impl/ZipHandler.java index 2638143eee46..065ad388f6c2 100644 --- a/platform/core-impl/src/com/intellij/openapi/vfs/impl/ZipHandler.java +++ b/platform/core-impl/src/com/intellij/openapi/vfs/impl/ZipHandler.java @@ -26,7 +26,10 @@ import com.intellij.util.text.ByteArrayCharSequence; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.io.*; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; import java.util.Enumeration; import java.util.Map; import java.util.zip.ZipEntry; @@ -53,14 +56,9 @@ public class ZipHandler extends ArchiveHandler { } @Override - protected void disposeAccessor(final ZipFile fileAccessor) { + protected void disposeAccessor(final ZipFile fileAccessor) throws IOException { // todo: ZipFile isn't disposable for Java6, replace the code below with 'disposeCloseable(fileAccessor);' - disposeCloseable(new Closeable() { - @Override - public void close() throws IOException { - fileAccessor.close(); - } - }); + fileAccessor.close(); } @Override diff --git a/platform/util/src/com/intellij/util/io/FileAccessorCache.java b/platform/util/src/com/intellij/util/io/FileAccessorCache.java index 180b8cf5649d..cfb040a9bc96 100644 --- a/platform/util/src/com/intellij/util/io/FileAccessorCache.java +++ b/platform/util/src/com/intellij/util/io/FileAccessorCache.java @@ -18,7 +18,6 @@ package com.intellij.util.io; import com.intellij.util.containers.SLRUCache; import org.jetbrains.annotations.NotNull; -import java.io.Closeable; import java.io.IOException; import java.util.concurrent.atomic.AtomicInteger; @@ -46,15 +45,7 @@ public abstract class FileAccessorCache implements com.intellij.util.conta } protected abstract T createAccessor(K key) throws IOException; - protected abstract void disposeAccessor(T fileAccessor); - - protected void disposeCloseable(Closeable fileAccessor) { - try { - fileAccessor.close(); - } catch (IOException ex) { - throw new RuntimeException(ex); - } - } + protected abstract void disposeAccessor(T fileAccessor) throws IOException; @NotNull public final Handle get(K key) { @@ -113,7 +104,11 @@ public abstract class FileAccessorCache implements com.intellij.util.conta public final void release() { if (myRefCount.decrementAndGet() == 0) { - myOwner.disposeAccessor(myFileAccessor); + try { + myOwner.disposeAccessor(myFileAccessor); + } catch (IOException ex) { + throw new RuntimeException(ex); + } } } diff --git a/platform/util/src/com/intellij/util/io/PersistentHashMapValueStorage.java b/platform/util/src/com/intellij/util/io/PersistentHashMapValueStorage.java index ac10e424db01..dbe734157d99 100644 --- a/platform/util/src/com/intellij/util/io/PersistentHashMapValueStorage.java +++ b/platform/util/src/com/intellij/util/io/PersistentHashMapValueStorage.java @@ -60,8 +60,8 @@ public class PersistentHashMapValueStorage { } @Override - protected void disposeAccessor(RandomAccessFileWithLengthAndSizeTracking fileAccessor) { - disposeCloseable(fileAccessor); + protected void disposeAccessor(RandomAccessFileWithLengthAndSizeTracking fileAccessor) throws IOException { + fileAccessor.close(); } }; @@ -75,8 +75,8 @@ public class PersistentHashMapValueStorage { } @Override - protected void disposeAccessor(DataOutputStream fileAccessor) { - disposeCloseable(fileAccessor); + protected void disposeAccessor(DataOutputStream fileAccessor) throws IOException { + fileAccessor.close(); } };