From f86a5587fe81de50fdc2e867561ee08333c9b623 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Fri, 22 Dec 2017 11:13:14 +0100 Subject: [PATCH] =?UTF-8?q?cleanup=20=E2=80=94=20extract=20private=20class?= =?UTF-8?q?es=20to=20file-level?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/DefaultProjectStoreImpl.kt | 70 ++++++++++--------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt b/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt index 83e17b63b525..d09eac5f06c4 100644 --- a/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt +++ b/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt @@ -23,11 +23,31 @@ import org.jdom.Element import java.nio.file.Path import java.nio.file.Paths -internal class DefaultProjectStoreImpl(override val project: ProjectImpl, private val pathMacroManager: PathMacroManager) : ComponentStoreImpl() { - companion object { - const val FILE_SPEC = "${APP_CONFIG}/project.default.xml" +private const val FILE_SPEC = "${APP_CONFIG}/project.default.xml" + +private class DefaultProjectStorage(file: Path, fileSpec: String, pathMacroManager: PathMacroManager) : FileBasedStorage(file, fileSpec, "defaultProject", pathMacroManager.createTrackingSubstitutor(), RoamingType.DISABLED) { + override public fun loadLocalData(): Element? { + val element = super.loadLocalData() ?: return null + try { + return element.getChild("component").getChild("defaultProject") + } + catch (e: NullPointerException) { + LOG.warn("Cannot read default project") + return null + } } + override fun createSaveSession(states: StateMap) = object : FileBasedStorage.FileSaveSession(states, this) { + override fun saveLocally(element: Element?) { + super.saveLocally(element?.let { + Element("application") + .addContent(Element("component").setAttribute("name", "ProjectManager").addContent(it)) + }) + } + } +} + +internal class DefaultProjectStoreImpl(override val project: ProjectImpl, private val pathMacroManager: PathMacroManager) : ComponentStoreImpl() { // see note about default state in project store override val loadPolicy: StateLoadPolicy get() = if (ApplicationManager.getApplication().isUnitTestMode) StateLoadPolicy.NOT_LOAD else StateLoadPolicy.LOAD @@ -38,25 +58,6 @@ internal class DefaultProjectStoreImpl(override val project: ProjectImpl, privat private val storage by lazy { DefaultProjectStorage(Paths.get(ApplicationManager.getApplication().stateStore.stateStorageManager.expandMacros(FILE_SPEC)), FILE_SPEC, pathMacroManager) } - private class DefaultProjectStorage(file: Path, fileSpec: String, pathMacroManager: PathMacroManager) : FileBasedStorage(file, fileSpec, "defaultProject", pathMacroManager.createTrackingSubstitutor(), RoamingType.DISABLED) { - override public fun loadLocalData(): Element? { - val element = super.loadLocalData() ?: return null - try { - return element.getChild("component").getChild("defaultProject") - } - catch (e: NullPointerException) { - LOG.warn("Cannot read default project") - return null - } - } - - override fun createSaveSession(states: StateMap) = object : FileBasedStorage.FileSaveSession(states, this) { - override fun saveLocally(element: Element?) { - super.saveLocally(element?.let { Element("application").addContent(Element("component").setAttribute("name", "ProjectManager").addContent(it))}) - } - } - } - override val storageManager = object : StateStorageManager { override fun addStreamProvider(provider: StreamProvider, first: Boolean) { } @@ -87,24 +88,25 @@ internal class DefaultProjectStoreImpl(override val project: ProjectImpl, privat override fun setPath(path: String) { } +} - private class MyExternalizationSession(val externalizationSession: StateStorage.ExternalizationSession) : StateStorageManager.ExternalizationSession { - override fun setState(storageSpecs: List, component: Any, componentName: String, state: Any) { - externalizationSession.setState(component, componentName, state) - } - - override fun setStateInOldStorage(component: Any, componentName: String, state: Any) { - externalizationSession.setState(component, componentName, state) - } - - override fun createSaveSessions() = listOfNotNull(externalizationSession.createSaveSession()) +private class MyExternalizationSession(val externalizationSession: StateStorage.ExternalizationSession) : StateStorageManager.ExternalizationSession { + override fun setState(storageSpecs: List, component: Any, componentName: String, state: Any) { + externalizationSession.setState(component, componentName, state) } + + override fun setStateInOldStorage(component: Any, componentName: String, state: Any) { + externalizationSession.setState(component, componentName, state) + } + + override fun createSaveSessions() = listOfNotNull(externalizationSession.createSaveSession()) } // ExportSettingsAction checks only "State" annotation presence, but doesn't require PersistentStateComponent implementation, so, we can just specify annotation -@State(name = "ProjectManager", storages = arrayOf(Storage(DefaultProjectStoreImpl.FILE_SPEC))) +@State(name = "ProjectManager", storages = arrayOf(Storage(FILE_SPEC))) private class DefaultProjectExportableAndSaveTrigger : SettingsSavingComponent { - @Volatile var project: Project? = null + @Volatile + var project: Project? = null override fun save() { // we must trigger save