mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[maven][IDEA-330932] fixes for dummy import
GitOrigin-RevId: 627b1c8b288550a580047a9d4ece826c94a6959f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
65fb7c7df6
commit
7a7b2f2cac
+11
-4
@@ -310,14 +310,21 @@ open class MavenProjectsManagerEx(project: Project) : MavenProjectsManager(proje
|
||||
console.startImport(spec)
|
||||
if (MavenUtil.enablePreimport()) {
|
||||
val result = console.runTask(MavenProjectBundle.message("maven.project.preimporting")) {
|
||||
return@runTask MavenProjectPreImporter.getInstance(myProject).preimport(
|
||||
projectsTree.rootProjectsFiles, modelsProvider, importingSettings, generalSettings, syncActivity)
|
||||
return@runTask MavenProjectPreImporter.getInstance(myProject)
|
||||
.preimport(
|
||||
projectsTree.existingManagedFiles,
|
||||
modelsProvider,
|
||||
importingSettings,
|
||||
generalSettings,
|
||||
!project.isTrusted(),
|
||||
syncActivity)
|
||||
}
|
||||
if (MavenUtil.enablePreimportOnly()) return result
|
||||
if (MavenUtil.enablePreimportOnly()) return result.modules
|
||||
|
||||
if (!project.isTrusted()) {
|
||||
projectsTree.updater().copyFrom(result.projectTree)
|
||||
showUntrustedProjectNotification(myProject)
|
||||
return result
|
||||
return result.modules
|
||||
}
|
||||
}
|
||||
val readingResult = readMavenProjectsActivity(syncActivity) { read() }
|
||||
|
||||
@@ -375,7 +375,9 @@ class MavenProjectsTree(val project: Project) {
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
suspend fun updateAll(force: Boolean, generalSettings: MavenGeneralSettings, progressReporter: RawProgressReporter): MavenProjectsTreeUpdateResult {
|
||||
suspend fun updateAll(force: Boolean,
|
||||
generalSettings: MavenGeneralSettings,
|
||||
progressReporter: RawProgressReporter): MavenProjectsTreeUpdateResult {
|
||||
val managedFiles = existingManagedFiles
|
||||
val explicitProfiles = explicitProfiles
|
||||
|
||||
@@ -1069,6 +1071,41 @@ class MavenProjectsTree(val project: Project) {
|
||||
})
|
||||
return this
|
||||
}
|
||||
|
||||
fun copyFrom(projectTree: MavenProjectsTree): Updater {
|
||||
|
||||
addFrom(projectTree) { it.myManagedFilesPaths }
|
||||
addFrom(projectTree) { it.myRootProjects }
|
||||
|
||||
addFromMap(projectTree) { it.myMavenIdToProjectMapping }
|
||||
addFromMap(projectTree) { it.myVirtualFileToProjectMapping }
|
||||
addFromMap(projectTree) { it.myAggregatorToModuleMapping }
|
||||
addFromMap(projectTree) { it.myModuleToAggregatorMapping }
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
private fun <T> addFrom(projectTree: MavenProjectsTree, getter: (MavenProjectsTree) -> MutableCollection<T>) {
|
||||
val my = getter(this@MavenProjectsTree)
|
||||
val theirs = getter(projectTree)
|
||||
if (my.isEmpty()) {
|
||||
my.addAll(theirs)
|
||||
}
|
||||
else {
|
||||
val set = LinkedHashSet<T>()
|
||||
set.addAll(my)
|
||||
set.addAll(theirs)
|
||||
my.clear()
|
||||
my.addAll(set.toList())
|
||||
}
|
||||
}
|
||||
|
||||
private fun <K, V> addFromMap(projectTree: MavenProjectsTree, getter: (MavenProjectsTree) -> MutableMap<K, V>) {
|
||||
val my = getter(this@MavenProjectsTree)
|
||||
val theirs = getter(projectTree)
|
||||
my.putAll(theirs)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
+5
-4
@@ -2,6 +2,7 @@
|
||||
package org.jetbrains.idea.maven.project.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.externalSystem.service.project.trusted.ExternalSystemTrustedProjectDialog;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
@@ -14,11 +15,11 @@ public class ReimportAction extends MavenProjectsManagerAction {
|
||||
return MavenActionUtil.hasProject(e.getDataContext());
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
protected void perform(@NotNull MavenProjectsManager manager) {
|
||||
if (MavenUtil.isProjectTrustedEnoughToImport(manager.getProject())) {
|
||||
FileDocumentManager.getInstance().saveAllDocuments();
|
||||
manager.forceUpdateAllProjectsOrFindAllAvailablePomFiles();
|
||||
}
|
||||
ExternalSystemTrustedProjectDialog.confirmLoadingUntrustedProject(manager.getProject(), MavenUtil.SYSTEM_ID);
|
||||
FileDocumentManager.getInstance().saveAllDocuments();
|
||||
manager.forceUpdateAllProjectsOrFindAllAvailablePomFiles();
|
||||
}
|
||||
}
|
||||
|
||||
+7
-7
@@ -8,7 +8,6 @@ import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsPr
|
||||
import com.intellij.openapi.externalSystem.service.project.ProjectDataManager
|
||||
import com.intellij.openapi.externalSystem.statistics.ProjectImportCollector
|
||||
import com.intellij.openapi.externalSystem.statistics.ProjectImportCollector.PREIMPORT_ACTIVITY
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.progress.blockingContext
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
@@ -45,7 +44,8 @@ class MavenProjectPreImporter(val project: Project, val coroutineScope: Coroutin
|
||||
optionalModelsProvider: IdeModifiableModelsProvider?,
|
||||
importingSettings: MavenImportingSettings,
|
||||
generalSettings: MavenGeneralSettings,
|
||||
parentActivity: StructuredIdeActivity): List<Module> {
|
||||
reimportExistingFiles: Boolean,
|
||||
parentActivity: StructuredIdeActivity): PreimportResult {
|
||||
|
||||
|
||||
val activity = PREIMPORT_ACTIVITY.startedWithParent(project, parentActivity)
|
||||
@@ -56,7 +56,7 @@ class MavenProjectPreImporter(val project: Project, val coroutineScope: Coroutin
|
||||
val forest = rootProjectFiles.map {
|
||||
scope.preimport(it)
|
||||
}.awaitAll().filterNotNull()
|
||||
if (forest.isEmpty()) return emptyList()
|
||||
if (forest.isEmpty()) return PreimportResult.empty(project)
|
||||
|
||||
|
||||
val projectTree = MavenProjectsTree(project)
|
||||
@@ -71,7 +71,7 @@ class MavenProjectPreImporter(val project: Project, val coroutineScope: Coroutin
|
||||
allProjects.addAll(tree.projects())
|
||||
tree.root?.let(roots::add)
|
||||
|
||||
if (existingTree == null) {
|
||||
if (existingTree == null || reimportExistingFiles) {
|
||||
projectChanges.putAll(tree.projects().associateWith { MavenProjectChanges.ALL })
|
||||
}
|
||||
else {
|
||||
@@ -89,7 +89,7 @@ class MavenProjectPreImporter(val project: Project, val coroutineScope: Coroutin
|
||||
|
||||
val modelsProvider = optionalModelsProvider ?: ProjectDataManager.getInstance().createModifiableModelsProvider(project)
|
||||
// MavenProjectsManager.getInstance(project).projectsTree = projectTree
|
||||
return withBackgroundProgress(project, MavenProjectBundle.message("maven.project.importing"), false) {
|
||||
return PreimportResult(withBackgroundProgress(project, MavenProjectBundle.message("maven.project.importing"), false) {
|
||||
blockingContext {
|
||||
val importer = MavenProjectImporter.createImporter(project, projectTree,
|
||||
projectChanges,
|
||||
@@ -103,11 +103,11 @@ class MavenProjectPreImporter(val project: Project, val coroutineScope: Coroutin
|
||||
return@blockingContext importer.createdModules()
|
||||
|
||||
}
|
||||
}
|
||||
}, projectTree)
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
MavenLog.LOG.error(e)
|
||||
return emptyList()
|
||||
return PreimportResult.empty(project)
|
||||
}
|
||||
finally {
|
||||
activity.finished {
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.idea.maven.project.preimport
|
||||
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsTree
|
||||
|
||||
|
||||
class PreimportResult(val modules: List<Module>, val projectTree: MavenProjectsTree) {
|
||||
companion object {
|
||||
fun empty(project: Project): PreimportResult = PreimportResult(emptyList(), MavenProjectsTree(project))
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -522,7 +522,7 @@ class MavenPreimportingTest : MavenMultiVersionImportingTestCase() {
|
||||
val activity = ProjectImportCollector.IMPORT_ACTIVITY.started(myProject)
|
||||
try {
|
||||
MavenProjectPreImporter.getInstance(myProject)
|
||||
.preimport(files, null, mavenImporterSettings, mavenGeneralSettings, activity)
|
||||
.preimport(files, null, mavenImporterSettings, mavenGeneralSettings,true, activity)
|
||||
}
|
||||
finally {
|
||||
activity.finished()
|
||||
|
||||
+1
-1
@@ -392,7 +392,7 @@ abstract class MavenImportingTestCase : MavenTestCase() {
|
||||
val activity = ProjectImportCollector.IMPORT_ACTIVITY.started(myProject)
|
||||
try {
|
||||
MavenProjectPreImporter.getInstance(myProject)
|
||||
.preimport(files, null, mavenImporterSettings, mavenGeneralSettings, activity)
|
||||
.preimport(files, null, mavenImporterSettings, mavenGeneralSettings, true, activity)
|
||||
}
|
||||
finally {
|
||||
activity.finished()
|
||||
|
||||
Reference in New Issue
Block a user