From 6bf0e4b1a9e2c99f9a3bbd7488ed0fcae1fc9da1 Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Thu, 19 Dec 2019 13:18:04 +0300 Subject: [PATCH] Simplify check for that gradle script configurations is up to date Get time stamp for script inputs before gradle import --- .../cache/ScriptConfigurationFileAttributeCache.kt | 2 +- .../gradle/GradleKotlinScriptConfigurationInputs.kt | 12 +++--------- .../scripting/gradle/GradleScriptInputsWatcher.kt | 4 +--- .../gradle/importing/KotlinDslScriptModel.kt | 3 +-- .../importing/KotlinDslScriptModelDataService.kt | 3 +-- .../importing/KotlinDslScriptModelResolverCommon.kt | 2 ++ .../jetbrains/kotlin/idea/scripting/gradle/utils.kt | 6 +++--- 7 files changed, 12 insertions(+), 20 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationFileAttributeCache.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationFileAttributeCache.kt index 9e49a6de4d3..b225ee5f34c 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationFileAttributeCache.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/configuration/cache/ScriptConfigurationFileAttributeCache.kt @@ -102,7 +102,7 @@ private class ScriptConfigurationSnapshotForFS( private var VirtualFile.scriptConfigurationSnapshot: ScriptConfigurationSnapshotForFS? by cachedFileAttribute( name = "kotlin-script-dependencies", - version = 4, + version = 5, read = { readObject() }, write = { writeObject(it) } ) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptConfigurationInputs.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptConfigurationInputs.kt index 391706ffa90..ee313aee3d7 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptConfigurationInputs.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptConfigurationInputs.kt @@ -18,23 +18,17 @@ import org.jetbrains.kotlin.psi.KtFile * 2. When some related file is changed (other gradle script, gradle.properties file) * @see GradleScriptInputsWatcher.areRelatedFilesUpToDate * - * [inputsTimeStamp] is needed to check if some related file was changed between updates - * [relatedFilesTimeStamp] is needed to check if we already loaded a configuration after the last related file change - * - * In case when [relatedFilesTimeStamp]s are equal there is no needs to check if related files were changed + * [inputsTS] is needed to check if some related file was changed since last update */ data class GradleKotlinScriptConfigurationInputs( val sections: String, - val inputsTimeStamp: Long, - val relatedFilesTimeStamp: Long + val inputsTS: Long ) : CachedConfigurationInputs { override fun isUpToDate(project: Project, file: VirtualFile, ktFile: KtFile?): Boolean { val actualStamp = getGradleScriptInputsStamp(project, file, ktFile) ?: return false if (actualStamp.sections != this.sections) return false - if (actualStamp.relatedFilesTimeStamp == this.relatedFilesTimeStamp) return true - - return project.service().areRelatedFilesUpToDate(file, inputsTimeStamp) + return project.service().areRelatedFilesUpToDate(file, inputsTS) } } \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptInputsWatcher.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptInputsWatcher.kt index fba7923c824..b724124dfef 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptInputsWatcher.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleScriptInputsWatcher.kt @@ -40,10 +40,8 @@ class GradleScriptInputsWatcher(val project: Project) : PersistentStateComponent } } - fun lastModifiedFileTimeStamp(file: VirtualFile): Long = storage.lastModifiedTimeStampExcept(file) - fun areRelatedFilesUpToDate(file: VirtualFile, timeStamp: Long): Boolean { - return lastModifiedFileTimeStamp(file) < timeStamp + return storage.lastModifiedTimeStampExcept(file) < timeStamp } class Storage( diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModel.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModel.kt index 4319bcc0038..11656eddc87 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModel.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModel.kt @@ -8,8 +8,6 @@ package org.jetbrains.kotlin.idea.scripting.gradle.importing import com.intellij.openapi.externalSystem.model.DataNode import com.intellij.openapi.externalSystem.model.project.ProjectData import com.intellij.openapi.util.Key -import org.gradle.tooling.model.kotlin.dsl.EditorReportSeverity -import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel import org.jetbrains.kotlin.idea.util.NotNullableCopyableDataNodeUserDataProperty var DataNode.KOTLIN_DSL_SCRIPT_MODELS: MutableList @@ -22,6 +20,7 @@ var DataNode.KOTLIN_DSL_SCRIPT_MODELS: MutableList, val sourcePath: List, val imports: List, diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelDataService.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelDataService.kt index fdcf7f4912c..17e095867a5 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelDataService.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelDataService.kt @@ -69,8 +69,7 @@ class KotlinDslScriptModelDataService : AbstractProjectDataService { fun getGradleScriptInputsStamp( project: Project, file: VirtualFile, - givenKtFile: KtFile? = null + givenKtFile: KtFile? = null, + givenTimeStamp: Long = System.currentTimeMillis() ): GradleKotlinScriptConfigurationInputs? { if (!isGradleKotlinScript(file)) return null @@ -87,8 +88,7 @@ fun getGradleScriptInputsStamp( } } - val relatedFilesTimeStamp = project.service().lastModifiedFileTimeStamp(file) - GradleKotlinScriptConfigurationInputs(result.toString(), file.timeStamp, relatedFilesTimeStamp) + GradleKotlinScriptConfigurationInputs(result.toString(), givenTimeStamp) } else null } }