From 7cf643be9f04a7c4db2583aaf9cdf9446e1bdba6 Mon Sep 17 00:00:00 2001 From: Dmitry Kichinsky Date: Sun, 21 May 2023 19:01:44 +0200 Subject: [PATCH] [maven] IDEA-313767 refactoring: MavenProjectsManagerEx.importMavenProjects GitOrigin-RevId: 7b59eeaa2f436de114ec546029f472fd7d25367b --- .../maven/project/MavenProjectsManagerEx.kt | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManagerEx.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManagerEx.kt index 42ac6e481b6d..8e87411eba30 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManagerEx.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManagerEx.kt @@ -31,7 +31,7 @@ interface MavenAsyncProjectsManager { open class MavenProjectsManagerEx(project: Project) : MavenProjectsManager(project) { override suspend fun importMavenProjects(): List { - TODO("Not yet implemented") + return importMavenProjects(ProjectDataManager.getInstance().createModifiableModelsProvider(myProject)) } override fun importMavenProjectsSync(): List { @@ -39,6 +39,10 @@ open class MavenProjectsManagerEx(project: Project) : MavenProjectsManager(proje } override fun importMavenProjectsSync(modelsProvider: IdeModifiableModelsProvider): List { + return prepareImporter(modelsProvider).importMavenProjectsBlocking() + } + + private fun prepareImporter(modelsProvider: IdeModifiableModelsProvider): MavenProjectsManagerImporter { val projectsToImportWithChanges = Collections.unmodifiableMap(LinkedHashMap(myProjectsToImport)) projectsToImportWithChanges.forEach { (key: MavenProject, value: MavenProjectChanges) -> myProjectsToImport.remove(key, value) @@ -48,7 +52,11 @@ open class MavenProjectsManagerEx(project: Project) : MavenProjectsManager(proje modelsProvider, projectsToImportWithChanges, importModuleGroupsRequired - ).importMavenProjectsBlocking() + ) + } + + private suspend fun importMavenProjects(modelsProvider: IdeModifiableModelsProvider): List { + return prepareImporter(modelsProvider).importMavenProjects() } private data class ImportResult(val createdModules: List, val postTasks: List) @@ -60,12 +68,20 @@ open class MavenProjectsManagerEx(project: Project) : MavenProjectsManager(proje @RequiresBlockingContext fun importMavenProjectsBlocking(): List { - val importer = this if (ApplicationManager.getApplication().isDispatchThread) { - return importer.importMavenProjectsEdt() + return importMavenProjectsEdt() } else { - return runBlockingCancellableUnderIndicator { importMavenProjects() } + return runBlockingCancellableUnderIndicator { importMavenProjectsBg() } + } + } + + suspend fun importMavenProjects(): List { + if (ApplicationManager.getApplication().isDispatchThread) { + return importMavenProjectsEdt() + } + else { + return importMavenProjectsBg() } } @@ -77,7 +93,7 @@ open class MavenProjectsManagerEx(project: Project) : MavenProjectsManager(proje } @RequiresBackgroundThread - suspend fun importMavenProjects(): List { + suspend fun importMavenProjectsBg(): List { return withBackgroundProgress(project, title, false) { val createdModules = doImport() val fm = VirtualFileManager.getInstance()