KT-12558 Configure Kotlin in Project: Maven: Undo could revert changes in all poms
This commit is contained in:
@@ -16,7 +16,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.maven
|
package org.jetbrains.kotlin.idea.maven
|
||||||
|
|
||||||
import com.intellij.openapi.components.*
|
import com.intellij.openapi.components.PersistentStateComponent
|
||||||
|
import com.intellij.openapi.components.State
|
||||||
|
import com.intellij.openapi.components.Storage
|
||||||
|
import com.intellij.openapi.components.StoragePathMacros
|
||||||
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider
|
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.roots.OrderEnumerator
|
import com.intellij.openapi.roots.OrderEnumerator
|
||||||
@@ -30,7 +33,6 @@ import org.jetbrains.idea.maven.model.MavenPlugin
|
|||||||
import org.jetbrains.idea.maven.project.*
|
import org.jetbrains.idea.maven.project.*
|
||||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||||
import org.jetbrains.kotlin.idea.util.projectStructure.findLibrary
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
|||||||
+35
-35
@@ -80,18 +80,20 @@ abstract class KotlinMavenConfigurator protected constructor(private val stdlibA
|
|||||||
dialog.show()
|
dialog.show()
|
||||||
if (!dialog.isOK) return
|
if (!dialog.isOK) return
|
||||||
|
|
||||||
val collector = createConfigureKotlinNotificationCollector(project)
|
WriteCommandAction.runWriteCommandAction(project) {
|
||||||
for (module in excludeMavenChildrenModules(project, dialog.modulesToConfigure)) {
|
val collector = createConfigureKotlinNotificationCollector(project)
|
||||||
val file = findModulePomFile(module)
|
for (module in excludeMavenChildrenModules(project, dialog.modulesToConfigure)) {
|
||||||
if (file != null && canConfigureFile(file)) {
|
val file = findModulePomFile(module)
|
||||||
changePomFile(module, file, dialog.kotlinVersion, collector)
|
if (file != null && canConfigureFile(file)) {
|
||||||
OpenFileAction.openFile(file.virtualFile, project)
|
changePomFile(module, file, dialog.kotlinVersion, collector)
|
||||||
}
|
OpenFileAction.openFile(file.virtualFile, project)
|
||||||
else {
|
}
|
||||||
showErrorMessage(project, "Cannot find pom.xml for module " + module.name)
|
else {
|
||||||
|
showErrorMessage(project, "Cannot find pom.xml for module " + module.name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
collector.showNotification()
|
||||||
}
|
}
|
||||||
collector.showNotification()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract fun isKotlinModule(module: Module): Boolean
|
protected abstract fun isKotlinModule(module: Module): Boolean
|
||||||
@@ -112,33 +114,31 @@ abstract class KotlinMavenConfigurator protected constructor(private val stdlibA
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteCommandAction.runWriteCommandAction(module.project) {
|
val pom = PomFile(file as XmlFile)
|
||||||
val pom = PomFile(file as XmlFile)
|
pom.addProperty(KOTLIN_VERSION_PROPERTY, version)
|
||||||
pom.addProperty(KOTLIN_VERSION_PROPERTY, version)
|
|
||||||
|
|
||||||
pom.addDependency(MavenId(GROUP_ID, stdlibArtifactId, "\${$KOTLIN_VERSION_PROPERTY}"), MavenArtifactScope.COMPILE, null, false, null)
|
pom.addDependency(MavenId(GROUP_ID, stdlibArtifactId, "\${$KOTLIN_VERSION_PROPERTY}"), MavenArtifactScope.COMPILE, null, false, null)
|
||||||
if (testArtifactId != null) {
|
if (testArtifactId != null) {
|
||||||
pom.addDependency(MavenId(GROUP_ID, testArtifactId, "\${$KOTLIN_VERSION_PROPERTY}"), MavenArtifactScope.TEST, null, false, null)
|
pom.addDependency(MavenId(GROUP_ID, testArtifactId, "\${$KOTLIN_VERSION_PROPERTY}"), MavenArtifactScope.TEST, null, false, null)
|
||||||
}
|
|
||||||
if (addJunit) {
|
|
||||||
// TODO currently it is always disabled: junit version selection could be shown in the configurator dialog
|
|
||||||
pom.addDependency(MavenId("junit", "junit", "4.12"), MavenArtifactScope.TEST, null, false, null)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isSnapshot(version)) {
|
|
||||||
pom.addLibraryRepository(SNAPSHOT_REPOSITORY)
|
|
||||||
pom.addPluginRepository(SNAPSHOT_REPOSITORY)
|
|
||||||
}
|
|
||||||
if (isEap(version)) {
|
|
||||||
pom.addLibraryRepository(EAP_REPOSITORY)
|
|
||||||
pom.addPluginRepository(EAP_REPOSITORY)
|
|
||||||
}
|
|
||||||
|
|
||||||
val plugin = pom.addPlugin(MavenId(GROUP_ID, MAVEN_PLUGIN_ID, "\${$KOTLIN_VERSION_PROPERTY}"))
|
|
||||||
createExecutions(pom, plugin, module)
|
|
||||||
|
|
||||||
CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement<PsiFile>(file)
|
|
||||||
}
|
}
|
||||||
|
if (addJunit) {
|
||||||
|
// TODO currently it is always disabled: junit version selection could be shown in the configurator dialog
|
||||||
|
pom.addDependency(MavenId("junit", "junit", "4.12"), MavenArtifactScope.TEST, null, false, null)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isSnapshot(version)) {
|
||||||
|
pom.addLibraryRepository(SNAPSHOT_REPOSITORY)
|
||||||
|
pom.addPluginRepository(SNAPSHOT_REPOSITORY)
|
||||||
|
}
|
||||||
|
if (isEap(version)) {
|
||||||
|
pom.addLibraryRepository(EAP_REPOSITORY)
|
||||||
|
pom.addPluginRepository(EAP_REPOSITORY)
|
||||||
|
}
|
||||||
|
|
||||||
|
val plugin = pom.addPlugin(MavenId(GROUP_ID, MAVEN_PLUGIN_ID, "\${$KOTLIN_VERSION_PROPERTY}"))
|
||||||
|
createExecutions(pom, plugin, module)
|
||||||
|
|
||||||
|
CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement<PsiFile>(file)
|
||||||
|
|
||||||
collector.addMessage(virtualFile.path + " was modified")
|
collector.addMessage(virtualFile.path + " was modified")
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -199,5 +199,4 @@ private fun MavenPlugin.isKotlinMavenPlugin() = groupId == KotlinMavenConfigurat
|
|||||||
|
|
||||||
private fun MavenDomGoal.isJsGoal() = rawText == PomFile.KotlinGoals.Js || rawText == PomFile.KotlinGoals.TestJs
|
private fun MavenDomGoal.isJsGoal() = rawText == PomFile.KotlinGoals.Js || rawText == PomFile.KotlinGoals.TestJs
|
||||||
|
|
||||||
private fun List<MavenDomPluginExecution>.atPhase(phase: String) = filter { it.phase.stringValue == phase }
|
|
||||||
private fun List<MavenDomPluginExecution>.notAtPhase(phase: String) = filter { it.phase.stringValue != phase }
|
private fun List<MavenDomPluginExecution>.notAtPhase(phase: String) = filter { it.phase.stringValue != phase }
|
||||||
|
|||||||
-10
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.maven.inspections
|
package org.jetbrains.kotlin.idea.maven.inspections
|
||||||
|
|
||||||
import com.intellij.codeInsight.daemon.HighlightDisplayKey
|
|
||||||
import com.intellij.codeInsight.daemon.QuickFixActionRegistrar
|
import com.intellij.codeInsight.daemon.QuickFixActionRegistrar
|
||||||
import com.intellij.codeInsight.intention.IntentionAction
|
import com.intellij.codeInsight.intention.IntentionAction
|
||||||
import com.intellij.codeInsight.intention.LowPriorityAction
|
import com.intellij.codeInsight.intention.LowPriorityAction
|
||||||
@@ -25,8 +24,6 @@ import com.intellij.openapi.editor.Editor
|
|||||||
import com.intellij.openapi.module.ModuleUtilCore
|
import com.intellij.openapi.module.ModuleUtilCore
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.roots.ProjectRootManager
|
import com.intellij.openapi.roots.ProjectRootManager
|
||||||
import com.intellij.openapi.util.Condition
|
|
||||||
import com.intellij.openapi.util.TextRange
|
|
||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.psi.SmartPsiElementPointer
|
import com.intellij.psi.SmartPsiElementPointer
|
||||||
@@ -35,21 +32,14 @@ import org.jetbrains.idea.maven.dom.MavenDomUtil
|
|||||||
import org.jetbrains.idea.maven.indices.MavenArtifactSearchDialog
|
import org.jetbrains.idea.maven.indices.MavenArtifactSearchDialog
|
||||||
import org.jetbrains.idea.maven.project.MavenProjectsManager
|
import org.jetbrains.idea.maven.project.MavenProjectsManager
|
||||||
import org.jetbrains.idea.maven.utils.MavenArtifactScope
|
import org.jetbrains.idea.maven.utils.MavenArtifactScope
|
||||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
|
||||||
import org.jetbrains.kotlin.idea.maven.PomFile
|
import org.jetbrains.kotlin.idea.maven.PomFile
|
||||||
import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil
|
|
||||||
import org.jetbrains.kotlin.idea.quickfix.IntentionActionPriority
|
|
||||||
import org.jetbrains.kotlin.idea.quickfix.KotlinIntentionActionFactoryWithDelegate
|
|
||||||
import org.jetbrains.kotlin.idea.quickfix.QuickFixWithDelegateFactory
|
|
||||||
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
||||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||||
import org.jetbrains.kotlin.psi.KtImportDirective
|
import org.jetbrains.kotlin.psi.KtImportDirective
|
||||||
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
|
|
||||||
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
||||||
import org.jetbrains.kotlin.psi.KtTypeReference
|
import org.jetbrains.kotlin.psi.KtTypeReference
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer
|
import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
class KotlinMavenUnresolvedReferenceQuickFixProvider : UnresolvedReferenceQuickFixProvider<KtSimpleNameReference>() {
|
class KotlinMavenUnresolvedReferenceQuickFixProvider : UnresolvedReferenceQuickFixProvider<KtSimpleNameReference>() {
|
||||||
override fun getReferenceClass(): Class<KtSimpleNameReference> = KtSimpleNameReference::class.java
|
override fun getReferenceClass(): Class<KtSimpleNameReference> = KtSimpleNameReference::class.java
|
||||||
|
|||||||
+2
-3
@@ -18,10 +18,9 @@ package org.jetbrains.kotlin.idea.maven
|
|||||||
|
|
||||||
import com.google.gson.JsonParser
|
import com.google.gson.JsonParser
|
||||||
import org.jetbrains.idea.maven.model.MavenArchetype
|
import org.jetbrains.idea.maven.model.MavenArchetype
|
||||||
import org.jetbrains.kotlin.idea.maven.KotlinMavenArchetypesProvider
|
import org.junit.Assert.assertEquals
|
||||||
|
import org.junit.Assert.assertTrue
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
|
|
||||||
import org.junit.Assert.*
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class KotlinMavenArchetypesProviderTest {
|
class KotlinMavenArchetypesProviderTest {
|
||||||
|
|||||||
+4
-4
@@ -16,14 +16,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.maven.configuration
|
package org.jetbrains.kotlin.idea.maven.configuration
|
||||||
|
|
||||||
|
import com.intellij.openapi.command.WriteCommandAction
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import org.jetbrains.idea.maven.model.MavenConstants
|
import org.jetbrains.idea.maven.model.MavenConstants
|
||||||
import org.jetbrains.kotlin.idea.configuration.AbstractConfigureProjectByChangingFileTest
|
import org.jetbrains.kotlin.idea.configuration.AbstractConfigureProjectByChangingFileTest
|
||||||
import org.jetbrains.kotlin.idea.configuration.NotificationMessageCollector
|
import org.jetbrains.kotlin.idea.configuration.NotificationMessageCollector
|
||||||
import org.jetbrains.kotlin.idea.maven.configuration.KotlinJavaMavenConfigurator
|
|
||||||
import org.jetbrains.kotlin.idea.maven.configuration.KotlinJavascriptMavenConfigurator
|
|
||||||
import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator
|
|
||||||
|
|
||||||
abstract class AbstractMavenConfigureProjectByChangingFileTest : AbstractConfigureProjectByChangingFileTest<KotlinMavenConfigurator>() {
|
abstract class AbstractMavenConfigureProjectByChangingFileTest : AbstractConfigureProjectByChangingFileTest<KotlinMavenConfigurator>() {
|
||||||
fun doTestWithMaven(path: String) {
|
fun doTestWithMaven(path: String) {
|
||||||
@@ -37,6 +35,8 @@ abstract class AbstractMavenConfigureProjectByChangingFileTest : AbstractConfigu
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun runConfigurator(module: Module, file: PsiFile, configurator: KotlinMavenConfigurator, version: String, collector: NotificationMessageCollector) {
|
override fun runConfigurator(module: Module, file: PsiFile, configurator: KotlinMavenConfigurator, version: String, collector: NotificationMessageCollector) {
|
||||||
configurator.changePomFile(module, file, version, collector)
|
WriteCommandAction.runWriteCommandAction(module.project) {
|
||||||
|
configurator.changePomFile(module, file, version, collector)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user