IP-670 - make seach api experimental

GitOrigin-RevId: 8e963d068215dd5c9876828978c17d0a6d3d0355
This commit is contained in:
Alexander Bubenchikov
2020-01-13 13:12:43 +00:00
committed by intellij-monorepo-bot
parent c809829430
commit c5ac4647dd
5 changed files with 20 additions and 5 deletions
@@ -1,10 +1,13 @@
package org.jetbrains.idea.reposearch;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.function.Consumer;
@ApiStatus.Experimental
public interface DependencySearchProvider {
void fulltextSearch(@NotNull String searchString,
@@ -2,9 +2,11 @@ package org.jetbrains.idea.reposearch;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.ApiStatus;
import java.util.Collection;
@ApiStatus.Experimental
public interface DependencySearchProvidersFactory {
ExtensionPointName<DependencySearchProvidersFactory> EXTENSION_POINT_NAME =
ExtensionPointName.create("org.jetbrains.idea.reposearch.provider");
@@ -5,6 +5,7 @@ import com.intellij.openapi.extensions.PluginDescriptor
import com.intellij.openapi.project.Project
import com.intellij.util.concurrency.AppExecutorUtil
import com.intellij.util.containers.ContainerUtil
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.TestOnly
import org.jetbrains.concurrency.AsyncPromise
import org.jetbrains.concurrency.Promise
@@ -13,13 +14,14 @@ import org.jetbrains.concurrency.resolvedPromise
import java.util.*
import java.util.concurrent.CompletableFuture
import java.util.concurrent.CompletableFuture.completedFuture
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.ExecutorService
import java.util.function.BiConsumer
import java.util.function.Consumer
import kotlin.collections.LinkedHashSet
typealias ResultConsumer = (RepositoryArtifactData) -> Unit
@ApiStatus.Experimental
class DependencySearchService(private val myProject: Project) {
private val myExecutorService: ExecutorService
private val cache: MutableMap<String, CompletableFuture<Collection<RepositoryArtifactData>>> = ContainerUtil.createConcurrentWeakKeyWeakValueMap()
@@ -67,16 +69,18 @@ class DependencySearchService(private val myProject: Project) {
}
}
val resultSet: MutableSet<RepositoryArtifactData> = ConcurrentHashMap.newKeySet()
localProviders.forEach { lp -> searchMethod(lp) { resultSet.add(it) } }
resultSet.forEach(consumer)
val localResultSet: MutableSet<RepositoryArtifactData> = LinkedHashSet()
localProviders.forEach { lp -> searchMethod(lp) { localResultSet.add(it) } }
localResultSet.forEach(consumer)
if (parameters.isLocalOnly || remoteProviders.size == 0) {
return resolvedPromise(0)
}
val promises: MutableList<Promise<Void>> = ArrayList(remoteProviders.size)
val resultSet = Collections.synchronizedSet(localResultSet);
for (provider in remoteProviders) {
val promise = AsyncPromise<Void>()
promises.add(promise)
@@ -1,5 +1,8 @@
package org.jetbrains.idea.reposearch;
import org.jetbrains.annotations.ApiStatus;
@ApiStatus.Experimental
public interface RepositoryArtifactData {
String getKey();
}
@@ -1,5 +1,8 @@
package org.jetbrains.idea.reposearch;
import org.jetbrains.annotations.ApiStatus;
@ApiStatus.Experimental
public class SearchParameters {
private final boolean myCache;