From 9f09e50a2834e333a5cd3f71e22d83a3ec4acb81 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Mon, 30 Mar 2020 23:08:58 +0200 Subject: [PATCH] ApplicationUtils syntax improvements --- .../idea/caches/project/LibraryModificationTracker.kt | 2 +- .../KotlinCodeBlockModificationListener.kt.201 | 3 +-- .../org/jetbrains/kotlin/idea/util/ApplicationUtils.kt | 10 ++++++---- .../jetbrains/kotlin/idea/util/ApplicationUtils.kt.192 | 10 ++++++---- .../jetbrains/kotlin/idea/util/ApplicationUtils.kt.201 | 10 ++++++---- .../kotlin/idea/util/ApplicationUtils.kt.as40 | 10 ++++++---- .../completion/CompletionBindingContextProvider.kt | 3 +-- .../kotlin/idea/completion/LookupCancelService.kt | 2 +- .../idea/core/script/ScriptDefinitionsManager.kt | 5 ++--- .../core/script/settings/KotlinScriptingSettings.kt | 5 ++--- .../configuration/KotlinMigrationProjectService.kt | 6 +----- .../idea/parameterInfo/custom/KotlinCodeHintsModel.kt | 2 +- .../idea/script/AsyncScriptDefinitionsContributor.kt | 4 ++-- 13 files changed, 36 insertions(+), 36 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/LibraryModificationTracker.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/LibraryModificationTracker.kt index c77c40caace..e97b4455592 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/LibraryModificationTracker.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/LibraryModificationTracker.kt @@ -27,7 +27,7 @@ import org.jetbrains.kotlin.idea.util.application.getServiceSafe class LibraryModificationTracker(project: Project) : SimpleModificationTracker() { companion object { @JvmStatic - fun getInstance(project: Project) = project.getServiceSafe(LibraryModificationTracker::class.java) + fun getInstance(project: Project): LibraryModificationTracker = project.getServiceSafe() } init { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt.201 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt.201 index f3e508858a0..c0567b3377a 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt.201 +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt.201 @@ -308,8 +308,7 @@ class KotlinCodeBlockModificationListener(project: Project) : PsiTreeChangePrepr KtScriptInitializer::class.java ) - fun getInstance(project: Project): KotlinCodeBlockModificationListener = - project.getServiceSafe(KotlinCodeBlockModificationListener::class.java) + fun getInstance(project: Project): KotlinCodeBlockModificationListener = project.getServiceSafe() } } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt index 523385bf7c0..011481118ef 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt @@ -46,11 +46,13 @@ fun Project.executeCommand(@Nls name: String, groupId: Any? = null, command: fun runWithCancellationCheck(block: () -> T): T = block() -inline fun invokeLater(crossinline action: () -> Unit) { +inline fun executeOnPooledThread(crossinline action: () -> Unit) = + ApplicationManager.getApplication().executeOnPooledThread { action() } + +inline fun invokeLater(crossinline action: () -> Unit) = ApplicationManager.getApplication().invokeLater { action() } -} inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode -fun Project.getServiceSafe(serviceClass: Class): T = - this.getService(serviceClass) ?: error("Unable to locate service ${serviceClass.name}") \ No newline at end of file +inline fun Project.getServiceSafe(): T = + this.getService(T::class.java) ?: error("Unable to locate service ${T::class.java.name}") diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.192 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.192 index d9edf84986d..e3d3da0c65e 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.192 +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.192 @@ -49,11 +49,13 @@ fun Project.executeCommand(name: String, groupId: Any? = null, command: () - fun runWithCancellationCheck(block: () -> T): T = block() -inline fun invokeLater(crossinline action: () -> Unit) { +inline fun executeOnPooledThread(crossinline action: () -> Unit) = + ApplicationManager.getApplication().executeOnPooledThread { action() } + +inline fun invokeLater(crossinline action: () -> Unit) = ApplicationManager.getApplication().invokeLater { action() } -} inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode -fun Project.getServiceSafe(serviceClass: Class): T = - ServiceManager.getService(this, serviceClass) ?: error("Unable to locate service ${serviceClass.name}") +inline fun Project.getServiceSafe(): T = + ServiceManager.getService(this, T::class.java) ?: error("Unable to locate service ${T::class.java.name}") diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.201 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.201 index 1d7863b65ae..190789bbff7 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.201 +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.201 @@ -46,11 +46,13 @@ fun Project.executeCommand(name: String, groupId: Any? = null, command: () - fun runWithCancellationCheck(block: () -> T): T = CancellationCheck.runWithCancellationCheck(block) -inline fun invokeLater(crossinline action: () -> Unit) { +inline fun executeOnPooledThread(crossinline action: () -> Unit) = + ApplicationManager.getApplication().executeOnPooledThread { action() } + +inline fun invokeLater(crossinline action: () -> Unit) = ApplicationManager.getApplication().invokeLater { action() } -} inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode -fun Project.getServiceSafe(serviceClass: Class) = - this.getService(serviceClass) ?: error("Unable to locate service ${serviceClass.name}") \ No newline at end of file +inline fun Project.getServiceSafe(): T = + this.getService(T::class.java) ?: error("Unable to locate service ${T::class.java.name}") diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.as40 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.as40 index 071b7ccf54a..33b1699b214 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.as40 +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.as40 @@ -49,14 +49,16 @@ fun Project.executeCommand(name: String, groupId: Any? = null, command: () - fun runWithCancellationCheck(block: () -> T): T = block() -inline fun invokeLater(crossinline action: () -> Unit) { +inline fun executeOnPooledThread(crossinline action: () -> Unit) = + ApplicationManager.getApplication().executeOnPooledThread { action() } + +inline fun invokeLater(crossinline action: () -> Unit) = ApplicationManager.getApplication().invokeLater { action() } -} inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode -fun Project.getServiceSafe(serviceClass: Class): T = - ServiceManager.getService(this, serviceClass) ?: error("Unable to locate service ${serviceClass.name}") +inline fun Project.getServiceSafe(): T = + this.getService(T::class.java) ?: error("Unable to locate service ${T::class.java.name}") fun Project.getServiceIfCreated(serviceClass: Class): T? = ServiceManager.getServiceIfCreated(this, serviceClass) \ No newline at end of file diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionBindingContextProvider.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionBindingContextProvider.kt index 0c4d7167356..c4d4fa2a91c 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionBindingContextProvider.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionBindingContextProvider.kt @@ -46,8 +46,7 @@ class CompletionBindingContextProvider(project: Project) { internal var TEST_LOG: StringBuilder? = null companion object { - fun getInstance(project: Project): CompletionBindingContextProvider = - project.getServiceSafe(CompletionBindingContextProvider::class.java) + fun getInstance(project: Project): CompletionBindingContextProvider = project.getServiceSafe() var ENABLED = true } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupCancelService.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupCancelService.kt index 60a4f4d2fdf..148bcb300e9 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupCancelService.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/LookupCancelService.kt @@ -86,7 +86,7 @@ class LookupCancelService { private var lastReminiscence: Reminiscence? = null companion object { - fun getInstance(project: Project): LookupCancelService = project.getServiceSafe(LookupCancelService::class.java) + fun getInstance(project: Project): LookupCancelService = project.getServiceSafe() fun getServiceIfCreated(project: Project): LookupCancelService? = project.getServiceIfCreated(LookupCancelService::class.java) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt index 823db817b8e..4bc1937f85a 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt @@ -12,7 +12,6 @@ import com.intellij.ide.scratch.ScratchFileService import com.intellij.ide.scratch.ScratchRootType import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.runWriteAction -import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.diagnostic.ControlFlowException import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.extensions.Extensions @@ -29,6 +28,7 @@ import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.caches.project.SdkInfo import org.jetbrains.kotlin.idea.caches.project.getScriptRelatedModuleInfo import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings +import org.jetbrains.kotlin.idea.util.application.getServiceSafe import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.script.ScriptTemplatesProvider import org.jetbrains.kotlin.scripting.definitions.* @@ -206,8 +206,7 @@ class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinit } companion object { - fun getInstance(project: Project): ScriptDefinitionsManager = - ServiceManager.getService(project, ScriptDefinitionProvider::class.java) as ScriptDefinitionsManager + fun getInstance(project: Project): ScriptDefinitionsManager = project.getServiceSafe() as ScriptDefinitionsManager } } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/settings/KotlinScriptingSettings.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/settings/KotlinScriptingSettings.kt index c626bad157a..2b45a290c21 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/settings/KotlinScriptingSettings.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/settings/KotlinScriptingSettings.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.idea.core.script.settings import com.intellij.openapi.components.PersistentStateComponent -import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.components.State import com.intellij.openapi.components.Storage import com.intellij.openapi.project.Project @@ -14,6 +13,7 @@ import com.intellij.util.addOptionTag import com.intellij.util.attribute import com.intellij.util.getAttributeBooleanValue import org.jdom.Element +import org.jetbrains.kotlin.idea.util.application.getServiceSafe import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition @State( @@ -136,8 +136,7 @@ class KotlinScriptingSettings : PersistentStateComponent { getChildren("option").firstOrNull { it.getAttribute("name").value == name }?.getAttributeBooleanValue("value") companion object { - fun getInstance(project: Project): KotlinScriptingSettings = - ServiceManager.getService(project, KotlinScriptingSettings::class.java) + fun getInstance(project: Project): KotlinScriptingSettings = project.getServiceSafe() private const val SCRIPT_DEFINITION_TAG = "scriptDefinition" diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectService.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectService.kt index 3caf9147626..6f7947146be 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectService.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectService.kt @@ -113,11 +113,7 @@ class KotlinMigrationProjectService(val project: Project) { companion object { fun getInstanceIfNotDisposed(project: Project): KotlinMigrationProjectService? { return runReadAction { - if (!project.isDisposed) { - project.getServiceSafe(KotlinMigrationProjectService::class.java) - } else { - null - } + if (!project.isDisposed) project.getServiceSafe() else null } } diff --git a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/custom/KotlinCodeHintsModel.kt b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/custom/KotlinCodeHintsModel.kt index 0ca09cba6c2..72a3a1ee61a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/custom/KotlinCodeHintsModel.kt +++ b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/custom/KotlinCodeHintsModel.kt @@ -24,7 +24,7 @@ import java.util.concurrent.ConcurrentHashMap class KotlinCodeHintsModel(val project: Project) : EditorFactoryListener { companion object { - fun getInstance(project: Project): KotlinCodeHintsModel = project.getServiceSafe(KotlinCodeHintsModel::class.java) + fun getInstance(project: Project): KotlinCodeHintsModel = project.getServiceSafe() } private class DocumentExtensionInfoModel(val document: Document) { diff --git a/idea/src/org/jetbrains/kotlin/idea/script/AsyncScriptDefinitionsContributor.kt b/idea/src/org/jetbrains/kotlin/idea/script/AsyncScriptDefinitionsContributor.kt index 9a74004d2b0..5629e31c502 100644 --- a/idea/src/org/jetbrains/kotlin/idea/script/AsyncScriptDefinitionsContributor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/script/AsyncScriptDefinitionsContributor.kt @@ -5,12 +5,12 @@ package org.jetbrains.kotlin.idea.script -import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.progress.ProgressIndicator import com.intellij.openapi.progress.Task import com.intellij.openapi.project.Project import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionSourceAsContributor import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager +import org.jetbrains.kotlin.idea.util.application.executeOnPooledThread import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import java.util.concurrent.locks.ReentrantReadWriteLock import kotlin.concurrent.read @@ -100,7 +100,7 @@ abstract class AsyncScriptDefinitionsContributor(protected val project: Project) if (isHeadless) { // If new script definitions found, then ScriptDefinitionsManager.reloadDefinitionsBy should be called // This may cause deadlock because Task.Backgroundable.queue executes task synchronously in headless mode - ApplicationManager.getApplication().executeOnPooledThread { + executeOnPooledThread { ScriptDefinitionsManager.getInstance(project).reloadDefinitionsBy(this@AsyncScriptDefinitionsContributor) } } else {