From 12fc73a9d268d31af54cc56a1491665b8d3f89f9 Mon Sep 17 00:00:00 2001 From: Alexander Bubenchikov Date: Wed, 17 Feb 2021 16:58:17 +0300 Subject: [PATCH] IDEA-261846 - maven dummy server - review fixes IDEA-261846 - maven dummy server GitOrigin-RevId: 3cfe4b8bf888950791624125e97be56a5150dbcf --- .../maven/server/DummyMavenServerConnector.kt | 2 +- .../idea/maven/server/ui/ConnectorTable.kt | 4 ++- .../jetbrains/idea/maven/utils/MavenUtil.java | 26 ++++++++++++------- .../messages/MavenSyncBundle.properties | 5 +++- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/DummyMavenServerConnector.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/DummyMavenServerConnector.kt index d5a7280f6fd5..df1e5007bde9 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/DummyMavenServerConnector.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/DummyMavenServerConnector.kt @@ -74,7 +74,7 @@ class TrustProjectQuickFix : BuildIssueQuickFix { override fun runQuickFix(project: Project, dataContext: DataContext): CompletableFuture<*> { val future = CompletableFuture() - ApplicationManager.getApplication().invokeLaterOnWriteThread { + ApplicationManager.getApplication().invokeLater { try { val result = MavenUtil.isProjectTrustedEnoughToImport(project, true, true) if (result) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/ui/ConnectorTable.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/ui/ConnectorTable.kt index 0145ce13cb4f..bbdd0d16b3ca 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/ui/ConnectorTable.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/ui/ConnectorTable.kt @@ -8,6 +8,7 @@ import com.intellij.ui.AnActionButton import com.intellij.ui.AnActionButtonRunnable import com.intellij.util.ui.ListTableModel import org.jetbrains.idea.maven.project.MavenConfigurableBundle +import org.jetbrains.idea.maven.server.DummyMavenServerConnector import org.jetbrains.idea.maven.server.MavenServerConnector import org.jetbrains.idea.maven.server.MavenServerConnectorImpl import org.jetbrains.idea.maven.server.MavenServerManager @@ -27,7 +28,8 @@ class ConnectorTable : ListTableWithButtons() { override fun updateButton(e: AnActionEvent) { val connector = tableView.selectedObject - isEnabled = connector is MavenServerConnectorImpl && connector.state == MavenServerConnectorImpl.State.RUNNING + isEnabled = (connector is MavenServerConnectorImpl && connector.state == MavenServerConnectorImpl.State.RUNNING) + || connector is DummyMavenServerConnector } } val refresh = object : AnActionButton(MavenConfigurableBundle.message("connector.ui.refresh"), AllIcons.Actions.Refresh) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java index 6c2270c889ce..96916d786394 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java @@ -65,6 +65,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.buildtool.MavenSyncConsole; import org.jetbrains.idea.maven.dom.MavenDomUtil; import org.jetbrains.idea.maven.execution.MavenRunnerSettings; +import org.jetbrains.idea.maven.execution.SyncBundle; import org.jetbrains.idea.maven.model.MavenArtifact; import org.jetbrains.idea.maven.model.MavenConstants; import org.jetbrains.idea.maven.model.MavenId; @@ -72,10 +73,7 @@ import org.jetbrains.idea.maven.model.MavenPlugin; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectReaderResult; import org.jetbrains.idea.maven.project.MavenProjectsManager; -import org.jetbrains.idea.maven.server.MavenServerEmbedder; -import org.jetbrains.idea.maven.server.MavenServerManager; -import org.jetbrains.idea.maven.server.MavenServerProgressIndicator; -import org.jetbrains.idea.maven.server.MavenServerUtil; +import org.jetbrains.idea.maven.server.*; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; @@ -1064,12 +1062,16 @@ public class MavenUtil { "unlinked.project.notification.load.action", MAVEN_NAME)); if (trust) { - MavenServerManager.getInstance().getAllConnectors().forEach(it -> { - if (it.getProject().equals(project)) { - it.shutdown(true); - } - }); - MavenProjectsManager.getInstance(project).getEmbeddersManager().reset(); + ProgressManager.getInstance().runProcessWithProgressSynchronously(() -> { + MavenServerManager.getInstance().getAllConnectors().forEach(it -> { + if (it.getProject().equals(project)) { + it.shutdown(true); + } + }); + MavenProjectsManager.getInstance(project).getEmbeddersManager().reset(); + }, SyncBundle.message("maven.sync.restarting"), false, project); + + return true; } } return state == ThreeState.YES; @@ -1393,4 +1395,8 @@ public class MavenUtil { File luceneLib = new File(PathUtil.getJarPathForClass(Query.class)); return luceneLib.getParentFile().getParentFile().getParentFile(); } + + public static MavenDistribution getEffectiveMavenHome(Project project, String workingDirectory) { + return MavenDistributionsCache.getInstance(project).getMavenDistribution(workingDirectory); + } } diff --git a/plugins/maven/src/main/resources/messages/MavenSyncBundle.properties b/plugins/maven/src/main/resources/messages/MavenSyncBundle.properties index ad377a9f0d47..4c61b12bedf6 100644 --- a/plugins/maven/src/main/resources/messages/MavenSyncBundle.properties +++ b/plugins/maven/src/main/resources/messages/MavenSyncBundle.properties @@ -62,4 +62,7 @@ maven.sync.not.trusted.title=Untrusted project #leave link html markup - i.e. Translation goes here maven.sync.not.trusted.description=The opened untrusted project is not fully loaded. \n\ IntelliJ IDEA will not resolve any plugins in the project, download artifacts, or execute any goals.\n\ - Make project trusted + Trust project +maven.sync.wsl.maven.is.not.wsl=Maven distribution looks incorrect +maven.sync.wsl.maven.is.not.wsl.description=Maven home resolved to {0}.\n For performance reason better to use maven installed in wsl disctribution. Open settings +maven.sync.restarting=Restarting maven...