mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
simplify code: allow FileAccessorCache to throw IOException on disposeAccessor
This commit is contained in:
@@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user