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
|
||||
|
||||
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.module.Module
|
||||
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.jps.model.java.JavaSourceRootType
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||
import org.jetbrains.kotlin.idea.util.projectStructure.findLibrary
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
|
||||
+35
-35
@@ -80,18 +80,20 @@ abstract class KotlinMavenConfigurator protected constructor(private val stdlibA
|
||||
dialog.show()
|
||||
if (!dialog.isOK) return
|
||||
|
||||
val collector = createConfigureKotlinNotificationCollector(project)
|
||||
for (module in excludeMavenChildrenModules(project, dialog.modulesToConfigure)) {
|
||||
val file = findModulePomFile(module)
|
||||
if (file != null && canConfigureFile(file)) {
|
||||
changePomFile(module, file, dialog.kotlinVersion, collector)
|
||||
OpenFileAction.openFile(file.virtualFile, project)
|
||||
}
|
||||
else {
|
||||
showErrorMessage(project, "Cannot find pom.xml for module " + module.name)
|
||||
WriteCommandAction.runWriteCommandAction(project) {
|
||||
val collector = createConfigureKotlinNotificationCollector(project)
|
||||
for (module in excludeMavenChildrenModules(project, dialog.modulesToConfigure)) {
|
||||
val file = findModulePomFile(module)
|
||||
if (file != null && canConfigureFile(file)) {
|
||||
changePomFile(module, file, dialog.kotlinVersion, collector)
|
||||
OpenFileAction.openFile(file.virtualFile, project)
|
||||
}
|
||||
else {
|
||||
showErrorMessage(project, "Cannot find pom.xml for module " + module.name)
|
||||
}
|
||||
}
|
||||
collector.showNotification()
|
||||
}
|
||||
collector.showNotification()
|
||||
}
|
||||
|
||||
protected abstract fun isKotlinModule(module: Module): Boolean
|
||||
@@ -112,33 +114,31 @@ abstract class KotlinMavenConfigurator protected constructor(private val stdlibA
|
||||
return
|
||||
}
|
||||
|
||||
WriteCommandAction.runWriteCommandAction(module.project) {
|
||||
val pom = PomFile(file as XmlFile)
|
||||
pom.addProperty(KOTLIN_VERSION_PROPERTY, version)
|
||||
val pom = PomFile(file as XmlFile)
|
||||
pom.addProperty(KOTLIN_VERSION_PROPERTY, version)
|
||||
|
||||
pom.addDependency(MavenId(GROUP_ID, stdlibArtifactId, "\${$KOTLIN_VERSION_PROPERTY}"), MavenArtifactScope.COMPILE, null, false, null)
|
||||
if (testArtifactId != 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)
|
||||
pom.addDependency(MavenId(GROUP_ID, stdlibArtifactId, "\${$KOTLIN_VERSION_PROPERTY}"), MavenArtifactScope.COMPILE, null, false, null)
|
||||
if (testArtifactId != 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)
|
||||
|
||||
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 List<MavenDomPluginExecution>.atPhase(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
|
||||
|
||||
import com.intellij.codeInsight.daemon.HighlightDisplayKey
|
||||
import com.intellij.codeInsight.daemon.QuickFixActionRegistrar
|
||||
import com.intellij.codeInsight.intention.IntentionAction
|
||||
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.project.Project
|
||||
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.PsiManager
|
||||
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.project.MavenProjectsManager
|
||||
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.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.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.psi.KtImportDirective
|
||||
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
|
||||
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
||||
import org.jetbrains.kotlin.psi.KtTypeReference
|
||||
import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
||||
import java.util.*
|
||||
|
||||
class KotlinMavenUnresolvedReferenceQuickFixProvider : UnresolvedReferenceQuickFixProvider<KtSimpleNameReference>() {
|
||||
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 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.Assert.*
|
||||
import java.io.File
|
||||
|
||||
class KotlinMavenArchetypesProviderTest {
|
||||
|
||||
+4
-4
@@ -16,14 +16,12 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.maven.configuration
|
||||
|
||||
import com.intellij.openapi.command.WriteCommandAction
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.psi.PsiFile
|
||||
import org.jetbrains.idea.maven.model.MavenConstants
|
||||
import org.jetbrains.kotlin.idea.configuration.AbstractConfigureProjectByChangingFileTest
|
||||
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>() {
|
||||
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) {
|
||||
configurator.changePomFile(module, file, version, collector)
|
||||
WriteCommandAction.runWriteCommandAction(module.project) {
|
||||
configurator.changePomFile(module, file, version, collector)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user