From af400b3fafe5c55209ab1194e2f23b44a22accd6 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Sat, 8 Apr 2017 07:36:19 +0200 Subject: [PATCH] =?UTF-8?q?simplify=20=E2=80=94=20stringIdToBeforeRunProvi?= =?UTF-8?q?der=20(id=20to=20provider=20map=20is=20not=20required)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 52d7527cf697bd481876b8b202c80094ff791715) --- .../intellij/execution/impl/RunManagerImpl.kt | 47 +++++-------------- 1 file changed, 11 insertions(+), 36 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt index b15174645fb6..2c0544a69bf8 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt @@ -151,6 +151,14 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent } }, streamProvider = schemeManagerProvider, autoSave = false) + private val stringIdToBeforeRunProvider by lazy { + val result = ContainerUtil.newConcurrentMap>() + for (provider in BeforeRunTaskProvider.EXTENSION_POINT_NAME.getExtensions(project)) { + result.put(provider.id.toString(), provider) + } + result + } + init { initializeConfigurationTypes(ConfigurationType.CONFIGURATION_TYPE_EP.extensions) project.messageBus.connect().subscribe(ProjectTopics.PROJECT_ROOTS, object : ModuleRootListener { @@ -705,8 +713,9 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent private fun readStepsBeforeRun(child: Element, settings: RunnerAndConfigurationSettings): List> { var result: MutableList>? = null for (methodElement in child.getChildren(OPTION)) { - val id = getProviderKey(methodElement.getAttributeValue(NAME_ATTR)) - val beforeRunTask = getProvider(id).createTask(settings.configuration) + val key = methodElement.getAttributeValue(NAME_ATTR) + val provider = stringIdToBeforeRunProvider.getOrPut(key) { UnknownBeforeRunTaskProvider(key) } + val beforeRunTask = provider.createTask(settings.configuration) if (beforeRunTask != null) { beforeRunTask.readExternal(methodElement) if (result == null) { @@ -1064,40 +1073,6 @@ class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persistent myDispatcher.multicaster.beforeRunTasksChanged() } - private var myBeforeStepsMap: MutableMap>, BeforeRunTaskProvider<*>>? = null - private var myProviderKeysMap: MutableMap>>? = null - - @Synchronized private fun getProvider(providerId: Key>): BeforeRunTaskProvider<*> { - if (myBeforeStepsMap == null) { - initProviderMaps() - } - return myBeforeStepsMap!!.get(providerId)!! - } - - @Synchronized - private fun getProviderKey(keyString: String): Key> { - if (myProviderKeysMap == null) { - initProviderMaps() - } - - return myProviderKeysMap!!.getOrPut(keyString) { - val provider = UnknownBeforeRunTaskProvider(keyString) - val id = provider.id!! - myBeforeStepsMap!!.put(id, provider) - id - } - } - - private fun initProviderMaps() { - myBeforeStepsMap = LinkedHashMap() - myProviderKeysMap = LinkedHashMap() - for (provider in Extensions.getExtensions(BeforeRunTaskProvider.EXTENSION_POINT_NAME, project)) { - val id = provider.id - myBeforeStepsMap!!.put(id, provider) - myProviderKeysMap!!.put(id.toString(), id) - } - } - override fun removeConfiguration(settings: RunnerAndConfigurationSettings?) { if (settings == null) { return