): R = valuesCache.cachedValue(value, current)
override fun cachedValue(value: CachedValueWithParameter
, parameter: P): R =
@@ -100,6 +103,9 @@ class VersionedEntityStorageOnStorage(private val storage: WorkspaceEntityStorag
override val current: WorkspaceEntityStorage
get() = storage
+ override val base: WorkspaceEntityStorage
+ get() = storage
+
override fun cachedValue(value: CachedValue): R = valuesCache.cachedValue(value, current)
override fun cachedValue(value: CachedValueWithParameter
, parameter: P): R =
@@ -117,6 +123,9 @@ class DummyVersionedEntityStorage(private val builder: WorkspaceEntityStorageBui
override val current: WorkspaceEntityStorage
get() = builder
+ override val base: WorkspaceEntityStorage
+ get() = builder
+
override fun cachedValue(value: CachedValue): R = value.source(current)
override fun cachedValue(value: CachedValueWithParameter
, parameter: P): R = value.source(current, parameter)
override fun clearCachedValue(value: CachedValue) { }
@@ -139,6 +148,9 @@ open class VersionedEntityStorageImpl(initialStorage: WorkspaceEntityStorage) :
override val current: WorkspaceEntityStorage
get() = currentPointer.storage
+ override val base: WorkspaceEntityStorage
+ get() = current
+
override val version: Long
get() = currentPointer.version
diff --git a/platform/workspaceModel/storage/src/com/intellij/workspaceModel/storage/impl/WorkspaceEntityStorageImpl.kt b/platform/workspaceModel/storage/src/com/intellij/workspaceModel/storage/impl/WorkspaceEntityStorageImpl.kt
index a516558929fd..1fbc47c058f3 100644
--- a/platform/workspaceModel/storage/src/com/intellij/workspaceModel/storage/impl/WorkspaceEntityStorageImpl.kt
+++ b/platform/workspaceModel/storage/src/com/intellij/workspaceModel/storage/impl/WorkspaceEntityStorageImpl.kt
@@ -796,6 +796,10 @@ internal sealed class AbstractEntityStorage(internal val consistencyCheckingMode
return entitiesByType[entityClass.toClassId()]?.all()?.map { it.createEntity(this) } as? Sequence ?: emptySequence()
}
+ override fun entitiesAmount(entityClass: Class): Int {
+ return entitiesByType[entityClass.toClassId()]?.size() ?: 0
+ }
+
internal fun entityDataById(id: EntityId): WorkspaceEntityData? = entitiesByType[id.clazz]?.get(id.arrayId)
internal fun entityDataByIdOrDie(id: EntityId): WorkspaceEntityData {
diff --git a/platform/workspaceModel/storage/src/com/intellij/workspaceModel/storage/impl/external/ExternalEntityMappingImpl.kt b/platform/workspaceModel/storage/src/com/intellij/workspaceModel/storage/impl/external/ExternalEntityMappingImpl.kt
index 28b51e95e21e..52d7ee5bf044 100644
--- a/platform/workspaceModel/storage/src/com/intellij/workspaceModel/storage/impl/external/ExternalEntityMappingImpl.kt
+++ b/platform/workspaceModel/storage/src/com/intellij/workspaceModel/storage/impl/external/ExternalEntityMappingImpl.kt
@@ -10,7 +10,6 @@ import com.intellij.workspaceModel.storage.impl.EntityId
import com.intellij.workspaceModel.storage.impl.WorkspaceEntityBase
import com.intellij.workspaceModel.storage.impl.WorkspaceEntityStorageBuilderImpl
import com.intellij.workspaceModel.storage.impl.containers.BidirectionalMap
-import org.jetbrains.annotations.TestOnly
import java.util.*
internal open class ExternalEntityMappingImpl internal constructor(internal open val index: BidirectionalMap)
@@ -28,8 +27,7 @@ internal open class ExternalEntityMappingImpl internal constructor(internal o
return index[entity.id]
}
- @TestOnly
- fun size(): Int = index.size
+ override fun size(): Int = index.size
internal fun setTypedEntityStorage(storage: AbstractEntityStorage) {
entityStorage = storage
@@ -182,4 +180,5 @@ internal object EmptyExternalEntityMapping : ExternalEntityMapping {
override fun getEntities(data: Any): List = emptyList()
override fun getDataByEntity(entity: WorkspaceEntity): Any? = null
override fun forEach(action: (key: WorkspaceEntity, value: Any) -> Unit) {}
+ override fun size(): Int = 0
}