minor: ScriptingSupport.Provider -> ScriptingSupport, KDoc

This commit is contained in:
Sergey Rostov
2020-05-07 21:19:09 +03:00
parent 541e6dc119
commit c76c983614
8 changed files with 34 additions and 49 deletions
@@ -46,7 +46,7 @@ class CompositeScriptConfigurationManager(val project: Project) : ScriptConfigur
val updater = ScriptClassRootsUpdater(project, this)
private val plugins = ScriptingSupport.Provider.EPN.getPoint(project).extensionList
private val plugins = ScriptingSupport.EPN.getPoint(project).extensionList
val default = DefaultScriptingSupport(this)
@@ -8,17 +8,35 @@ package org.jetbrains.kotlin.idea.core.script.configuration
import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.idea.core.script.configuration.utils.ScriptClassRootsCache
import org.jetbrains.kotlin.idea.core.script.configuration.listener.ScriptChangeListener
import org.jetbrains.kotlin.psi.KtFile
/**
* Extension point for overriding default Kotlin scripting support.
*
* Implementation should store script configuration internally (in memory and/or fs),
* and provide it inside [collectConfigurations] using the [ScriptClassRootsCache.LightScriptInfo].
* Custom data can be attached to [ScriptClassRootsCache.LightScriptInfo] and retrieved
* by calling [ScriptClassRootsCache.getLightScriptInfo].
*
* [ScriptChangeListener] can be used to listen script changes.
* [CompositeScriptConfigurationManager.updater] should be used to schedule configuration reloading.
*
* [isApplicable] should return true for files that is covered by that support.
*
* [isConfigurationLoadingInProgress] is used to pause analyzing.
*
* Long read: [idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/README.md].
*
* @sample GradleBuildRootsManager
*/
abstract class ScriptingSupport {
abstract class Provider {
abstract fun isApplicable(file: VirtualFile): Boolean
abstract fun isConfigurationLoadingInProgress(file: KtFile): Boolean
abstract fun collectConfigurations(builder: ScriptClassRootsCache.Builder)
abstract fun isApplicable(file: VirtualFile): Boolean
abstract fun isConfigurationLoadingInProgress(file: KtFile): Boolean
abstract fun collectConfigurations(builder: ScriptClassRootsCache.Builder)
companion object {
val EPN: ExtensionPointName<Provider> =
ExtensionPointName.create("org.jetbrains.kotlin.scripting.idea.scriptingSupportProvider")
}
companion object {
val EPN: ExtensionPointName<ScriptingSupport> =
ExtensionPointName.create("org.jetbrains.kotlin.scripting.idea.scriptingSupport")
}
}
@@ -1,31 +0,0 @@
/*
* 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.core.script.configuration.listener
import org.jetbrains.kotlin.idea.core.script.configuration.cache.ScriptConfigurationCacheScope
import org.jetbrains.kotlin.psi.KtFile
interface ScriptConfigurationUpdater {
/**
* Ensure that configuration for [file] is up-to-date,
* or new configuration loading is started
*/
fun ensureUpToDatedConfigurationSuggested(file: KtFile)
/**
* Check that configurations for given [files] is up-to-date or try synchronously update
* them. Synchronous update will be occurred only if auto apply is enabled and
* configuration for given file will not be loaded in background.
*
* @return true, if all files are already up-to-date or updated during this call
*/
fun ensureConfigurationUpToDate(files: List<KtFile>): Boolean
/**
* Suggest to update script configuration if configuration for [file] is out of date
*/
fun suggestToUpdateConfigurationIfOutOfDate(file: KtFile)
}
@@ -10,11 +10,9 @@ import com.intellij.openapi.project.Project
import com.intellij.util.xmlb.XmlSerializerUtil
/**
* Actually, this storage is required only for before Gradle 6.0.
* For projects starting from Gradle 6.0, [org.jetbrains.kotlin.idea.scripting.gradle.GradleScriptingSupportProvider]
* will also store all roots in FS, and will overwrite this one shrotly after start.
* This cache is used by [org.jetbrains.kotlin.idea.core.script.configuration.DefaultScriptingSupport] only.
* @see org.jetbrains.kotlin.idea.core.script.configuration.DefaultScriptingSupport.collectConfigurations
*
* Btw, this is still useful for projects without custom scripting support.
*/
@State(
name = "ScriptClassRootsStorage",
@@ -56,7 +56,7 @@ import java.util.concurrent.atomic.AtomicBoolean
* - [GradleBuildRoot.New] - not yet imported
* - [GradleBuildRoot.Imported] - imported
*/
class GradleBuildRootsManager(val project: Project) : ScriptingSupport.Provider() {
class GradleBuildRootsManager(val project: Project) : ScriptingSupport() {
private val manager: CompositeScriptConfigurationManager
get() = ScriptConfigurationManager.getInstance(project) as CompositeScriptConfigurationManager
+1 -1
View File
@@ -17,7 +17,7 @@
<loader order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptConfigurationLoader"/>
<scriptingSupportProvider implementation="org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager"/>
<scriptingSupport implementation="org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager"/>
</extensions>
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
+1 -1
View File
@@ -18,7 +18,7 @@
<loader order="first" implementation="org.jetbrains.kotlin.idea.scripting.gradle.legacy.GradleLegacyScriptConfigurationLoader"/>
<scriptingSupportProvider implementation="org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager"/>
<scriptingSupport implementation="org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager"/>
</extensions>
<extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
@@ -1,7 +1,7 @@
<idea-plugin>
<extensionPoints>
<extensionPoint qualifiedName="org.jetbrains.kotlin.scripting.idea.scriptingSupportProvider"
interface="org.jetbrains.kotlin.idea.core.script.configuration.ScriptingSupport$Provider"
<extensionPoint qualifiedName="org.jetbrains.kotlin.scripting.idea.scriptingSupport"
interface="org.jetbrains.kotlin.idea.core.script.configuration.ScriptingSupport"
area="IDEA_PROJECT"/>
</extensionPoints>