From fc09d0ce08776f0e85231b9eb27008817eda7316 Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 28 Oct 2015 15:51:00 +0300 Subject: [PATCH] when gradle/maven project is opened in headless mode (e.g. to run offline inspections) open existing project and run import to ensure that old IDE-specific configuration (e.g. inspection profiles) won't be deleted and project model will be updated (IDEA-119815) --- .../ProjectOpenProcessorBase.java | 47 ++++++++++++------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/java/idea-ui/src/com/intellij/projectImport/ProjectOpenProcessorBase.java b/java/idea-ui/src/com/intellij/projectImport/ProjectOpenProcessorBase.java index 8afa3ba0981c..a58e7bc71717 100644 --- a/java/idea-ui/src/com/intellij/projectImport/ProjectOpenProcessorBase.java +++ b/java/idea-ui/src/com/intellij/projectImport/ProjectOpenProcessorBase.java @@ -162,26 +162,34 @@ public abstract class ProjectOpenProcessorBase e } boolean shouldOpenExisting = false; - if (!ApplicationManager.getApplication().isHeadlessEnvironment() && (projectFile.exists() || dotIdeaFile.exists())) { - String existingName; - if (dotIdeaFile.exists()) { - existingName = "an existing project"; - pathToOpen = dotIdeaFile.getParent(); + boolean importToProject = false; + if (projectFile.exists() || dotIdeaFile.exists()) { + if (ApplicationManager.getApplication().isHeadlessEnvironment()) { + shouldOpenExisting = true; + importToProject = true; } else { - existingName = "'" + projectFile.getName() + "'"; - pathToOpen = projectFilePath; + String existingName; + if (dotIdeaFile.exists()) { + existingName = "an existing project"; + pathToOpen = dotIdeaFile.getParent(); + } + else { + existingName = "'" + projectFile.getName() + "'"; + pathToOpen = projectFilePath; + } + int result = Messages.showYesNoCancelDialog( + projectToClose, + IdeBundle.message("project.import.open.existing", existingName, projectFile.getParent(), virtualFile.getName()), + IdeBundle.message("title.open.project"), + IdeBundle.message("project.import.open.existing.openExisting"), + IdeBundle.message("project.import.open.existing.reimport"), + CommonBundle.message("button.cancel"), + Messages.getQuestionIcon()); + if (result == Messages.CANCEL) return null; + shouldOpenExisting = result == Messages.YES; + importToProject = !shouldOpenExisting; } - int result = Messages.showYesNoCancelDialog( - projectToClose, - IdeBundle.message("project.import.open.existing", existingName, projectFile.getParent(), virtualFile.getName()), - IdeBundle.message("title.open.project"), - IdeBundle.message("project.import.open.existing.openExisting"), - IdeBundle.message("project.import.open.existing.reimport"), - CommonBundle.message("button.cancel"), - Messages.getQuestionIcon()); - if (result == Messages.CANCEL) return null; - shouldOpenExisting = result == Messages.YES; } final Project projectToOpen; @@ -195,8 +203,11 @@ public abstract class ProjectOpenProcessorBase e } else { projectToOpen = ProjectManagerEx.getInstanceEx().newProject(wizardContext.getProjectName(), pathToOpen, true, false); + } + if (projectToOpen == null) return null; - if (projectToOpen == null || !getBuilder().validate(projectToClose, projectToOpen)) { + if (importToProject) { + if (!getBuilder().validate(projectToClose, projectToOpen)) { return null; } -- 2.32.0