Wizard: do not run whole JPS project importing in write action

This commit is contained in:
Ilya Kirillov
2020-04-24 22:28:23 +03:00
parent b404e6324f
commit 72030ee94e
@@ -61,7 +61,7 @@ class IdeaJpsWizardService(
path: Path, path: Path,
modulesIrs: List<ModuleIR>, modulesIrs: List<ModuleIR>,
buildSystem: BuildSystemType buildSystem: BuildSystemType
): TaskResult<Unit> = runWriteAction { ): TaskResult<Unit> {
KotlinSdkType.setUpIfNeeded() KotlinSdkType.setUpIfNeeded()
val projectImporter = ProjectImporter(project, modulesModel, path, modulesIrs) val projectImporter = ProjectImporter(project, modulesModel, path, modulesIrs)
modulesBuilder.addModuleConfigurationUpdater( modulesBuilder.addModuleConfigurationUpdater(
@@ -69,6 +69,7 @@ class IdeaJpsWizardService(
) )
projectImporter.import() projectImporter.import()
return UNIT_SUCCESS
} }
} }
@@ -138,7 +139,7 @@ private class ProjectImporter(
irsToIdeaModule.forEach { (moduleIr, ideaModule) -> irsToIdeaModule.forEach { (moduleIr, ideaModule) ->
addModuleDependencies(moduleIr, ideaModule, irsToIdeaModuleMap) addModuleDependencies(moduleIr, ideaModule, irsToIdeaModuleMap)
} }
} andThen safe { modulesModel.commit() } } andThen safe { runWriteAction { modulesModel.commit() } }
private fun convertModule(moduleIr: ModuleIR): TaskResult<IdeaModule> { private fun convertModule(moduleIr: ModuleIR): TaskResult<IdeaModule> {
val module = modulesModel.newModule( val module = modulesModel.newModule(
@@ -161,7 +162,7 @@ private class ProjectImporter(
} }
rootModel.inheritSdk() rootModel.inheritSdk()
rootModel.commit() runWriteAction { rootModel.commit() }
addLibrariesToTheModule(moduleIr, module) addLibrariesToTheModule(moduleIr, module)
return Success(module) return Success(module)
} }