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.ScriptDefinitionsManager
|
||||
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.ScriptDefinition
|
||||
import org.jetbrains.kotlin.scripting.definitions.getEnvironment
|
||||
@@ -140,7 +139,6 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD
|
||||
): List<ScriptDefinition> = try {
|
||||
doLoadGradleTemplates(templateClass, dependencySelector, additionalResolverClasspath)
|
||||
} catch (t: Throwable) {
|
||||
scriptingDebugLog { "error loading gradle script templates ${t.message}" }
|
||||
// TODO: review exception handling
|
||||
failedToLoad.set(true)
|
||||
if (t is IllegalStateException) {
|
||||
@@ -211,8 +209,6 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD
|
||||
dependencySelector.matches(it.name)
|
||||
}.takeIf { it.isNotEmpty() }?.asList() ?: error(KotlinIdeaGradleBundle.message("error.text.missing.jars.in.gradle.directory"))
|
||||
|
||||
scriptingDebugLog { "loading gradle script templates from $templateClasspath" }
|
||||
|
||||
return loadDefinitionsFromTemplates(
|
||||
listOf(templateClass),
|
||||
templateClasspath,
|
||||
@@ -280,7 +276,7 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD
|
||||
|
||||
private class ErrorScriptDependenciesResolver(private val message: String? = null) : DependenciesResolver {
|
||||
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")
|
||||
} else {
|
||||
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.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 (id.type != ExternalSystemTaskType.RESOLVE_PROJECT) return
|
||||
if (id.projectSystemId != GRADLE_SYSTEM_ID) return
|
||||
|
||||
if (workingDir == null) return
|
||||
|
||||
gradleState.isSyncInProgress = true
|
||||
|
||||
val project = id.findProject() ?: return
|
||||
|
||||
project.kotlinGradleDslSync[id] = KotlinDslGradleBuildSync(workingDir, id)
|
||||
}
|
||||
|
||||
override fun onEnd(id: ExternalSystemTaskId) {
|
||||
if (!isGradleProjectImport(id)) return
|
||||
|
||||
gradleState.isSyncInProgress = false
|
||||
if (id.type != ExternalSystemTaskType.RESOLVE_PROJECT) return
|
||||
if (id.projectSystemId != GRADLE_SYSTEM_ID) return
|
||||
|
||||
val project = id.findProject() ?: return
|
||||
val sync = project.kotlinGradleDslSync.remove(id) ?: return
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
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()
|
||||
saveScriptModels(project, sync)
|
||||
}
|
||||
}
|
||||
|
||||
// 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.KotlinJavaMPPSourceSetDataService"/>
|
||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibraryDataService"/>
|
||||
<externalSystemTaskNotificationListener
|
||||
id="GradleScriptDefinitionsUpdater"
|
||||
implementation="org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptDefinitionsUpdater"
|
||||
/>
|
||||
<externalSystemTaskNotificationListener
|
||||
implementation="org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslSyncListener"
|
||||
order="after GradleScriptDefinitionsUpdater"
|
||||
/>
|
||||
<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.configuration.klib.KotlinNativeLibraryDataService"/>
|
||||
<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"/>
|
||||
|
||||
|
||||
@@ -25,8 +25,13 @@
|
||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.KotlinTargetDataService"/>
|
||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.KotlinJavaMPPSourceSetDataService"/>
|
||||
<externalProjectDataService implementation="org.jetbrains.kotlin.idea.configuration.klib.KotlinNativeLibraryDataService"/>
|
||||
<externalSystemTaskNotificationListener
|
||||
id="GradleScriptDefinitionsUpdater"
|
||||
implementation="org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptDefinitionsUpdater"
|
||||
/>
|
||||
<externalSystemTaskNotificationListener
|
||||
implementation="org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslSyncListener"
|
||||
order="after GradleScriptDefinitionsUpdater"
|
||||
/>
|
||||
<editorNotificationProvider implementation="org.jetbrains.kotlin.idea.scripting.gradle.MissingGradleScriptConfigurationNotificationProvider"/>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user