mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-09 08:09:39 +07:00
[java-psi] Support single-source file roots in various places (IDEA-368975)
GitOrigin-RevId: 2045de1f99ece67fe63a09f131664511167baf4a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
e34f9229bd
commit
745eef9189
@@ -6,7 +6,6 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.PackageIndex;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.FilteredQuery;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public final class ResourceFileUtil {
|
||||
@@ -28,11 +27,16 @@ public final class ResourceFileUtil {
|
||||
String packageName = index >= 0 ? resourceName.substring(0, index).replace('/', '.') : "";
|
||||
final String fileName = index >= 0 ? resourceName.substring(index+1) : resourceName;
|
||||
|
||||
final VirtualFile dir = new FilteredQuery<>(
|
||||
PackageIndex.getInstance(project).getDirsByPackageName(packageName, false), file -> {
|
||||
final VirtualFile child = file.findChild(fileName);
|
||||
return child != null && scope.contains(child);
|
||||
}).findFirst();
|
||||
return dir != null ? dir.findChild(fileName) : null;
|
||||
PackageIndex packageIndex = PackageIndex.getInstance(project);
|
||||
VirtualFile fileFromDir = packageIndex.getDirsByPackageName(packageName, false)
|
||||
.mapping(file -> file.findChild(fileName))
|
||||
.filtering(child -> child != null && scope.contains(child))
|
||||
.findFirst();
|
||||
if (fileFromDir != null) {
|
||||
return fileFromDir;
|
||||
}
|
||||
return packageIndex.getFilesByPackageName(packageName)
|
||||
.filtering(f -> fileName.equals(f.getName()) && scope.contains(f))
|
||||
.findFirst();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,11 +36,6 @@ public final class ModulePackageIndexImpl extends ModulePackageIndex {
|
||||
return new FilteredQuery<>(myDirectoryIndex.getDirectoriesByPackageName(packageName, includeLibrarySources), myDirCondition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VirtualFile @NotNull [] getDirectoriesByPackageName(@NotNull @NlsSafe String packageName, boolean includeLibrarySources) {
|
||||
return getDirsByPackageName(packageName, includeLibrarySources).toArray(VirtualFile.EMPTY_ARRAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Query<VirtualFile> getFilesByPackageName(@NotNull String packageName) {
|
||||
return new FilteredQuery<>(myDirectoryIndex.getFilesByPackageName(packageName), myDirCondition);
|
||||
|
||||
Reference in New Issue
Block a user