diff --git a/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt b/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt index f38724a1d14b..a79feef438df 100644 --- a/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt +++ b/platform/configuration-store-impl/src/DefaultProjectStoreImpl.kt @@ -18,7 +18,6 @@ package com.intellij.configurationStore import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.components.* import com.intellij.openapi.components.impl.stores.StateStorageManager -import com.intellij.openapi.components.impl.stores.StreamProvider import com.intellij.openapi.project.Project import com.intellij.openapi.project.impl.ProjectImpl import com.intellij.util.containers.ContainerUtil @@ -76,10 +75,6 @@ class DefaultProjectStoreImpl(override val project: ProjectImpl, private val pat override fun collapseMacros(path: String) = throw UnsupportedOperationException("Method collapseMacros not implemented in " + javaClass) override fun getOldStorage(component: Any, componentName: String, operation: StateStorageOperation) = storage - - override fun setStreamProvider(streamProvider: StreamProvider?) = throw UnsupportedOperationException("Method setStreamProvider not implemented in " + javaClass) - - override fun getStreamProvider() = throw UnsupportedOperationException("Method getStreamProviders not implemented in " + javaClass) } // don't want to optimize and use already loaded data - it will add unnecessary complexity and implementation-lock (currently we store loaded archived state in memory, but later implementation can be changed) diff --git a/platform/configuration-store-impl/src/FileBasedStorage.kt b/platform/configuration-store-impl/src/FileBasedStorage.kt index 0b0026531022..afdc850b0f16 100644 --- a/platform/configuration-store-impl/src/FileBasedStorage.kt +++ b/platform/configuration-store-impl/src/FileBasedStorage.kt @@ -24,7 +24,6 @@ import com.intellij.openapi.components.StoragePathMacros import com.intellij.openapi.components.TrackingPathMacroSubstitutor import com.intellij.openapi.components.impl.stores.FileStorage import com.intellij.openapi.components.impl.stores.StorageUtil -import com.intellij.openapi.components.impl.stores.StreamProvider import com.intellij.openapi.util.JDOMUtil import com.intellij.openapi.util.io.systemIndependentPath import com.intellij.openapi.vfs.CharsetToolkit diff --git a/platform/configuration-store-impl/src/SchemeManagerFactoryImpl.kt b/platform/configuration-store-impl/src/SchemeManagerFactoryImpl.kt index d7170e5842f5..e6f4be59e7a3 100644 --- a/platform/configuration-store-impl/src/SchemeManagerFactoryImpl.kt +++ b/platform/configuration-store-impl/src/SchemeManagerFactoryImpl.kt @@ -37,10 +37,10 @@ public abstract class SchemeManagerFactoryBase : SchemesManagerFactory(), Settin abstract val componentManager: ComponentManager override final fun createSchemesManager(directoryName: String, processor: SchemeProcessor, roamingType: RoamingType): SchemesManager { - val storageManager = componentManager.stateStore.getStateStorageManager() + val storageManager = (componentManager.stateStore).getStateStorageManager() val path = checkPath(directoryName) - val manager = SchemeManagerImpl(path, processor, roamingType, storageManager.getStreamProvider(), pathToFile(path, storageManager), componentManager) + val manager = SchemeManagerImpl(path, processor, roamingType, (storageManager as? StateStorageManagerImpl)?.streamProvider, pathToFile(path, storageManager), componentManager) @suppress("CAST_NEVER_SUCCEEDS") managers.add(manager as SchemeManagerImpl) return manager diff --git a/platform/configuration-store-impl/src/SchemeManagerImpl.kt b/platform/configuration-store-impl/src/SchemeManagerImpl.kt index 317046c04eb6..7ec4890f0548 100644 --- a/platform/configuration-store-impl/src/SchemeManagerImpl.kt +++ b/platform/configuration-store-impl/src/SchemeManagerImpl.kt @@ -24,7 +24,6 @@ import com.intellij.openapi.application.runWriteAction import com.intellij.openapi.components.RoamingType import com.intellij.openapi.components.impl.ServiceManagerImpl import com.intellij.openapi.components.impl.stores.StorageUtil -import com.intellij.openapi.components.impl.stores.StreamProvider import com.intellij.openapi.components.service import com.intellij.openapi.extensions.AbstractExtensionPointBean import com.intellij.openapi.options.* diff --git a/platform/configuration-store-impl/src/StateStorageManagerImpl.kt b/platform/configuration-store-impl/src/StateStorageManagerImpl.kt index 9e51a144590b..d24c990e56aa 100644 --- a/platform/configuration-store-impl/src/StateStorageManagerImpl.kt +++ b/platform/configuration-store-impl/src/StateStorageManagerImpl.kt @@ -22,7 +22,6 @@ import com.intellij.openapi.components.* import com.intellij.openapi.components.StateStorage.SaveSession import com.intellij.openapi.components.StateStorageChooserEx.Resolution import com.intellij.openapi.components.impl.stores.StateStorageManager -import com.intellij.openapi.components.impl.stores.StreamProvider import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.io.FileUtilRt import com.intellij.openapi.util.text.StringUtil @@ -56,7 +55,7 @@ open class StateStorageManagerImpl(private val rootTagName: String, private val storageLock = ReentrantLock() private val storages = THashMap() - private var streamProvider: StreamProvider? = null + public var streamProvider: StreamProvider? = null // access under storageLock private var isUseVfsListener = if (componentManager == null) ThreeState.NO else ThreeState.UNSURE // unsure because depends on stream provider state @@ -86,12 +85,6 @@ open class StateStorageManagerImpl(private val rootTagName: String, } } - override final fun getStreamProvider() = streamProvider - - override final fun setStreamProvider(value: StreamProvider?) { - streamProvider = value - } - override final fun getMacroSubstitutor() = pathMacroSubstitutor private data class Macro(val key: String, var value: String) diff --git a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StreamProvider.kt b/platform/configuration-store-impl/src/StreamProvider.kt similarity index 96% rename from platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StreamProvider.kt rename to platform/configuration-store-impl/src/StreamProvider.kt index ff2a1206c20f..160b4ac34d1a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StreamProvider.kt +++ b/platform/configuration-store-impl/src/StreamProvider.kt @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.openapi.components.impl.stores +package com.intellij.configurationStore import com.intellij.openapi.components.RoamingType import java.io.InputStream diff --git a/platform/configuration-store-impl/testSrc/ApplicationStoreTest.kt b/platform/configuration-store-impl/testSrc/ApplicationStoreTest.kt index 5827dc8c2d33..f37c7afe462e 100644 --- a/platform/configuration-store-impl/testSrc/ApplicationStoreTest.kt +++ b/platform/configuration-store-impl/testSrc/ApplicationStoreTest.kt @@ -17,7 +17,6 @@ package com.intellij.configurationStore import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.components.* -import com.intellij.openapi.components.impl.stores.StreamProvider import com.intellij.openapi.vfs.CharsetToolkit import com.intellij.testFramework.* import com.intellij.util.SmartList @@ -58,7 +57,7 @@ class ApplicationStoreTest { val component = SeveralStoragesConfigured() val streamProvider = MyStreamProvider() - componentStore.storageManager.setStreamProvider(streamProvider) + componentStore.storageManager.streamProvider = streamProvider componentStore.initComponent(component, false) component.foo = "newValue" @@ -76,7 +75,7 @@ class ApplicationStoreTest { map.put(fileSpec, "\n \n \n") streamProvider.data.put(RoamingType.PER_USER, map) - componentStore.storageManager.setStreamProvider(streamProvider) + componentStore.storageManager.streamProvider = streamProvider componentStore.initComponent(component, false) assertThat(component.foo).isEqualTo("newValue") diff --git a/platform/configuration-store-impl/testSrc/MockStreamProvider.kt b/platform/configuration-store-impl/testSrc/MockStreamProvider.kt index 49064a738e3d..c765bb81c6b9 100644 --- a/platform/configuration-store-impl/testSrc/MockStreamProvider.kt +++ b/platform/configuration-store-impl/testSrc/MockStreamProvider.kt @@ -1,7 +1,6 @@ package com.intellij.configurationStore import com.intellij.openapi.components.RoamingType -import com.intellij.openapi.components.impl.stores.StreamProvider import com.intellij.openapi.util.io.FileUtil import com.intellij.util.SmartList import java.io.File diff --git a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManager.java b/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManager.java index ba5c476962cf..87079b615125 100644 --- a/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManager.java +++ b/platform/platform-impl/src/com/intellij/openapi/components/impl/stores/StateStorageManager.java @@ -57,11 +57,6 @@ public interface StateStorageManager { */ String collapseMacros(@NotNull String path); - void setStreamProvider(@Nullable StreamProvider streamProvider); - - @Nullable - StreamProvider getStreamProvider(); - interface ExternalizationSession { void setState(@NotNull Storage[] storageSpecs, @NotNull Object component, @NotNull String componentName, @NotNull Object state); diff --git a/plugins/settings-repository/src/IcsManager.kt b/plugins/settings-repository/src/IcsManager.kt index 1d0eea232d42..2ba5dabde263 100644 --- a/plugins/settings-repository/src/IcsManager.kt +++ b/plugins/settings-repository/src/IcsManager.kt @@ -15,6 +15,8 @@ */ package org.jetbrains.settingsRepository +import com.intellij.configurationStore.StateStorageManagerImpl +import com.intellij.configurationStore.StreamProvider import com.intellij.ide.ApplicationLoadListener import com.intellij.openapi.application.Application import com.intellij.openapi.application.ApplicationManager @@ -22,7 +24,6 @@ import com.intellij.openapi.application.PathManager import com.intellij.openapi.components.RoamingType import com.intellij.openapi.components.StoragePathMacros import com.intellij.openapi.components.impl.stores.StorageUtil -import com.intellij.openapi.components.impl.stores.StreamProvider import com.intellij.openapi.components.stateStore import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.progress.ProgressIndicator @@ -135,7 +136,7 @@ class IcsManager(dir: File) { return } - storageManager.setStreamProvider(ProjectLevelProvider(projectId.uid!!)) +// storageManager.setStreamProvider(ProjectLevelProvider(projectId.uid!!)) // updateStoragesFromStreamProvider(storageManager, storageManager.getStorageFileNames()) } @@ -174,7 +175,7 @@ class IcsManager(dir: File) { fun beforeApplicationLoaded(application: Application) { repositoryActive = repositoryManager.isRepositoryExists() - application.stateStore.getStateStorageManager().setStreamProvider(ApplicationLevelProvider()) + (application.stateStore.getStateStorageManager() as StateStorageManagerImpl).streamProvider = ApplicationLevelProvider() autoSyncManager.registerListeners(application) diff --git a/plugins/settings-repository/src/copyAppSettingsToRepository.kt b/plugins/settings-repository/src/copyAppSettingsToRepository.kt index 01716d3a7943..4dad5fb5b938 100644 --- a/plugins/settings-repository/src/copyAppSettingsToRepository.kt +++ b/plugins/settings-repository/src/copyAppSettingsToRepository.kt @@ -1,5 +1,21 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.jetbrains.settingsRepository +import com.intellij.configurationStore.StateStorageManagerImpl import com.intellij.ide.actions.ExportSettingsAction import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.components.* @@ -8,18 +24,18 @@ import com.intellij.openapi.util.io.FileUtilRt import java.io.File fun copyLocalConfig() { - val stateStorageManager = ApplicationManager.getApplication()!!.stateStore.getStateStorageManager() - val streamProvider = stateStorageManager.getStreamProvider()!! as IcsManager.IcsStreamProvider + val storageManager = ApplicationManager.getApplication()!!.stateStore.getStateStorageManager() as StateStorageManagerImpl + val streamProvider = storageManager.streamProvider!! as IcsManager.IcsStreamProvider val fileToComponents = ExportSettingsAction.getExportableComponentsMap(true, false) for (file in fileToComponents.keySet()) { val absolutePath = FileUtilRt.toSystemIndependentName(file.getAbsolutePath()) - var fileSpec = stateStorageManager.collapseMacros(absolutePath) + var fileSpec = storageManager.collapseMacros(absolutePath) if (fileSpec.equals(absolutePath)) { // we have not experienced such problem yet, but we are just aware val canonicalPath = FileUtilRt.toSystemIndependentName(file.getCanonicalPath()) if (!canonicalPath.equals(absolutePath)) { - fileSpec = stateStorageManager.collapseMacros(canonicalPath) + fileSpec = storageManager.collapseMacros(canonicalPath) } } diff --git a/plugins/settings-repository/testSrc/IcsTestCase.kt b/plugins/settings-repository/testSrc/IcsTestCase.kt index 6c2d67dcc9c9..a7b0a7a4d186 100644 --- a/plugins/settings-repository/testSrc/IcsTestCase.kt +++ b/plugins/settings-repository/testSrc/IcsTestCase.kt @@ -15,8 +15,8 @@ */ package org.jetbrains.settingsRepository.test +import com.intellij.configurationStore.StreamProvider import com.intellij.openapi.components.RoamingType -import com.intellij.openapi.components.impl.stores.StreamProvider import com.intellij.openapi.util.io.FileUtil import com.intellij.testFramework.PlatformTestUtil import com.intellij.testFramework.TemporaryDirectory