summaryrefslogtreecommitdiff
path: root/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java')
-rw-r--r--platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java67
1 files changed, 25 insertions, 42 deletions
diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java
index d3fd78289771..acb6598f55c8 100644
--- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java
+++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java
@@ -34,7 +34,6 @@ import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -57,13 +56,13 @@ public class ProjectFileIndexImpl extends FileIndexBase implements ProjectFileIn
VirtualFile[] contentRoots = ModuleRootManager.getInstance(module).getContentRoots();
for (VirtualFile contentRoot : contentRoots) {
DirectoryInfo info = getInfoForFileOrDirectory(contentRoot);
- if (info == null) continue; // is excluded or ignored
+ if (!info.isInProject()) continue; // is excluded or ignored
if (!module.equals(info.getModule())) continue; // maybe 2 modules have the same content root?
VirtualFile parent = contentRoot.getParent();
if (parent != null) {
DirectoryInfo parentInfo = getInfoForFileOrDirectory(parent);
- if (parentInfo != null && parentInfo.getModule() != null) continue; // inner content - skip it
+ if (parentInfo.isInProject() && parentInfo.getModule() != null) continue; // inner content - skip it
}
boolean finished = VfsUtilCore.iterateChildrenRecursively(contentRoot, myContentFilter, iterator);
@@ -80,61 +79,43 @@ public class ProjectFileIndexImpl extends FileIndexBase implements ProjectFileIn
}
@Override
- public boolean isIgnored(@NotNull VirtualFile file) {
- if (myFileTypeRegistry.isFileIgnored(file)) return true;
- VirtualFile dir = file.isDirectory() ? file : file.getParent();
- if (dir == null) return false;
-
- DirectoryInfo info = getInfoForFileOrDirectory(dir);
- if (info != null) return false;
- if (myDirectoryIndex.isProjectExcludeRoot(dir)) return true;
-
- VirtualFile parent = dir.getParent();
- while (true) {
- if (parent == null) return false;
- DirectoryInfo parentInfo = getInfoForFileOrDirectory(parent);
- if (parentInfo != null) return true;
- if (myDirectoryIndex.isProjectExcludeRoot(parent)) return true;
- parent = parent.getParent();
- }
+ public boolean isExcluded(@NotNull VirtualFile file) {
+ DirectoryInfo info = getInfoForFileOrDirectory(file);
+ return info.isIgnored() || info.isExcluded();
}
@Override
public Module getModuleForFile(@NotNull VirtualFile file) {
if (file instanceof VirtualFileWindow) file = ((VirtualFileWindow)file).getDelegate();
- VirtualFile dir = file.isDirectory() ? file : file.getParent();
- if (dir == null) return null;
- DirectoryInfo info = getInfoForFileOrDirectory(dir);
- if (info == null) return null;
+ DirectoryInfo info = getInfoForFileOrDirectory(file);
+ if (!info.isInProject()) return null;
return info.getModule();
}
@Override
@NotNull
public List<OrderEntry> getOrderEntriesForFile(@NotNull VirtualFile file) {
- DirectoryInfo info = getInfoForFileOrDirectory(file);
- if (info == null) return Collections.emptyList();
- return Arrays.asList(info.getOrderEntries());
+ return Arrays.asList(getInfoForFileOrDirectory(file).getOrderEntries());
}
@Override
public VirtualFile getClassRootForFile(@NotNull VirtualFile file) {
final DirectoryInfo info = getInfoForFileOrDirectory(file);
- if (info == null) return null;
+ if (!info.isInProject()) return null;
return info.getLibraryClassRoot();
}
@Override
public VirtualFile getSourceRootForFile(@NotNull VirtualFile file) {
final DirectoryInfo info = getInfoForFileOrDirectory(file);
- if (info == null) return null;
+ if (!info.isInProject()) return null;
return info.getSourceRoot();
}
@Override
public VirtualFile getContentRootForFile(@NotNull VirtualFile file) {
final DirectoryInfo info = getInfoForFileOrDirectory(file);
- if (info == null) return null;
+ if (!info.isInProject()) return null;
return info.getContentRoot();
}
@@ -147,58 +128,60 @@ public class ProjectFileIndexImpl extends FileIndexBase implements ProjectFileIn
@Override
public boolean isLibraryClassFile(@NotNull VirtualFile file) {
if (file.isDirectory()) return false;
- if (myFileTypeRegistry.isFileIgnored(file)) return false;
DirectoryInfo parentInfo = getInfoForFileOrDirectory(file);
- return parentInfo != null && parentInfo.hasLibraryClassRoot();
+ return parentInfo.isInProject() && parentInfo.hasLibraryClassRoot();
}
@Override
public boolean isInSource(@NotNull VirtualFile fileOrDir) {
DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
- return info != null && (info.isInModuleSource() || info.isInLibrarySource());
+ return info.isInModuleSource() || info.isInLibrarySource();
}
@Override
public boolean isInLibraryClasses(@NotNull VirtualFile fileOrDir) {
DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
- return info != null && info.hasLibraryClassRoot();
+ return info.isInProject() && info.hasLibraryClassRoot();
}
@Override
public boolean isInLibrarySource(@NotNull VirtualFile fileOrDir) {
- DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
- return info != null && info.isInLibrarySource();
+ return getInfoForFileOrDirectory(fileOrDir).isInLibrarySource();
+ }
+
+ @Override
+ public boolean isIgnored(@NotNull VirtualFile file) {
+ return isExcluded(file);
}
@Override
public boolean isInContent(@NotNull VirtualFile fileOrDir) {
DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
- return info != null && info.getModule() != null;
+ return info.isInProject() && info.getModule() != null;
}
@Override
public boolean isInSourceContent(@NotNull VirtualFile fileOrDir) {
- DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
- return info != null && info.isInModuleSource();
+ return getInfoForFileOrDirectory(fileOrDir).isInModuleSource();
}
@Override
public boolean isInTestSourceContent(@NotNull VirtualFile fileOrDir) {
DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
- return info != null && info.isInModuleSource() && JavaModuleSourceRootTypes.isTestSourceOrResource(myDirectoryIndex.getSourceRootType(info));
+ return info.isInModuleSource() && JavaModuleSourceRootTypes.isTestSourceOrResource(myDirectoryIndex.getSourceRootType(info));
}
@Override
public boolean isUnderSourceRootOfType(@NotNull VirtualFile fileOrDir, @NotNull Set<? extends JpsModuleSourceRootType<?>> rootTypes) {
DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
- return info != null && info.isInModuleSource() && rootTypes.contains(myDirectoryIndex.getSourceRootType(info));
+ return info.isInModuleSource() && rootTypes.contains(myDirectoryIndex.getSourceRootType(info));
}
private class ContentFilter implements VirtualFileFilter {
@Override
public boolean accept(@NotNull VirtualFile file) {
DirectoryInfo info = getInfoForFileOrDirectory(file);
- if (info == null || info.getModule() == null) return false;
+ if (!info.isInProject() || info.getModule() == null) return false;
if (file.isDirectory()) {
return true;