diff options
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/vfs/impl/http/RemoteFileManagerImpl.java')
-rw-r--r-- | platform/platform-impl/src/com/intellij/openapi/vfs/impl/http/RemoteFileManagerImpl.java | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/http/RemoteFileManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/http/RemoteFileManagerImpl.java index b69c0befd376..904233a35cdf 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/http/RemoteFileManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/http/RemoteFileManagerImpl.java @@ -17,7 +17,6 @@ package com.intellij.openapi.vfs.impl.http; import com.intellij.openapi.Disposable; import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.util.Pair; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.ex.http.HttpVirtualFileListener; import com.intellij.util.EventDispatcher; @@ -35,7 +34,10 @@ import java.util.Map; */ public class RemoteFileManagerImpl extends RemoteFileManager implements Disposable { private final LocalFileStorage myStorage; - private final Map<Pair<Boolean, Url>, VirtualFileImpl> myRemoteFiles = new THashMap<Pair<Boolean, Url>, VirtualFileImpl>(); + + private final Map<Url, HttpVirtualFileImpl> remoteFiles = new THashMap<Url, HttpVirtualFileImpl>(); + private final Map<Url, HttpVirtualFileImpl> remoteDirectories = new THashMap<Url, HttpVirtualFileImpl>(); + private final EventDispatcher<HttpVirtualFileListener> myDispatcher = EventDispatcher.create(HttpVirtualFileListener.class); private final List<RemoteContentProvider> myProviders = new ArrayList<RemoteContentProvider>(); private final DefaultRemoteContentProvider myDefaultRemoteContentProvider; @@ -55,19 +57,19 @@ public class RemoteFileManagerImpl extends RemoteFileManager implements Disposab return myDefaultRemoteContentProvider; } - public synchronized VirtualFileImpl getOrCreateFile(@Nullable VirtualFileImpl parent, @NotNull Url url, @NotNull String path, final boolean directory) { - Pair<Boolean, Url> key = Pair.create(directory, url); - VirtualFileImpl file = myRemoteFiles.get(key); + public synchronized HttpVirtualFileImpl getOrCreateFile(@Nullable HttpVirtualFileImpl parent, @NotNull Url url, @NotNull String path, final boolean directory) { + Map<Url, HttpVirtualFileImpl> cache = directory ? remoteDirectories : remoteFiles; + HttpVirtualFileImpl file = cache.get(url); if (file == null) { if (directory) { - file = new VirtualFileImpl(getHttpFileSystem(url), parent, path, null); + file = new HttpVirtualFileImpl(getHttpFileSystem(url), parent, path, null); } else { RemoteFileInfoImpl fileInfo = new RemoteFileInfoImpl(url, this); - file = new VirtualFileImpl(getHttpFileSystem(url), parent, path, fileInfo); + file = new HttpVirtualFileImpl(getHttpFileSystem(url), parent, path, fileInfo); fileInfo.addDownloadingListener(new MyDownloadingListener(file)); } - myRemoteFiles.put(key, file); + cache.put(url, file); } return file; } @@ -133,9 +135,9 @@ public class RemoteFileManagerImpl extends RemoteFileManager implements Disposab } private class MyDownloadingListener extends FileDownloadingAdapter { - private final VirtualFileImpl myFile; + private final HttpVirtualFileImpl myFile; - public MyDownloadingListener(final VirtualFileImpl file) { + public MyDownloadingListener(final HttpVirtualFileImpl file) { myFile = file; } |