RUBY-18140 Markdown setting plugin: Unable to save settings Popup

Include component name into the error message
This commit is contained in:
Vladimir Krivosheev
2016-07-01 14:41:09 +02:00
parent 4d984cc927
commit 210243eadd
2 changed files with 16 additions and 7 deletions
@@ -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<Any>, 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) {
@@ -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<out StateStorage> = StateStorage::class.java,
@Suppress("DEPRECATION") stateSplitter: Class<out StateSplitter> = 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]