From bb9a463304c80793202ba3a2d471fdde08fcd723 Mon Sep 17 00:00:00 2001 From: Leonid Shalupov Date: Wed, 19 Sep 2018 15:56:03 +0300 Subject: [PATCH] Extensible ExternalModuleListStorage IDEA-CR-37148 IDEA-199211 Refactor code dependent on project model implementation --- platform/platform-resources/src/componentSets/Lang.xml | 2 +- .../openapi/module/impl/ExternalModuleListStorage.kt | 10 +++++++++- .../openapi/module/impl/ModuleManagerImpl.java | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/platform/platform-resources/src/componentSets/Lang.xml b/platform/platform-resources/src/componentSets/Lang.xml index ee2a74dc45aa..531a3d4e546c 100644 --- a/platform/platform-resources/src/componentSets/Lang.xml +++ b/platform/platform-resources/src/componentSets/Lang.xml @@ -68,7 +68,7 @@ com.intellij.openapi.module.impl.ExternalModuleListStorage - com.intellij.openapi.module.impl.ExternalModuleListStorage + com.intellij.openapi.module.impl.ExternalModuleListStorageImpl diff --git a/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ExternalModuleListStorage.kt b/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ExternalModuleListStorage.kt index 9ea239100535..f79735615f32 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ExternalModuleListStorage.kt +++ b/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ExternalModuleListStorage.kt @@ -13,14 +13,22 @@ import com.intellij.openapi.roots.ProjectModelElement import com.intellij.openapi.roots.ProjectModelExternalSource import org.jdom.Element +interface ExternalModuleListStorage { + fun getExternalModules(): Set? +} + /** * todo rename component state name to "ExternalProjectModuleManager" for consistency (2018.1 release) */ @State(name = "ExternalModuleListStorage", storages = [(Storage("modules.xml"))], externalStorageOnly = true) -internal class ExternalModuleListStorage(private val project: Project) : PersistentStateComponent, ProjectModelElement { +internal class ExternalModuleListStorageImpl(private val project: Project) + : PersistentStateComponent, ProjectModelElement, ExternalModuleListStorage { + var loadedState: Set? = null private set + override fun getExternalModules(): Set? = loadedState + override fun getState(): Element { val e = Element("state") if (!project.isExternalStorageEnabled) { diff --git a/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java index 4c4e349ae553..1db40d457de4 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java @@ -154,7 +154,7 @@ public abstract class ModuleManagerImpl extends ModuleManager implements Disposa @Override public void loadState(@NotNull Element state) { Set files = getPathsToModuleFiles(state); - Set externalModules = myProject.getComponent(ExternalModuleListStorage.class).getLoadedState(); + Set externalModules = myProject.getComponent(ExternalModuleListStorage.class).getExternalModules(); if (externalModules != null) { files.addAll(externalModules); } @@ -164,7 +164,7 @@ public abstract class ModuleManagerImpl extends ModuleManager implements Disposa @Override public void noStateLoaded() { // if there are only external modules, loadState will be not called - Set externalModules = myProject.getComponent(ExternalModuleListStorage.class).getLoadedState(); + Set externalModules = myProject.getComponent(ExternalModuleListStorage.class).getExternalModules(); if (externalModules != null) { loadState(new LinkedHashSet<>(externalModules)); }