hide StreamProvider

This commit is contained in:
Vladimir Krivosheev
2015-08-25 17:11:38 +02:00
parent f22e895ada
commit f8d0d86a52
12 changed files with 31 additions and 35 deletions
@@ -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)
@@ -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
@@ -37,10 +37,10 @@ public abstract class SchemeManagerFactoryBase : SchemesManagerFactory(), Settin
abstract val componentManager: ComponentManager
override final fun <T : Scheme, E : ExternalizableScheme> createSchemesManager(directoryName: String, processor: SchemeProcessor<E>, roamingType: RoamingType): SchemesManager<T, E> {
val storageManager = componentManager.stateStore.getStateStorageManager()
val storageManager = (componentManager.stateStore).getStateStorageManager()
val path = checkPath(directoryName)
val manager = SchemeManagerImpl<T, E>(path, processor, roamingType, storageManager.getStreamProvider(), pathToFile(path, storageManager), componentManager)
val manager = SchemeManagerImpl<T, E>(path, processor, roamingType, (storageManager as? StateStorageManagerImpl)?.streamProvider, pathToFile(path, storageManager), componentManager)
@suppress("CAST_NEVER_SUCCEEDS")
managers.add(manager as SchemeManagerImpl<Scheme, ExternalizableScheme>)
return manager
@@ -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.*
@@ -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<String, StateStorage>()
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)
@@ -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
@@ -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, "<application>\n <component name=\"HttpConfigurable\">\n <option name=\"foo\" value=\"newValue\" />\n </component>\n</application>")
streamProvider.data.put(RoamingType.PER_USER, map)
componentStore.storageManager.setStreamProvider(streamProvider)
componentStore.storageManager.streamProvider = streamProvider
componentStore.initComponent(component, false)
assertThat(component.foo).isEqualTo("newValue")
@@ -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
@@ -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);
@@ -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)
@@ -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)
}
}
@@ -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