From bb784376e7dbd9d2e8e52132d999588d459f1744 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Sun, 7 Apr 2019 22:17:01 +0300 Subject: [PATCH] deprecate SearchScopeProvider and move its methods to a better place SearchScopeProvider is a confusing name for a utility class like that. --- .../debugger/DefaultDebugEnvironment.java | 3 ++- .../jar/JarApplicationConfiguration.java | 4 +++- .../debug/JavaDebuggerLauncherImpl.java | 4 ++-- .../ExternalSystemRunConfiguration.java | 5 ++-- .../configurations/CommandLineState.java | 3 ++- .../configurations/ModuleRunProfile.java | 5 +++- .../configurations/SearchScopeProvider.java | 24 +++++++++---------- .../psi/search/GlobalSearchScopes.java | 24 +++++++++++++++++++ .../intellij/execution/runners/RunTab.java | 4 ++-- .../plugins/gradle/GradleManager.java | 9 +++---- 10 files changed, 59 insertions(+), 26 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/DefaultDebugEnvironment.java b/java/debugger/impl/src/com/intellij/debugger/DefaultDebugEnvironment.java index 872517d0b2ae..2c5c0a012a6f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/DefaultDebugEnvironment.java +++ b/java/debugger/impl/src/com/intellij/debugger/DefaultDebugEnvironment.java @@ -17,6 +17,7 @@ import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.search.DelegatingGlobalSearchScope; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.GlobalSearchScopes; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -48,7 +49,7 @@ public class DefaultDebugEnvironment implements DebugEnvironment { } private static GlobalSearchScope createSearchScope(@NotNull Project project, @Nullable RunProfile runProfile) { - GlobalSearchScope scope = SearchScopeProvider.createSearchScope(project, runProfile); + GlobalSearchScope scope = GlobalSearchScopes.executionScope(project, runProfile); if (scope.equals(GlobalSearchScope.allScope(project))) { // prefer sources over class files return new DelegatingGlobalSearchScope(scope) { diff --git a/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfiguration.java b/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfiguration.java index e1018bdcb99e..87e904d49400 100644 --- a/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfiguration.java @@ -17,6 +17,7 @@ import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.GlobalSearchScopes; import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters; import com.intellij.util.xmlb.XmlSerializer; import com.intellij.util.xmlb.XmlSerializerUtil; @@ -25,6 +26,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; +import java.util.Arrays; import java.util.LinkedHashMap; import java.util.Map; @@ -120,7 +122,7 @@ public class JarApplicationConfiguration extends LocatableConfigurationBase impl @Nullable @Override public GlobalSearchScope getSearchScope() { - return SearchScopeProvider.createSearchScope(getModules()); + return GlobalSearchScopes.executionScope(Arrays.asList(getModules())); } @Nullable diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/deployment/debug/JavaDebuggerLauncherImpl.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/deployment/debug/JavaDebuggerLauncherImpl.java index 812082ebc8a0..2587aaab0a18 100644 --- a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/deployment/debug/JavaDebuggerLauncherImpl.java +++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/deployment/debug/JavaDebuggerLauncherImpl.java @@ -13,7 +13,6 @@ import com.intellij.execution.ExecutionException; import com.intellij.execution.ExecutionResult; import com.intellij.execution.configurations.RemoteConnection; import com.intellij.execution.configurations.RunProfile; -import com.intellij.execution.configurations.SearchScopeProvider; import com.intellij.execution.impl.ConsoleViewImpl; import com.intellij.execution.process.ProcessHandler; import com.intellij.execution.runners.ExecutionEnvironment; @@ -23,6 +22,7 @@ import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.GlobalSearchScopes; import com.intellij.remoteServer.configuration.RemoteServer; import com.intellij.remoteServer.runtime.deployment.debug.JavaDebugConnectionData; import com.intellij.remoteServer.runtime.deployment.debug.JavaDebugServerModeHandler; @@ -115,7 +115,7 @@ public class JavaDebuggerLauncherImpl extends JavaDebuggerLauncher { RemoteServerDebugEnvironment(Project project, RemoteConnection remoteConnection, RunProfile runProfile) { myProject = project; - mySearchScope = SearchScopeProvider.createSearchScope(project, runProfile); + mySearchScope = GlobalSearchScopes.executionScope(project, runProfile); myRemoteConnection = remoteConnection; myRunProfile = runProfile; } diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java index 99f3ea4063b3..c1cd48ceb9e9 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java @@ -60,9 +60,9 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.GlobalSearchScopes; import com.intellij.util.ArrayUtil; import com.intellij.util.SmartList; -import com.intellij.util.containers.ContainerUtil; import com.intellij.util.net.NetUtils; import com.intellij.util.text.CharArrayUtil; import com.intellij.util.text.DateFormatUtil; @@ -79,6 +79,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; import java.net.ServerSocket; +import java.util.Collections; import java.util.List; import static com.intellij.openapi.externalSystem.rt.execution.ForkedDebuggerHelper.DEBUG_FORK_SOCKET_PARAM; @@ -204,7 +205,7 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase i if (file != null) { Module module = DirectoryIndex.getInstance(getProject()).getInfoForFile(file).getModule(); if (module != null) { - scope = SearchScopeProvider.createSearchScope(ContainerUtil.ar(module)); + scope = GlobalSearchScopes.executionScope(Collections.singleton(module)); } } } diff --git a/platform/lang-api/src/com/intellij/execution/configurations/CommandLineState.java b/platform/lang-api/src/com/intellij/execution/configurations/CommandLineState.java index f1dd5ce22ae7..4283a5d6e172 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/CommandLineState.java +++ b/platform/lang-api/src/com/intellij/execution/configurations/CommandLineState.java @@ -12,6 +12,7 @@ import com.intellij.execution.ui.ConsoleView; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.project.Project; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.GlobalSearchScopes; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -31,7 +32,7 @@ public abstract class CommandLineState implements RunProfileState { myEnvironment = environment; if (myEnvironment != null) { final Project project = myEnvironment.getProject(); - final GlobalSearchScope searchScope = SearchScopeProvider.createSearchScope(project, myEnvironment.getRunProfile()); + final GlobalSearchScope searchScope = GlobalSearchScopes.executionScope(project, myEnvironment.getRunProfile()); myConsoleBuilder = TextConsoleBuilderFactory.getInstance().createBuilder(project, searchScope); } } diff --git a/platform/lang-api/src/com/intellij/execution/configurations/ModuleRunProfile.java b/platform/lang-api/src/com/intellij/execution/configurations/ModuleRunProfile.java index d882b5a019f8..548b3e8e06db 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/ModuleRunProfile.java +++ b/platform/lang-api/src/com/intellij/execution/configurations/ModuleRunProfile.java @@ -17,8 +17,11 @@ package com.intellij.execution.configurations; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.GlobalSearchScopes; import org.jetbrains.annotations.Nullable; +import java.util.Arrays; + /** * @author spleaner */ @@ -27,6 +30,6 @@ public interface ModuleRunProfile extends RunProfileWithCompileBeforeLaunchOptio @Nullable @Override default GlobalSearchScope getSearchScope() { - return SearchScopeProvider.createSearchScope(getModules()); + return GlobalSearchScopes.executionScope(Arrays.asList(getModules())); } } diff --git a/platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvider.java b/platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvider.java index ec0119962903..ca8d4702db34 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvider.java +++ b/platform/lang-api/src/com/intellij/execution/configurations/SearchScopeProvider.java @@ -18,31 +18,31 @@ package com.intellij.execution.configurations; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.util.containers.ContainerUtil; +import com.intellij.psi.search.GlobalSearchScopes; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Arrays; +import java.util.Collection; + /** * @author Vojtech Krasa + * @deprecated Use {@link GlobalSearchScopes} */ +@Deprecated public class SearchScopeProvider { + /** @deprecated Use {@link GlobalSearchScopes#executionScope(Collection)}*/ + @Deprecated @NotNull public static GlobalSearchScope createSearchScope(@NotNull Project project, @Nullable RunProfile runProfile) { - if (runProfile instanceof SearchScopeProvidingRunProfile) { - GlobalSearchScope scope = ((SearchScopeProvidingRunProfile)runProfile).getSearchScope(); - if (scope != null) return scope; - } - return GlobalSearchScope.allScope(project); + return GlobalSearchScopes.executionScope(project, runProfile); } + /** @deprecated Use {@link GlobalSearchScopes#executionScope(Collection)}*/ + @Deprecated @Nullable public static GlobalSearchScope createSearchScope(@NotNull Module[] modules) { - if (modules.length == 0) { - return null; - } - GlobalSearchScope[] scopes = - ContainerUtil.map2Array(modules, GlobalSearchScope.class, module -> GlobalSearchScope.moduleRuntimeScope(module, true)); - return GlobalSearchScope.union(scopes); + return GlobalSearchScopes.executionScope(Arrays.asList(modules)); } } diff --git a/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java b/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java index 797eb8d3d2f1..ed6d4f187059 100644 --- a/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java +++ b/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java @@ -15,13 +15,20 @@ */ package com.intellij.psi.search; +import com.intellij.execution.configurations.RunProfile; +import com.intellij.execution.configurations.SearchScopeProvidingRunProfile; import com.intellij.ide.IdeBundle; import com.intellij.openapi.fileEditor.FileEditorManager; +import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; +import java.util.List; /** * @author yole @@ -36,4 +43,21 @@ public class GlobalSearchScopes extends GlobalSearchScopesCore { final VirtualFile[] files = fileEditorManager != null ? fileEditorManager.getOpenFiles() : VirtualFile.EMPTY_ARRAY; return GlobalSearchScope.filesScope(project, Arrays.asList(files), IdeBundle.message("scope.open.files")); } + + @NotNull + public static GlobalSearchScope executionScope(@NotNull Project project, @Nullable RunProfile runProfile) { + if (runProfile instanceof SearchScopeProvidingRunProfile) { + GlobalSearchScope scope = ((SearchScopeProvidingRunProfile)runProfile).getSearchScope(); + if (scope != null) return scope; + } + return GlobalSearchScope.allScope(project); + } + + @Nullable + public static GlobalSearchScope executionScope(@NotNull Collection modules) { + if (modules.isEmpty()) return null; + List scopes = ContainerUtil.map2List( + modules, module -> GlobalSearchScope.moduleRuntimeScope(module, true)); + return GlobalSearchScope.union(scopes); + } } diff --git a/platform/lang-impl/src/com/intellij/execution/runners/RunTab.java b/platform/lang-impl/src/com/intellij/execution/runners/RunTab.java index dc07844bb7fa..5ffc3159f0cc 100644 --- a/platform/lang-impl/src/com/intellij/execution/runners/RunTab.java +++ b/platform/lang-impl/src/com/intellij/execution/runners/RunTab.java @@ -6,7 +6,6 @@ import com.intellij.diagnostic.logging.LogFilesManager; import com.intellij.diagnostic.logging.OutputFileUtil; import com.intellij.execution.configurations.RunConfigurationBase; import com.intellij.execution.configurations.RunProfile; -import com.intellij.execution.configurations.SearchScopeProvider; import com.intellij.execution.process.ProcessHandler; import com.intellij.execution.ui.ExecutionConsole; import com.intellij.execution.ui.RunContentDescriptor; @@ -17,6 +16,7 @@ import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.project.Project; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.GlobalSearchScopes; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -37,7 +37,7 @@ public abstract class RunTab implements DataProvider, Disposable { protected RunTab(@NotNull ExecutionEnvironment environment, @NotNull String runnerType) { this(environment.getProject(), - SearchScopeProvider.createSearchScope(environment.getProject(), environment.getRunProfile()), + GlobalSearchScopes.executionScope(environment.getProject(), environment.getRunProfile()), runnerType, environment.getExecutor().getId(), environment.getRunProfile().getName()); diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/GradleManager.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/GradleManager.java index 59ac7c86a1cd..48924df8f782 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/GradleManager.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/GradleManager.java @@ -4,7 +4,6 @@ package org.jetbrains.plugins.gradle; import com.intellij.execution.ExecutionException; import com.intellij.execution.Executor; import com.intellij.execution.configurations.RunConfiguration; -import com.intellij.execution.configurations.SearchScopeProvider; import com.intellij.execution.configurations.SimpleJavaParameters; import com.intellij.execution.testframework.sm.runner.SMTRunnerConsoleProperties; import com.intellij.openapi.components.ServiceManager; @@ -52,11 +51,13 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtilRt; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.GlobalSearchScopes; import com.intellij.util.Function; import com.intellij.util.PathUtil; import com.intellij.util.PathsList; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.ContainerUtilRt; +import com.intellij.util.containers.JBIterable; import com.intellij.util.messages.MessageBusConnection; import icons.GradleIcons; import org.jetbrains.annotations.NotNull; @@ -386,10 +387,10 @@ public final class GradleManager return null; } else { - Module[] modules = Arrays.stream(ModuleManager.getInstance(project).getModules()) + List modules = JBIterable.of(ModuleManager.getInstance(project).getModules()) .filter(module -> StringUtil.equals(projectPath, ExternalSystemApiUtil.getExternalProjectPath(module))) - .toArray(Module[]::new); - return modules.length > 0 ? SearchScopeProvider.createSearchScope(modules) : null; + .toList(); + return modules.isEmpty() ? null : GlobalSearchScopes.executionScope(modules); } }