diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptDefinitionsProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptDefinitionsProvider.kt index 47ba9be4c50..f606109975d 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptDefinitionsProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptDefinitionsProvider.kt @@ -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 = 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( diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptDefinitionsUpdater.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptDefinitionsUpdater.kt new file mode 100644 index 00000000000..58622685dbd --- /dev/null +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptDefinitionsUpdater.kt @@ -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( + project + ) + gradleDefinitionsContributor?.reloadIfNecessary() + } + } +} + +internal class GradleSyncState { + var isSyncInProgress: Boolean = false +} \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslSyncListener.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslSyncListener.kt index 66e3fc3f47b..f6e78171caf 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslSyncListener.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslSyncListener.kt @@ -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(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 -} diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslSyncListener.kt.191 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslSyncListener.kt.191 deleted file mode 100644 index e9e22a6817e..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslSyncListener.kt.191 +++ /dev/null @@ -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(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 -} diff --git a/idea/resources/META-INF/gradle-java.xml b/idea/resources/META-INF/gradle-java.xml index fca081cbffe..7060ef8a9ad 100644 --- a/idea/resources/META-INF/gradle-java.xml +++ b/idea/resources/META-INF/gradle-java.xml @@ -29,8 +29,13 @@ + diff --git a/idea/resources/META-INF/gradle-java.xml.191 b/idea/resources/META-INF/gradle-java.xml.191 index a2168c345fb..970cd8d16c7 100644 --- a/idea/resources/META-INF/gradle-java.xml.191 +++ b/idea/resources/META-INF/gradle-java.xml.191 @@ -24,7 +24,8 @@ diff --git a/idea/resources/META-INF/gradle-java.xml.201 b/idea/resources/META-INF/gradle-java.xml.201 index 99de71d92cb..8d26365a679 100644 --- a/idea/resources/META-INF/gradle-java.xml.201 +++ b/idea/resources/META-INF/gradle-java.xml.201 @@ -25,8 +25,13 @@ +