simplify code: allow FileAccessorCache to throw IOException on disposeAccessor

This commit is contained in:
Maxim.Mossienko
2016-03-07 16:30:11 +01:00
parent 5c2e5a3d5b
commit 8b9884d26a
3 changed files with 16 additions and 23 deletions
@@ -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
@@ -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<K, T> 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<T> get(K key) {
@@ -113,7 +104,11 @@ public abstract class FileAccessorCache<K, T> 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);
}
}
}
@@ -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();
}
};