diff --git a/platform/configuration-store-impl/src/ComponentStoreImpl.kt b/platform/configuration-store-impl/src/ComponentStoreImpl.kt index 9ca3018bfbf3..34e98b832d18 100644 --- a/platform/configuration-store-impl/src/ComponentStoreImpl.kt +++ b/platform/configuration-store-impl/src/ComponentStoreImpl.kt @@ -87,23 +87,26 @@ abstract class ComponentStoreImpl : IComponentStore { } val componentNameIfStateExists: String? + var componentName = "" try { componentNameIfStateExists = if (component is PersistentStateComponent<*>) { val stateSpec = StoreUtil.getStateSpec(component) - doAddComponent(stateSpec.name, component) + componentName = stateSpec.name + doAddComponent(componentName, component) @Suppress("UNCHECKED_CAST") initPersistentComponent(stateSpec, component as PersistentStateComponent, null, false) } else { + componentName = ComponentManagerImpl.getComponentName(component) @Suppress("DEPRECATION") - initJdomExternalizable(component as JDOMExternalizable) + initJdomExternalizable(component as JDOMExternalizable, componentName) } } catch (e: ProcessCanceledException) { throw e } catch (e: Exception) { - LOG.error(e) + LOG.error("Cannot init ${componentName} component state", e) return } @@ -213,8 +216,7 @@ abstract class ComponentStoreImpl : IComponentStore { return errors } - private fun initJdomExternalizable(@Suppress("DEPRECATION") component: JDOMExternalizable): String? { - val componentName = ComponentManagerImpl.getComponentName(component) + private fun initJdomExternalizable(@Suppress("DEPRECATION") component: JDOMExternalizable, componentName: String): String? { doAddComponent(componentName, component) if (loadPolicy != StateLoadPolicy.LOAD) { diff --git a/platform/configuration-store-impl/src/StateStorageManagerImpl.kt b/platform/configuration-store-impl/src/StateStorageManagerImpl.kt index d0372b28055a..4db7f47da0ec 100644 --- a/platform/configuration-store-impl/src/StateStorageManagerImpl.kt +++ b/platform/configuration-store-impl/src/StateStorageManagerImpl.kt @@ -132,8 +132,11 @@ open class StateStorageManagerImpl(private val rootTagName: String, } } - override final fun getStateStorage(storageSpec: Storage) = getOrCreateStorage(storageSpec.path, storageSpec.roamingType, - JavaAnnotationHelperForKotlin.getStorageClass(storageSpec), JavaAnnotationHelperForKotlin.getStateSplitterClass(storageSpec)) + override final fun getStateStorage(storageSpec: Storage): StateStorage { + return getOrCreateStorage(storageSpec.path, storageSpec.roamingType, + JavaAnnotationHelperForKotlin.getStorageClass(storageSpec), + JavaAnnotationHelperForKotlin.getStateSplitterClass(storageSpec)) + } protected open fun normalizeFileSpec(fileSpec: String): String { val path = FileUtilRt.toSystemIndependentName(fileSpec) @@ -146,6 +149,10 @@ open class StateStorageManagerImpl(private val rootTagName: String, storageClass: Class = StateStorage::class.java, @Suppress("DEPRECATION") stateSplitter: Class = StateSplitterEx::class.java): StateStorage { val normalizedCollapsedPath = normalizeFileSpec(collapsedPath) + if (normalizedCollapsedPath.isEmpty()) { + throw Exception("Normalized path is empty, raw path '$collapsedPath'") + } + val key = if (storageClass == StateStorage::class.java) normalizedCollapsedPath else storageClass.name storageLock.withLock { var storage = storages[key]