make Notification::hideBalloon thread-safe, also fixes IDEA-253399
[idea/community.git] / platform / projectModel-api / src / com / intellij / openapi / components / StateStorage.kt
1 // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.openapi.components
3
4 import com.intellij.configurationStore.SaveSessionProducer
5
6 interface StateStorage {
7   val isUseVfsForWrite: Boolean
8     get() = false
9
10   /**
11    * You can call this method only once.
12    * If state exists and not archived - not-null result.
13    * If doesn't exists or archived - null result.
14    */
15   fun <T : Any> getState(component: Any?, componentName: String, stateClass: Class<T>, mergeInto: T?, reload: Boolean): T?
16
17   fun hasState(componentName: String, reloadData: Boolean): Boolean
18
19   /**
20    * Returning `null` means that nothing to save.
21    */
22   fun createSaveSessionProducer(): SaveSessionProducer?
23
24   /**
25    * Get changed component names
26    */
27   fun analyzeExternalChangesAndUpdateIfNeeded(componentNames: MutableSet<String>)
28
29   fun getResolution(component: PersistentStateComponent<*>, operation: StateStorageOperation): StateStorageChooserEx.Resolution {
30     return StateStorageChooserEx.Resolution.DO
31   }
32 }