From caab8e580790f551e2f570b816aef2e488722654 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 6 Nov 2015 12:09:07 +0300 Subject: [PATCH] IDEA-143572 Android: IAE at com.android.tools.idea.gradle.parser.GradleGroovyFile.checkInitialized --- .../AbstractExternalProjectImportBuilder.java | 82 +++++++++++-------- 1 file changed, 48 insertions(+), 34 deletions(-) diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/AbstractExternalProjectImportBuilder.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/AbstractExternalProjectImportBuilder.java index cf7be530aaa1..f4f94ea4b711 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/AbstractExternalProjectImportBuilder.java +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/AbstractExternalProjectImportBuilder.java @@ -33,6 +33,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.roots.ui.configuration.ModulesConfigurator; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; +import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; @@ -124,7 +125,7 @@ public abstract class AbstractExternalProjectImportBuilder modules = ContainerUtil.newSmartList(); final IdeModifiableModelsProvider modelsProvider = isFromUI ? new IdeUIModifiableModelsProvider( @@ -163,46 +164,59 @@ public abstract class AbstractExternalProjectImportBuilder externalProjectNode, + boolean isFromUI, + final List modules, + IdeModifiableModelsProvider modelsProvider, final ExternalProjectSettings projectSettings) { + myProjectDataManager.importData(externalProjectNode, project, modelsProvider, true); + myExternalProjectNode = null; + + // resolve dependencies + final Runnable resolveDependenciesTask = new Runnable() { + @Override + public void run() { + ExternalSystemUtil.refreshProject( + project, myExternalSystemId, projectSettings.getExternalProjectPath(), false, + ProgressExecutionMode.IN_BACKGROUND_ASYNC); + } + }; + if (!isFromUI) { + resolveDependenciesTask.run(); + } + else { + // execute when current dialog is closed + ExternalSystemUtil.invokeLater(project, ModalityState.NON_MODAL, new Runnable() { + @Override + public void run() { + final Module[] committedModules = ModuleManager.getInstance(project).getModules(); + if (ContainerUtil.list(committedModules).containsAll(modules)) { + resolveDependenciesTask.run(); + } + else { + ExternalSystemApiUtil.getLocalSettings(project, myExternalSystemId).forgetExternalProjects( + Collections.singleton(projectSettings.getExternalProjectPath())); + ExternalSystemApiUtil.getSettings(project, myExternalSystemId).unlinkExternalProject( + projectSettings.getExternalProjectPath()); + + ExternalProjectsManager.getInstance(project).forgetExternalProjectData( + myExternalSystemId, projectSettings.getExternalProjectPath()); + } + } + }); + } + } + @NotNull private ExternalProjectSettings getCurrentExternalProjectSettings() { ExternalProjectSettings result = myControl.getProjectSettings().clone();