diff --git a/platform/configuration-store-impl/src/ApplicationStoreImpl.kt b/platform/configuration-store-impl/src/ApplicationStoreImpl.kt index a255caafec08..35525541bf6a 100644 --- a/platform/configuration-store-impl/src/ApplicationStoreImpl.kt +++ b/platform/configuration-store-impl/src/ApplicationStoreImpl.kt @@ -36,6 +36,9 @@ open class ApplicationStoreImpl(private val app: Application) : ComponentStoreWi override val storageManager: StateStorageManagerImpl = ApplicationStateStorageManager(pathMacroManager = PathMacroManager.getInstance(app), controller = app.getService(SettingsController::class.java)) + override val allowSavingWithoutModifications: Boolean + get() = true + override val serviceContainer: ComponentManagerImpl get() = app as ComponentManagerImpl diff --git a/platform/configuration-store-impl/src/ComponentStoreImpl.kt b/platform/configuration-store-impl/src/ComponentStoreImpl.kt index 5edf7d67e9dc..d2e4a11cd177 100644 --- a/platform/configuration-store-impl/src/ComponentStoreImpl.kt +++ b/platform/configuration-store-impl/src/ComponentStoreImpl.kt @@ -93,6 +93,9 @@ abstract class ComponentStoreImpl : IComponentStore { open val loadPolicy: StateLoadPolicy get() = StateLoadPolicy.LOAD + protected open val allowSavingWithoutModifications: Boolean + get() = false + abstract override val storageManager: StateStorageManager private val featureUsageSettingManager by lazy { @@ -298,7 +301,7 @@ abstract class ComponentStoreImpl : IComponentStore { SAVE_MOD_LOG.debug( "${if (isUseModificationCount) "Skip " else ""}$name: modificationCount $currentModificationCount equals to last saved") } - if (isUseModificationCount && !isForce) { + if (isUseModificationCount && !(isForce && allowSavingWithoutModifications)) { continue } } diff --git a/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt b/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt index 5a56db738511..18f488bb85f5 100644 --- a/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt +++ b/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt @@ -19,6 +19,9 @@ internal class DefaultProjectStoreImpl(override val project: Project) : Componen // see note about default state in project store private val compoundStreamProvider = CompoundStreamProvider() + override val allowSavingWithoutModifications: Boolean + get() = true + override val loadPolicy: StateLoadPolicy get() = if (ApplicationManager.getApplication().isUnitTestMode) StateLoadPolicy.NOT_LOAD else StateLoadPolicy.LOAD diff --git a/plugins/configuration-script/src/providers/ConfigurationScriptProjectStoreFactory.kt b/plugins/configuration-script/src/providers/ConfigurationScriptProjectStoreFactory.kt index 3c2f2750aa12..8cda1e8485c6 100644 --- a/plugins/configuration-script/src/providers/ConfigurationScriptProjectStoreFactory.kt +++ b/plugins/configuration-script/src/providers/ConfigurationScriptProjectStoreFactory.kt @@ -58,7 +58,7 @@ private class MyProjectStore(project: Project) : ProjectWithModuleStoreImpl(proj info = info, componentName = componentName, stateClass = stateClass, - useLoadedStateAsExisting = false, + useLoadedStateAsExisting = useLoadedStateAsExisting, ) val configurationSchemaKey = info.configurationSchemaKey ?: return stateGetter val configurationFileManager = ConfigurationFileManager.getInstance(project)