mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge remote branch 'origin/master'
This commit is contained in:
+4
-15
@@ -78,14 +78,8 @@ public class ModuleFileIndexImpl implements ModuleFileIndex {
|
||||
|
||||
@Override
|
||||
public boolean isInContent(@NotNull VirtualFile fileOrDir) {
|
||||
if (fileOrDir.isDirectory()) {
|
||||
DirectoryInfo info = myDirectoryIndex.getInfoForDirectory(fileOrDir);
|
||||
return info != null && myModule.equals(info.getModule());
|
||||
}
|
||||
else {
|
||||
VirtualFile parent = fileOrDir.getParent();
|
||||
return parent != null && isInContent(parent);
|
||||
}
|
||||
DirectoryInfo info = ProjectFileIndexImpl.getInfoForFileOrDirectory(fileOrDir, myDirectoryIndex);
|
||||
return info != null && myModule.equals(info.getModule());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -103,19 +97,14 @@ public class ModuleFileIndexImpl implements ModuleFileIndex {
|
||||
@Override
|
||||
@NotNull
|
||||
public List<OrderEntry> getOrderEntriesForFile(@NotNull VirtualFile fileOrDir) {
|
||||
VirtualFile dir = fileOrDir.isDirectory() ? fileOrDir : fileOrDir.getParent();
|
||||
if (dir == null) return Collections.emptyList();
|
||||
final DirectoryInfo info = myDirectoryIndex.getInfoForDirectory(dir);
|
||||
DirectoryInfo info = ProjectFileIndexImpl.getInfoForFileOrDirectory(fileOrDir, myDirectoryIndex);
|
||||
if (info == null) return Collections.emptyList();
|
||||
|
||||
return info.findAllOrderEntriesWithOwnerModule(myModule);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderEntry getOrderEntryForFile(@NotNull VirtualFile fileOrDir) {
|
||||
VirtualFile dir = fileOrDir.isDirectory() ? fileOrDir : fileOrDir.getParent();
|
||||
if (dir == null) return null;
|
||||
final DirectoryInfo info = myDirectoryIndex.getInfoForDirectory(dir);
|
||||
DirectoryInfo info = ProjectFileIndexImpl.getInfoForFileOrDirectory(fileOrDir, myDirectoryIndex);
|
||||
if (info == null) return null;
|
||||
return info.findOrderEntryWithOwnerModule(myModule);
|
||||
}
|
||||
|
||||
+39
-49
@@ -62,13 +62,13 @@ public class ProjectFileIndexImpl implements ProjectFileIndex {
|
||||
if (module.isDisposed()) continue;
|
||||
VirtualFile[] contentRoots = ModuleRootManager.getInstance(module).getContentRoots();
|
||||
for (VirtualFile contentRoot : contentRoots) {
|
||||
DirectoryInfo info = getInfoForDirectory(contentRoot);
|
||||
DirectoryInfo info = getInfoForFileOrDirectory(contentRoot);
|
||||
if (info == null) 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 = getInfoForDirectory(parent);
|
||||
DirectoryInfo parentInfo = getInfoForFileOrDirectory(parent);
|
||||
if (parentInfo != null && parentInfo.getModule() != null) continue; // inner content - skip it
|
||||
}
|
||||
|
||||
@@ -81,8 +81,25 @@ public class ProjectFileIndexImpl implements ProjectFileIndex {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private DirectoryInfo getInfoForDirectory(@NotNull VirtualFile file) {
|
||||
return myDirectoryIndex.getInfoForDirectory(file);
|
||||
private DirectoryInfo getInfoForFileOrDirectory(@NotNull VirtualFile file) {
|
||||
return getInfoForFileOrDirectory(file, myDirectoryIndex);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static DirectoryInfo getInfoForFileOrDirectory(@NotNull VirtualFile file, DirectoryIndex directoryIndex) {
|
||||
if (!file.isDirectory() && file.getParent() == null) return null; // e.g. LightVirtualFile in test
|
||||
DirectoryInfo info = directoryIndex.getInfoForDirectory(file);
|
||||
if (info != null) {
|
||||
return info;
|
||||
}
|
||||
|
||||
if (!file.isDirectory()) {
|
||||
VirtualFile dir = file.getParent();
|
||||
if (dir != null) {
|
||||
return directoryIndex.getInfoForDirectory(dir);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -97,14 +114,14 @@ public class ProjectFileIndexImpl implements ProjectFileIndex {
|
||||
VirtualFile dir = file.isDirectory() ? file : file.getParent();
|
||||
if (dir == null) return false;
|
||||
|
||||
DirectoryInfo info = getInfoForDirectory(dir);
|
||||
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 = getInfoForDirectory(parent);
|
||||
DirectoryInfo parentInfo = getInfoForFileOrDirectory(parent);
|
||||
if (parentInfo != null) return true;
|
||||
if (myDirectoryIndex.isProjectExcludeRoot(parent)) return true;
|
||||
parent = parent.getParent();
|
||||
@@ -116,7 +133,7 @@ public class ProjectFileIndexImpl implements ProjectFileIndex {
|
||||
if (file instanceof VirtualFileWindow) file = ((VirtualFileWindow)file).getDelegate();
|
||||
VirtualFile dir = file.isDirectory() ? file : file.getParent();
|
||||
if (dir == null) return null;
|
||||
DirectoryInfo info = getInfoForDirectory(dir);
|
||||
DirectoryInfo info = getInfoForFileOrDirectory(dir);
|
||||
if (info == null) return null;
|
||||
return info.getModule();
|
||||
}
|
||||
@@ -124,36 +141,28 @@ public class ProjectFileIndexImpl implements ProjectFileIndex {
|
||||
@Override
|
||||
@NotNull
|
||||
public List<OrderEntry> getOrderEntriesForFile(@NotNull VirtualFile file) {
|
||||
VirtualFile dir = file.isDirectory() ? file : file.getParent();
|
||||
if (dir == null) return Collections.emptyList();
|
||||
final DirectoryInfo info = getInfoForDirectory(dir);
|
||||
DirectoryInfo info = getInfoForFileOrDirectory(file);
|
||||
if (info == null) return Collections.emptyList();
|
||||
return Arrays.asList(info.getOrderEntries());
|
||||
}
|
||||
|
||||
@Override
|
||||
public VirtualFile getClassRootForFile(@NotNull VirtualFile file) {
|
||||
VirtualFile dir = file.isDirectory() ? file : file.getParent();
|
||||
if (dir == null) return null;
|
||||
final DirectoryInfo info = getInfoForDirectory(dir);
|
||||
final DirectoryInfo info = getInfoForFileOrDirectory(file);
|
||||
if (info == null) return null;
|
||||
return info.getLibraryClassRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public VirtualFile getSourceRootForFile(@NotNull VirtualFile file) {
|
||||
final VirtualFile dir = file.isDirectory() ? file : file.getParent();
|
||||
if (dir == null) return null;
|
||||
final DirectoryInfo info = getInfoForDirectory(dir);
|
||||
final DirectoryInfo info = getInfoForFileOrDirectory(file);
|
||||
if (info == null) return null;
|
||||
return info.getSourceRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public VirtualFile getContentRootForFile(@NotNull VirtualFile file) {
|
||||
VirtualFile dir = file.isDirectory() ? file : file.getParent();
|
||||
if (dir == null) return null;
|
||||
final DirectoryInfo info = getInfoForDirectory(dir);
|
||||
final DirectoryInfo info = getInfoForFileOrDirectory(file);
|
||||
if (info == null) return null;
|
||||
return info.getContentRoot();
|
||||
}
|
||||
@@ -175,14 +184,13 @@ public class ProjectFileIndexImpl implements ProjectFileIndex {
|
||||
public boolean isLibraryClassFile(@NotNull VirtualFile file) {
|
||||
if (file.isDirectory()) return false;
|
||||
if (myFileTypeRegistry.isFileIgnored(file)) return false;
|
||||
VirtualFile parent = file.getParent();
|
||||
DirectoryInfo parentInfo = getInfoForDirectory(parent);
|
||||
DirectoryInfo parentInfo = getInfoForFileOrDirectory(file);
|
||||
return parentInfo != null && parentInfo.hasLibraryClassRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInSource(@NotNull VirtualFile fileOrDir) {
|
||||
DirectoryInfo info = getInfoForDirectory(fileOrDir);
|
||||
DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
|
||||
if (info != null) {
|
||||
return info.isInModuleSource() || info.isInLibrarySource();
|
||||
}
|
||||
@@ -194,7 +202,7 @@ public class ProjectFileIndexImpl implements ProjectFileIndex {
|
||||
|
||||
@Override
|
||||
public boolean isInLibraryClasses(@NotNull VirtualFile fileOrDir) {
|
||||
DirectoryInfo info = getInfoForDirectory(fileOrDir);
|
||||
DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
|
||||
if (info != null) {
|
||||
return info.hasLibraryClassRoot();
|
||||
}
|
||||
@@ -206,7 +214,7 @@ public class ProjectFileIndexImpl implements ProjectFileIndex {
|
||||
|
||||
@Override
|
||||
public boolean isInLibrarySource(@NotNull VirtualFile fileOrDir) {
|
||||
DirectoryInfo info = getInfoForDirectory(fileOrDir);
|
||||
DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
|
||||
if (info != null) {
|
||||
return info.isInLibrarySource();
|
||||
}
|
||||
@@ -218,45 +226,27 @@ public class ProjectFileIndexImpl implements ProjectFileIndex {
|
||||
|
||||
@Override
|
||||
public boolean isInContent(@NotNull VirtualFile fileOrDir) {
|
||||
if (fileOrDir.isDirectory()) {
|
||||
DirectoryInfo info = getInfoForDirectory(fileOrDir);
|
||||
return info != null && info.getModule() != null;
|
||||
}
|
||||
else {
|
||||
VirtualFile parent = fileOrDir.getParent();
|
||||
return parent != null && isInContent(parent);
|
||||
}
|
||||
DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
|
||||
return info != null && info.getModule() != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInSourceContent(@NotNull VirtualFile fileOrDir) {
|
||||
if (fileOrDir.isDirectory()) {
|
||||
DirectoryInfo info = getInfoForDirectory(fileOrDir);
|
||||
return info != null && info.isInModuleSource();
|
||||
}
|
||||
else {
|
||||
VirtualFile parent = fileOrDir.getParent();
|
||||
return parent != null && isInSourceContent(parent);
|
||||
}
|
||||
DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
|
||||
return info != null && info.isInModuleSource();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInTestSourceContent(@NotNull VirtualFile fileOrDir) {
|
||||
if (fileOrDir.isDirectory()) {
|
||||
DirectoryInfo info = getInfoForDirectory(fileOrDir);
|
||||
return info != null && info.isInModuleSource() && info.isTestSource();
|
||||
}
|
||||
else {
|
||||
VirtualFile parent = fileOrDir.getParent();
|
||||
return parent != null && isInTestSourceContent(parent);
|
||||
}
|
||||
DirectoryInfo info = getInfoForFileOrDirectory(fileOrDir);
|
||||
return info != null && info.isInModuleSource() && info.isTestSource();
|
||||
}
|
||||
|
||||
private class ContentFilter implements VirtualFileFilter {
|
||||
@Override
|
||||
public boolean accept(@NotNull VirtualFile file) {
|
||||
if (file.isDirectory()) {
|
||||
DirectoryInfo info = getInfoForDirectory(file);
|
||||
DirectoryInfo info = getInfoForFileOrDirectory(file);
|
||||
return info != null && info.getModule() != null;
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user