diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/openapi/roots/impl')
-rw-r--r-- | platform/lang-impl/src/com/intellij/openapi/roots/impl/DirectoryIndexImpl.java | 27 | ||||
-rw-r--r-- | platform/lang-impl/src/com/intellij/openapi/roots/impl/PushedFilePropertiesUpdaterImpl.java (renamed from platform/lang-impl/src/com/intellij/openapi/roots/impl/PushedFilePropertiesUpdater.java) | 33 |
2 files changed, 26 insertions, 34 deletions
diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/DirectoryIndexImpl.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/DirectoryIndexImpl.java index 2f5485d6deae..b1385686bc3a 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/DirectoryIndexImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/DirectoryIndexImpl.java @@ -149,12 +149,19 @@ public class DirectoryIndexImpl extends DirectoryIndex { @Override public DirectoryInfo getInfoForDirectory(@NotNull VirtualFile dir) { + DirectoryInfo info = getInfoForFile(dir); + return info.isInProject() ? info : null; + } + + @NotNull + @Override + public DirectoryInfo getInfoForFile(@NotNull VirtualFile file) { checkAvailability(); dispatchPendingEvents(); - if (!(dir instanceof NewVirtualFile)) return null; + if (!(file instanceof NewVirtualFile)) return NonProjectDirectoryInfo.NOT_SUPPORTED_VIRTUAL_FILE_IMPLEMENTATION; - return getRootIndex().getInfoForDirectory(dir); + return getRootIndex().getInfoForFile(file); } @Override @@ -167,22 +174,6 @@ public class DirectoryIndexImpl extends DirectoryIndex { } @Override - public boolean isProjectExcludeRoot(@NotNull VirtualFile dir) { - checkAvailability(); - if (!(dir instanceof NewVirtualFile)) return false; - - return getRootIndex().isProjectExcludeRoot(dir); - } - - @Override - public boolean isModuleExcludeRoot(@NotNull VirtualFile dir) { - checkAvailability(); - if (!(dir instanceof NewVirtualFile)) return false; - - return getRootIndex().isModuleExcludeRoot(dir); - } - - @Override public String getPackageName(@NotNull VirtualFile dir) { checkAvailability(); if (!(dir instanceof NewVirtualFile)) return null; diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/PushedFilePropertiesUpdater.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/PushedFilePropertiesUpdaterImpl.java index cb4b94016611..a96432e2b64c 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/PushedFilePropertiesUpdater.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/PushedFilePropertiesUpdaterImpl.java @@ -53,7 +53,7 @@ import java.io.IOException; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; -public class PushedFilePropertiesUpdater { +public class PushedFilePropertiesUpdaterImpl extends PushedFilePropertiesUpdater { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.roots.impl.PushedFilePropertiesUpdater"); private final Project myProject; @@ -62,12 +62,7 @@ public class PushedFilePropertiesUpdater { private final Queue<Runnable> myTasks = new ConcurrentLinkedQueue<Runnable>(); private final MessageBusConnection myConnection; - @NotNull - public static PushedFilePropertiesUpdater getInstance(Project project) { - return project.getComponent(PushedFilePropertiesUpdater.class); - } - - public PushedFilePropertiesUpdater(final Project project) { + public PushedFilePropertiesUpdaterImpl(final Project project) { myProject = project; myPushers = Extensions.getExtensions(FilePropertyPusher.EP_NAME); myFilePushers = ContainerUtil.findAllAsArray(myPushers, new Condition<FilePropertyPusher>() { @@ -122,22 +117,24 @@ public class PushedFilePropertiesUpdater { }); } + @Override public void initializeProperties() { for (final FilePropertyPusher pusher : myPushers) { pusher.initExtra(myProject, myProject.getMessageBus(), new FilePropertyPusher.Engine() { @Override public void pushAll() { - PushedFilePropertiesUpdater.this.pushAll(pusher); + PushedFilePropertiesUpdaterImpl.this.pushAll(pusher); } @Override public void pushRecursively(VirtualFile file, Project project) { - PushedFilePropertiesUpdater.this.schedulePushRecursively(file, pusher); + PushedFilePropertiesUpdaterImpl.this.schedulePushRecursively(file, pusher); } }); } } + @Override public void pushAllPropertiesNow() { performPushTasks(); doPushAll(myPushers); @@ -222,6 +219,7 @@ public class PushedFilePropertiesUpdater { return projectValue != null ? projectValue : pusher.getDefaultValue(); } + @Override public void pushAll(final FilePropertyPusher... pushers) { queueTask(new Runnable() { @Override @@ -289,7 +287,7 @@ public class PushedFilePropertiesUpdater { pusher = pushers[i]; if (!isDir && (pusher.pushDirectoriesOnly() || !pusher.acceptsFile(fileOrDir))) continue; else if (isDir && !pusher.acceptsDirectory(fileOrDir, myProject)) continue; - findAndUpdateValue(myProject, fileOrDir, pusher, moduleValues != null ? moduleValues[i]:null); + findAndUpdateValue(fileOrDir, pusher, moduleValues != null ? moduleValues[i]:null); } } catch (AbstractMethodError ame) { // acceptsDirectory is missed @@ -298,17 +296,18 @@ public class PushedFilePropertiesUpdater { } } - public static <T> void findAndUpdateValue(final Project project, final VirtualFile fileOrDir, final FilePropertyPusher<T> pusher, final T moduleValue) { - final T value = findPusherValuesUpwards(project, fileOrDir, pusher, moduleValue); - updateValue(fileOrDir, value, pusher); + @Override + public <T> void findAndUpdateValue(final VirtualFile fileOrDir, final FilePropertyPusher<T> pusher, final T moduleValue) { + final T value = findPusherValuesUpwards(myProject, fileOrDir, pusher, moduleValue); + updateValue(myProject, fileOrDir, value, pusher); } - private static <T> void updateValue(final VirtualFile fileOrDir, final T value, final FilePropertyPusher<T> pusher) { + private static <T> void updateValue(final Project project, final VirtualFile fileOrDir, final T value, final FilePropertyPusher<T> pusher) { final T oldValue = fileOrDir.getUserData(pusher.getFileDataKey()); if (value != oldValue) { fileOrDir.putUserData(pusher.getFileDataKey(), value); try { - pusher.persistAttribute(fileOrDir, value); + pusher.persistAttribute(project, fileOrDir, value); } catch (IOException e) { LOG.error(e); @@ -316,7 +315,8 @@ public class PushedFilePropertiesUpdater { } } - public static void filePropertiesChanged(@NotNull final VirtualFile file) { + @Override + public void filePropertiesChanged(@NotNull final VirtualFile file) { ApplicationManager.getApplication().assertReadAccessAllowed(); FileBasedIndex.getInstance().requestReindex(file); for (final Project project : ProjectManager.getInstance().getOpenProjects()) { @@ -344,6 +344,7 @@ public class PushedFilePropertiesUpdater { } } + @Override public void processPendingEvents() { myConnection.deliverImmediately(); } |