IJPL-191229 make analyzeExternalChangesAndUpdateIfNeeded as suspend

GitOrigin-RevId: 8ba4aff2fe9634bb42762baea00851846471631c
This commit is contained in:
Vladimir Krivosheev
2025-09-20 23:23:52 +00:00
committed by intellij-monorepo-bot
parent ab4fde4639
commit eab07fa299
8 changed files with 9 additions and 9 deletions
@@ -818,11 +818,11 @@ abstract class ComponentStoreImpl : IComponentStore {
val componentNames = HashSet<String>()
for (storage in changedStorages) {
LOG.runAndLogException {
runCatching {
// we must update (reload in-memory storage data) even if a non-reloadable component is detected later
// not saved -> user does a modification -> new (on disk) state will be overwritten and not applied
storage.analyzeExternalChangesAndUpdateIfNeeded(componentNames)
}
}.getOrLogException(LOG)
}
if (componentNames.isEmpty()) {
@@ -30,7 +30,7 @@ internal class DefaultProjectStoreImpl(override val project: Project) : Componen
private val storage by lazy {
val file = ApplicationManager.getApplication().stateStore.storageManager.expandMacro(PROJECT_DEFAULT_FILE_SPEC)
DefaultProjectStorage(file, PROJECT_DEFAULT_FILE_SPEC, PathMacroManager.getInstance(project), compoundStreamProvider)
DefaultProjectStorage(file = file, fileSpec = PROJECT_DEFAULT_FILE_SPEC, pathMacroManager = PathMacroManager.getInstance(project), streamProvider = compoundStreamProvider)
}
override val serviceContainer: ComponentManagerEx
@@ -44,7 +44,7 @@ open class DirectoryBasedStorage(
private fun getLineSeparator(name: String): LineSeparator = nameToLineSeparatorMap.get(name) ?: LineSeparator.getSystemLineSeparator()
override fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>) {
override suspend fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>) {
// todo reload only changed file, compute diff
val newData = loadData()
storageDataRef.set(newData)
@@ -134,7 +134,7 @@ abstract class XmlElementStorage protected constructor(
protected abstract fun createSaveSession(states: StateMap): SaveSessionProducer
final override fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>) {
final override suspend fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>) {
LOG.debug("Running analyzeExternalChangesAndUpdateIfNeeded")
val oldData = storageDataRef.get()
val newData = getStorageData(reload = true)
@@ -29,7 +29,7 @@ interface StateStorage {
/**
* Get changed component names
*/
fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>)
suspend fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>)
fun getResolution(
component: PersistentStateComponent<*>,
@@ -74,5 +74,5 @@ private object NonPersistentStateStorage : StateStorage {
override fun createSaveSessionProducer(): SaveSessionProducer? = null
override fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>) {}
override suspend fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>) {}
}
@@ -108,7 +108,7 @@ internal class StateStorageBackedByController(
return ControllerBackedSaveSessionProducer(storageController = this)
}
override fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>) {
override suspend fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>) {
// external change is not expected and not supported
}
@@ -167,6 +167,6 @@ private class ReadOnlyStorage(
override fun createSaveSessionProducer(): SaveSessionProducer? = null
override fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>) {
override suspend fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<in String>) {
}
}