Revert "Fix order of ExternalSystemListeners"
This reverts commit 879fe9b4
This commit is contained in:
+1
-5
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle
|
|||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionSourceAsContributor
|
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionSourceAsContributor
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
||||||
import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates
|
import org.jetbrains.kotlin.idea.core.script.loadDefinitionsFromTemplates
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslSyncListener
|
|
||||||
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPIBase
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinitionAdapterFromNewAPIBase
|
||||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||||
import org.jetbrains.kotlin.scripting.definitions.getEnvironment
|
import org.jetbrains.kotlin.scripting.definitions.getEnvironment
|
||||||
@@ -140,7 +139,6 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD
|
|||||||
): List<ScriptDefinition> = try {
|
): List<ScriptDefinition> = try {
|
||||||
doLoadGradleTemplates(templateClass, dependencySelector, additionalResolverClasspath)
|
doLoadGradleTemplates(templateClass, dependencySelector, additionalResolverClasspath)
|
||||||
} catch (t: Throwable) {
|
} catch (t: Throwable) {
|
||||||
scriptingDebugLog { "error loading gradle script templates ${t.message}" }
|
|
||||||
// TODO: review exception handling
|
// TODO: review exception handling
|
||||||
failedToLoad.set(true)
|
failedToLoad.set(true)
|
||||||
if (t is IllegalStateException) {
|
if (t is IllegalStateException) {
|
||||||
@@ -211,8 +209,6 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD
|
|||||||
dependencySelector.matches(it.name)
|
dependencySelector.matches(it.name)
|
||||||
}.takeIf { it.isNotEmpty() }?.asList() ?: error(KotlinIdeaGradleBundle.message("error.text.missing.jars.in.gradle.directory"))
|
}.takeIf { it.isNotEmpty() }?.asList() ?: error(KotlinIdeaGradleBundle.message("error.text.missing.jars.in.gradle.directory"))
|
||||||
|
|
||||||
scriptingDebugLog { "loading gradle script templates from $templateClasspath" }
|
|
||||||
|
|
||||||
return loadDefinitionsFromTemplates(
|
return loadDefinitionsFromTemplates(
|
||||||
listOf(templateClass),
|
listOf(templateClass),
|
||||||
templateClasspath,
|
templateClasspath,
|
||||||
@@ -280,7 +276,7 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD
|
|||||||
|
|
||||||
private class ErrorScriptDependenciesResolver(private val message: String? = null) : DependenciesResolver {
|
private class ErrorScriptDependenciesResolver(private val message: String? = null) : DependenciesResolver {
|
||||||
override fun resolve(scriptContents: ScriptContents, environment: Environment): ResolveResult {
|
override fun resolve(scriptContents: ScriptContents, environment: Environment): ResolveResult {
|
||||||
val failureMessage = if (KotlinDslSyncListener.gradleState.isSyncInProgress) {
|
val failureMessage = if (GradleScriptDefinitionsUpdater.gradleState.isSyncInProgress) {
|
||||||
KotlinIdeaGradleBundle.message("error.text.highlighting.is.impossible.during.gradle.import")
|
KotlinIdeaGradleBundle.message("error.text.highlighting.is.impossible.during.gradle.import")
|
||||||
} else {
|
} else {
|
||||||
message ?: KotlinIdeaGradleBundle.message(
|
message ?: KotlinIdeaGradleBundle.message(
|
||||||
|
|||||||
+41
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.idea.scripting.gradle
|
||||||
|
|
||||||
|
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId
|
||||||
|
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListenerAdapter
|
||||||
|
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskType
|
||||||
|
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor
|
||||||
|
import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID
|
||||||
|
|
||||||
|
class GradleScriptDefinitionsUpdater : ExternalSystemTaskNotificationListenerAdapter() {
|
||||||
|
companion object {
|
||||||
|
internal val gradleState = GradleSyncState()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStart(id: ExternalSystemTaskId, workingDir: String?) {
|
||||||
|
if (id.type == ExternalSystemTaskType.RESOLVE_PROJECT && id.projectSystemId == GRADLE_SYSTEM_ID) {
|
||||||
|
gradleState.isSyncInProgress = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onEnd(id: ExternalSystemTaskId) {
|
||||||
|
if (id.type == ExternalSystemTaskType.RESOLVE_PROJECT && id.projectSystemId == GRADLE_SYSTEM_ID) {
|
||||||
|
gradleState.isSyncInProgress = false
|
||||||
|
|
||||||
|
val project = id.findProject() ?: return
|
||||||
|
val gradleDefinitionsContributor =
|
||||||
|
ScriptDefinitionContributor.find<GradleScriptDefinitionsContributor>(
|
||||||
|
project
|
||||||
|
)
|
||||||
|
gradleDefinitionsContributor?.reloadIfNecessary()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class GradleSyncState {
|
||||||
|
var isSyncInProgress: Boolean = false
|
||||||
|
}
|
||||||
+7
-41
@@ -8,60 +8,26 @@ package org.jetbrains.kotlin.idea.scripting.gradle.importing
|
|||||||
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId
|
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId
|
||||||
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListenerAdapter
|
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListenerAdapter
|
||||||
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskType
|
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskType
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor
|
|
||||||
import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID
|
import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptDefinitionsContributor
|
|
||||||
|
|
||||||
class KotlinDslSyncListener : ExternalSystemTaskNotificationListenerAdapter() {
|
class KotlinDslSyncListener : ExternalSystemTaskNotificationListenerAdapter() {
|
||||||
override fun onStart(id: ExternalSystemTaskId, workingDir: String?) {
|
override fun onStart(id: ExternalSystemTaskId, workingDir: String?) {
|
||||||
if (!isGradleProjectImport(id)) return
|
if (id.type != ExternalSystemTaskType.RESOLVE_PROJECT) return
|
||||||
|
if (id.projectSystemId != GRADLE_SYSTEM_ID) return
|
||||||
|
|
||||||
if (workingDir == null) return
|
if (workingDir == null) return
|
||||||
|
|
||||||
gradleState.isSyncInProgress = true
|
|
||||||
|
|
||||||
val project = id.findProject() ?: return
|
val project = id.findProject() ?: return
|
||||||
|
|
||||||
project.kotlinGradleDslSync[id] = KotlinDslGradleBuildSync(workingDir, id)
|
project.kotlinGradleDslSync[id] = KotlinDslGradleBuildSync(workingDir, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onEnd(id: ExternalSystemTaskId) {
|
override fun onEnd(id: ExternalSystemTaskId) {
|
||||||
if (!isGradleProjectImport(id)) return
|
if (id.type != ExternalSystemTaskType.RESOLVE_PROJECT) return
|
||||||
|
if (id.projectSystemId != GRADLE_SYSTEM_ID) return
|
||||||
gradleState.isSyncInProgress = false
|
|
||||||
|
|
||||||
val project = id.findProject() ?: return
|
val project = id.findProject() ?: return
|
||||||
|
val sync = project.kotlinGradleDslSync.remove(id) ?: return
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
saveScriptModels(project, sync)
|
||||||
ScriptDefinitionContributor.find<GradleScriptDefinitionsContributor>(project)?.reloadIfNecessary()
|
|
||||||
|
|
||||||
val sync = project.kotlinGradleDslSync.remove(id)
|
|
||||||
if (sync != null) {
|
|
||||||
// For Gradle 6.0 or higher
|
|
||||||
saveScriptModels(project, sync)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCancel(id: ExternalSystemTaskId) {
|
|
||||||
if (!isGradleProjectImport(id)) return
|
|
||||||
|
|
||||||
gradleState.isSyncInProgress = false
|
|
||||||
|
|
||||||
val project = id.findProject() ?: return
|
|
||||||
|
|
||||||
project.kotlinGradleDslSync.remove(id)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun isGradleProjectImport(id: ExternalSystemTaskId): Boolean {
|
|
||||||
return id.type == ExternalSystemTaskType.RESOLVE_PROJECT || id.projectSystemId == GRADLE_SYSTEM_ID
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
internal val gradleState = GradleSyncState()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: state should be stored by gradle build,
|
|
||||||
// now it is marked as complete after first gradle project was imported
|
|
||||||
internal class GradleSyncState {
|
|
||||||
var isSyncInProgress: Boolean = false
|
|
||||||
}
|
|
||||||
|
|||||||
-53
@@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.idea.scripting.gradle.importing
|
|
||||||
|
|
||||||
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId
|
|
||||||
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListenerAdapter
|
|
||||||
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskType
|
|
||||||
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionContributor
|
|
||||||
import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID
|
|
||||||
import org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptDefinitionsContributor
|
|
||||||
|
|
||||||
class KotlinDslSyncListener : ExternalSystemTaskNotificationListenerAdapter() {
|
|
||||||
override fun onStart(id: ExternalSystemTaskId, workingDir: String?) {
|
|
||||||
if (!isGradleProjectImport(id)) return
|
|
||||||
if (workingDir == null) return
|
|
||||||
|
|
||||||
gradleState.isSyncInProgress = true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onEnd(id: ExternalSystemTaskId) {
|
|
||||||
if (!isGradleProjectImport(id)) return
|
|
||||||
|
|
||||||
gradleState.isSyncInProgress = false
|
|
||||||
|
|
||||||
val project = id.findProject() ?: return
|
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
ScriptDefinitionContributor.find<GradleScriptDefinitionsContributor>(project)?.reloadIfNecessary()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCancel(id: ExternalSystemTaskId) {
|
|
||||||
if (!isGradleProjectImport(id)) return
|
|
||||||
|
|
||||||
gradleState.isSyncInProgress = false
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun isGradleProjectImport(id: ExternalSystemTaskId): Boolean {
|
|
||||||
return id.type == ExternalSystemTaskType.RESOLVE_PROJECT || id.projectSystemId == GRADLE_SYSTEM_ID
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
internal val gradleState = GradleSyncState()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: state should be stored by gradle build,
|
|
||||||
// now it is marked as complete after first gradle project was imported
|
|
||||||
internal class GradleSyncState {
|
|
||||||
var isSyncInProgress: Boolean = false
|
|
||||||
}
|
|
||||||
@@ -29,8 +29,13 @@
|
|||||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.KotlinTargetDataService"/>
|
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.KotlinTargetDataService"/>
|
||||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.KotlinJavaMPPSourceSetDataService"/>
|
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.KotlinJavaMPPSourceSetDataService"/>
|
||||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibraryDataService"/>
|
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibraryDataService"/>
|
||||||
|
<externalSystemTaskNotificationListener
|
||||||
|
id="GradleScriptDefinitionsUpdater"
|
||||||
|
implementation="org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptDefinitionsUpdater"
|
||||||
|
/>
|
||||||
<externalSystemTaskNotificationListener
|
<externalSystemTaskNotificationListener
|
||||||
implementation="org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslSyncListener"
|
implementation="org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslSyncListener"
|
||||||
|
order="after GradleScriptDefinitionsUpdater"
|
||||||
/>
|
/>
|
||||||
<editorNotificationProvider implementation="org.jetbrains.kotlin.idea.scripting.gradle.MissingGradleScriptConfigurationNotificationProvider"/>
|
<editorNotificationProvider implementation="org.jetbrains.kotlin.idea.scripting.gradle.MissingGradleScriptConfigurationNotificationProvider"/>
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,8 @@
|
|||||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.KotlinJavaMPPSourceSetDataService"/>
|
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.KotlinJavaMPPSourceSetDataService"/>
|
||||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibraryDataService"/>
|
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibraryDataService"/>
|
||||||
<externalSystemTaskNotificationListener
|
<externalSystemTaskNotificationListener
|
||||||
implementation="org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslSyncListener"
|
id="GradleScriptDefinitionsUpdater"
|
||||||
|
implementation="org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptDefinitionsUpdater"
|
||||||
/>
|
/>
|
||||||
<editorNotificationProvider implementation="org.jetbrains.kotlin.idea.scripting.gradle.MissingGradleScriptConfigurationNotificationProvider"/>
|
<editorNotificationProvider implementation="org.jetbrains.kotlin.idea.scripting.gradle.MissingGradleScriptConfigurationNotificationProvider"/>
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,13 @@
|
|||||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.KotlinTargetDataService"/>
|
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.KotlinTargetDataService"/>
|
||||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.KotlinJavaMPPSourceSetDataService"/>
|
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.KotlinJavaMPPSourceSetDataService"/>
|
||||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibraryDataService"/>
|
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibraryDataService"/>
|
||||||
|
<externalSystemTaskNotificationListener
|
||||||
|
id="GradleScriptDefinitionsUpdater"
|
||||||
|
implementation="org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptDefinitionsUpdater"
|
||||||
|
/>
|
||||||
<externalSystemTaskNotificationListener
|
<externalSystemTaskNotificationListener
|
||||||
implementation="org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslSyncListener"
|
implementation="org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslSyncListener"
|
||||||
|
order="after GradleScriptDefinitionsUpdater"
|
||||||
/>
|
/>
|
||||||
<editorNotificationProvider implementation="org.jetbrains.kotlin.idea.scripting.gradle.MissingGradleScriptConfigurationNotificationProvider"/>
|
<editorNotificationProvider implementation="org.jetbrains.kotlin.idea.scripting.gradle.MissingGradleScriptConfigurationNotificationProvider"/>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user