mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
we must compute RC state digest using state after load, to allow change format (as in case of components)
This commit is contained in:
+15
-2
@@ -18,11 +18,14 @@ package com.intellij.execution.impl
|
||||
import com.intellij.configurationStore.LazySchemeProcessor
|
||||
import com.intellij.configurationStore.SchemeContentChangedHandler
|
||||
import com.intellij.configurationStore.SchemeDataHolder
|
||||
import com.intellij.openapi.diagnostic.logger
|
||||
import com.intellij.openapi.util.InvalidDataException
|
||||
import com.intellij.util.attribute
|
||||
import org.jdom.Element
|
||||
import java.util.function.Function
|
||||
|
||||
private val LOG = logger<RunConfigurationSchemeManager>()
|
||||
|
||||
internal class RunConfigurationSchemeManager(private val manager: RunManagerImpl, private val isShared: Boolean) :
|
||||
LazySchemeProcessor<RunnerAndConfigurationSettingsImpl, RunnerAndConfigurationSettingsImpl>(), SchemeContentChangedHandler<RunnerAndConfigurationSettingsImpl> {
|
||||
override fun createScheme(dataHolder: SchemeDataHolder<RunnerAndConfigurationSettingsImpl>, name: String, attributeProvider: Function<String, String?>, isBundled: Boolean): RunnerAndConfigurationSettingsImpl {
|
||||
@@ -34,8 +37,6 @@ internal class RunConfigurationSchemeManager(private val manager: RunManagerImpl
|
||||
|
||||
private fun readData(settings: RunnerAndConfigurationSettingsImpl, dataHolder: SchemeDataHolder<RunnerAndConfigurationSettingsImpl>): Element {
|
||||
var element = dataHolder.read()
|
||||
// very important to not write file with only changed line separators.
|
||||
dataHolder.updateDigest(element)
|
||||
|
||||
if (isShared && element.name == "component") {
|
||||
element = element.getChild("configuration")
|
||||
@@ -47,6 +48,18 @@ internal class RunConfigurationSchemeManager(private val manager: RunManagerImpl
|
||||
catch (e: InvalidDataException) {
|
||||
RunManagerImpl.LOG.error(e)
|
||||
}
|
||||
|
||||
var elementAfterStateLoaded = element
|
||||
try {
|
||||
elementAfterStateLoaded = writeScheme(settings)
|
||||
}
|
||||
catch (e: Throwable) {
|
||||
LOG.error("Cannot compute digest for RC using state after load", e)
|
||||
}
|
||||
|
||||
// very important to not write file with only changed line separators
|
||||
dataHolder.updateDigest(elementAfterStateLoaded)
|
||||
|
||||
return element
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user