fix "IDEA-221944 Deadlock on opening second project" and support preloading for proje...
[idea/community.git] / java / java-psi-api / src / com / intellij / openapi / roots / PackageIndex.java
1 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.openapi.roots;
3
4 import com.intellij.openapi.project.Project;
5 import com.intellij.openapi.vfs.VirtualFile;
6 import com.intellij.util.Query;
7 import org.jetbrains.annotations.NotNull;
8
9 /**
10  * Provides a possibility to query the directories corresponding to a specific Java package name.
11  */
12 public abstract class PackageIndex {
13   public static PackageIndex getInstance(@NotNull Project project) {
14     return project.getService(PackageIndex.class);
15   }
16
17   /**
18    * Returns all directories in content sources and libraries (and optionally library sources)
19    * corresponding to the given package name.
20    *
21    * @param packageName           the name of the package for which directories are requested.
22    * @param includeLibrarySources if true, directories under library sources are included in the returned list.
23    * @return the list of directories.
24    */
25   @NotNull
26   public abstract VirtualFile[] getDirectoriesByPackageName(@NotNull String packageName, boolean includeLibrarySources);
27
28   /**
29    * Returns all directories in content sources and libraries (and optionally library sources)
30    * corresponding to the given package name as a query object (allowing to perform partial iteration of the results).
31    *
32    * @param packageName           the name of the package for which directories are requested.
33    * @param includeLibrarySources if true, directories under library sources are included in the returned list.
34    * @return the query returning the list of directories.
35    */
36   @NotNull
37   public abstract Query<VirtualFile> getDirsByPackageName(@NotNull String packageName, boolean includeLibrarySources);
38 }