diff --git a/platform/core-api/src/com/intellij/openapi/vfs/DeprecatedVirtualFileSystem.java b/platform/core-api/src/com/intellij/openapi/vfs/DeprecatedVirtualFileSystem.java index 2d88f09cd829..680facb3290c 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/DeprecatedVirtualFileSystem.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/DeprecatedVirtualFileSystem.java @@ -19,6 +19,7 @@ */ package com.intellij.openapi.vfs; +import com.intellij.openapi.application.Application; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.vfs.impl.BulkVirtualFileListenerAdapter; import com.intellij.util.EventDispatcher; @@ -29,7 +30,12 @@ public abstract class DeprecatedVirtualFileSystem extends VirtualFileSystem { private final EventDispatcher myEventDispatcher = EventDispatcher.create(VirtualFileListener.class); protected void startEventPropagation() { - ApplicationManager.getApplication().getMessageBus().connect().subscribe( + Application application = ApplicationManager.getApplication(); + if (application == null) { + return; + } + + application.getMessageBus().connect().subscribe( VirtualFileManager.VFS_CHANGES, new BulkVirtualFileListenerAdapter(myEventDispatcher.getMulticaster(), this)); } diff --git a/platform/platform-impl/src/com/intellij/openapi/project/FileContentQueue.java b/platform/platform-impl/src/com/intellij/openapi/project/FileContentQueue.java index ce1c601fe102..7c2fc2b3193e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/FileContentQueue.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/FileContentQueue.java @@ -206,12 +206,11 @@ public class FileContentQueue { result = myLoadedContentsQueue.poll(); if (result == null) { VirtualFile virtualFileToLoad = myFilesToLoadQueue.poll(); - while (virtualFileToLoad != null) { + if (virtualFileToLoad != null) { + FileContent content = new FileContent(virtualFileToLoad); if (isValidFile(virtualFileToLoad)) { - FileContent content = new FileContent(virtualFileToLoad); try { content.getBytes(); - return content; } catch (Throwable t) { if (t instanceof IOException || t instanceof InvalidVirtualFileAccessException) { LOG.info(t); @@ -219,8 +218,10 @@ public class FileContentQueue { LOG.error(t); } } + } else { + content.setEmptyContent(); } - virtualFileToLoad = myFilesToLoadQueue.poll(); + return content; } // take last content which is loaded by another thread