ApplicationUtils syntax improvements

This commit is contained in:
Vladimir Dolzhenko
2020-03-30 23:08:58 +02:00
parent 23ea2446e0
commit 9f09e50a28
13 changed files with 36 additions and 36 deletions
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.idea.util.application.getServiceSafe
class LibraryModificationTracker(project: Project) : SimpleModificationTracker() { class LibraryModificationTracker(project: Project) : SimpleModificationTracker() {
companion object { companion object {
@JvmStatic @JvmStatic
fun getInstance(project: Project) = project.getServiceSafe(LibraryModificationTracker::class.java) fun getInstance(project: Project): LibraryModificationTracker = project.getServiceSafe()
} }
init { init {
@@ -308,8 +308,7 @@ class KotlinCodeBlockModificationListener(project: Project) : PsiTreeChangePrepr
KtScriptInitializer::class.java KtScriptInitializer::class.java
) )
fun getInstance(project: Project): KotlinCodeBlockModificationListener = fun getInstance(project: Project): KotlinCodeBlockModificationListener = project.getServiceSafe()
project.getServiceSafe(KotlinCodeBlockModificationListener::class.java)
} }
} }
@@ -46,11 +46,13 @@ fun <T> Project.executeCommand(@Nls name: String, groupId: Any? = null, command:
fun <T> runWithCancellationCheck(block: () -> T): T = block() fun <T> 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() } ApplicationManager.getApplication().invokeLater { action() }
}
inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode
fun <T> Project.getServiceSafe(serviceClass: Class<T>): T = inline fun <reified T : Any> Project.getServiceSafe(): T =
this.getService(serviceClass) ?: error("Unable to locate service ${serviceClass.name}") this.getService(T::class.java) ?: error("Unable to locate service ${T::class.java.name}")
@@ -49,11 +49,13 @@ fun <T> Project.executeCommand(name: String, groupId: Any? = null, command: () -
fun <T> runWithCancellationCheck(block: () -> T): T = block() fun <T> 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() } ApplicationManager.getApplication().invokeLater { action() }
}
inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode
fun <T> Project.getServiceSafe(serviceClass: Class<T>): T = inline fun <reified T : Any> Project.getServiceSafe(): T =
ServiceManager.getService(this, serviceClass) ?: error("Unable to locate service ${serviceClass.name}") ServiceManager.getService(this, T::class.java) ?: error("Unable to locate service ${T::class.java.name}")
@@ -46,11 +46,13 @@ fun <T> Project.executeCommand(name: String, groupId: Any? = null, command: () -
fun <T> runWithCancellationCheck(block: () -> T): T = CancellationCheck.runWithCancellationCheck(block) fun <T> 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() } ApplicationManager.getApplication().invokeLater { action() }
}
inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode
fun <T> Project.getServiceSafe(serviceClass: Class<T>) = inline fun <reified T : Any> Project.getServiceSafe(): T =
this.getService(serviceClass) ?: error("Unable to locate service ${serviceClass.name}") this.getService(T::class.java) ?: error("Unable to locate service ${T::class.java.name}")
@@ -49,14 +49,16 @@ fun <T> Project.executeCommand(name: String, groupId: Any? = null, command: () -
fun <T> runWithCancellationCheck(block: () -> T): T = block() fun <T> 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() } ApplicationManager.getApplication().invokeLater { action() }
}
inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode inline fun isUnitTestMode(): Boolean = ApplicationManager.getApplication().isUnitTestMode
fun <T> Project.getServiceSafe(serviceClass: Class<T>): T = inline fun <reified T : Any> Project.getServiceSafe(): T =
ServiceManager.getService(this, serviceClass) ?: error("Unable to locate service ${serviceClass.name}") this.getService(T::class.java) ?: error("Unable to locate service ${T::class.java.name}")
fun <T> Project.getServiceIfCreated(serviceClass: Class<T>): T? = fun <T> Project.getServiceIfCreated(serviceClass: Class<T>): T? =
ServiceManager.getServiceIfCreated(this, serviceClass) ServiceManager.getServiceIfCreated(this, serviceClass)
@@ -46,8 +46,7 @@ class CompletionBindingContextProvider(project: Project) {
internal var TEST_LOG: StringBuilder? = null internal var TEST_LOG: StringBuilder? = null
companion object { companion object {
fun getInstance(project: Project): CompletionBindingContextProvider = fun getInstance(project: Project): CompletionBindingContextProvider = project.getServiceSafe()
project.getServiceSafe(CompletionBindingContextProvider::class.java)
var ENABLED = true var ENABLED = true
} }
@@ -86,7 +86,7 @@ class LookupCancelService {
private var lastReminiscence: Reminiscence? = null private var lastReminiscence: Reminiscence? = null
companion object { 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) fun getServiceIfCreated(project: Project): LookupCancelService? = project.getServiceIfCreated(LookupCancelService::class.java)
@@ -12,7 +12,6 @@ import com.intellij.ide.scratch.ScratchFileService
import com.intellij.ide.scratch.ScratchRootType import com.intellij.ide.scratch.ScratchRootType
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.runWriteAction import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.diagnostic.ControlFlowException import com.intellij.openapi.diagnostic.ControlFlowException
import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.openapi.extensions.Extensions 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.SdkInfo
import org.jetbrains.kotlin.idea.caches.project.getScriptRelatedModuleInfo import org.jetbrains.kotlin.idea.caches.project.getScriptRelatedModuleInfo
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings 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.idea.util.getProjectJdkTableSafe
import org.jetbrains.kotlin.script.ScriptTemplatesProvider import org.jetbrains.kotlin.script.ScriptTemplatesProvider
import org.jetbrains.kotlin.scripting.definitions.* import org.jetbrains.kotlin.scripting.definitions.*
@@ -206,8 +206,7 @@ class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinit
} }
companion object { companion object {
fun getInstance(project: Project): ScriptDefinitionsManager = fun getInstance(project: Project): ScriptDefinitionsManager = project.getServiceSafe<ScriptDefinitionProvider>() as ScriptDefinitionsManager
ServiceManager.getService(project, ScriptDefinitionProvider::class.java) as ScriptDefinitionsManager
} }
} }
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.idea.core.script.settings package org.jetbrains.kotlin.idea.core.script.settings
import com.intellij.openapi.components.PersistentStateComponent import com.intellij.openapi.components.PersistentStateComponent
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.components.State import com.intellij.openapi.components.State
import com.intellij.openapi.components.Storage import com.intellij.openapi.components.Storage
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
@@ -14,6 +13,7 @@ import com.intellij.util.addOptionTag
import com.intellij.util.attribute import com.intellij.util.attribute
import com.intellij.util.getAttributeBooleanValue import com.intellij.util.getAttributeBooleanValue
import org.jdom.Element import org.jdom.Element
import org.jetbrains.kotlin.idea.util.application.getServiceSafe
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
@State( @State(
@@ -136,8 +136,7 @@ class KotlinScriptingSettings : PersistentStateComponent<Element> {
getChildren("option").firstOrNull { it.getAttribute("name").value == name }?.getAttributeBooleanValue("value") getChildren("option").firstOrNull { it.getAttribute("name").value == name }?.getAttributeBooleanValue("value")
companion object { companion object {
fun getInstance(project: Project): KotlinScriptingSettings = fun getInstance(project: Project): KotlinScriptingSettings = project.getServiceSafe()
ServiceManager.getService(project, KotlinScriptingSettings::class.java)
private const val SCRIPT_DEFINITION_TAG = "scriptDefinition" private const val SCRIPT_DEFINITION_TAG = "scriptDefinition"
@@ -113,11 +113,7 @@ class KotlinMigrationProjectService(val project: Project) {
companion object { companion object {
fun getInstanceIfNotDisposed(project: Project): KotlinMigrationProjectService? { fun getInstanceIfNotDisposed(project: Project): KotlinMigrationProjectService? {
return runReadAction { return runReadAction {
if (!project.isDisposed) { if (!project.isDisposed) project.getServiceSafe() else null
project.getServiceSafe(KotlinMigrationProjectService::class.java)
} else {
null
}
} }
} }
@@ -24,7 +24,7 @@ import java.util.concurrent.ConcurrentHashMap
class KotlinCodeHintsModel(val project: Project) : EditorFactoryListener { class KotlinCodeHintsModel(val project: Project) : EditorFactoryListener {
companion object { 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) { private class DocumentExtensionInfoModel(val document: Document) {
@@ -5,12 +5,12 @@
package org.jetbrains.kotlin.idea.script package org.jetbrains.kotlin.idea.script
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.progress.ProgressIndicator import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.progress.Task import com.intellij.openapi.progress.Task
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionSourceAsContributor import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionSourceAsContributor
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
import org.jetbrains.kotlin.idea.util.application.executeOnPooledThread
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
import java.util.concurrent.locks.ReentrantReadWriteLock import java.util.concurrent.locks.ReentrantReadWriteLock
import kotlin.concurrent.read import kotlin.concurrent.read
@@ -100,7 +100,7 @@ abstract class AsyncScriptDefinitionsContributor(protected val project: Project)
if (isHeadless) { if (isHeadless) {
// If new script definitions found, then ScriptDefinitionsManager.reloadDefinitionsBy should be called // 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 // This may cause deadlock because Task.Backgroundable.queue executes task synchronously in headless mode
ApplicationManager.getApplication().executeOnPooledThread { executeOnPooledThread {
ScriptDefinitionsManager.getInstance(project).reloadDefinitionsBy(this@AsyncScriptDefinitionsContributor) ScriptDefinitionsManager.getInstance(project).reloadDefinitionsBy(this@AsyncScriptDefinitionsContributor)
} }
} else { } else {