[Workspace Model] Add syntax sugar for workspace model quick access

GitOrigin-RevId: 5b261af938362ac66092f17ed65fe3822d5ea9b6
This commit is contained in:
Alex Plate
2022-12-27 15:30:05 +02:00
committed by intellij-monorepo-bot
parent 2ef985f310
commit 46a9edfe96
2 changed files with 17 additions and 13 deletions

View File

@@ -24,6 +24,7 @@ import com.intellij.util.containers.BidirectionalMap
import com.intellij.util.xmlb.XmlSerializer
import com.intellij.workspaceModel.ide.WorkspaceModel
import com.intellij.workspaceModel.ide.impl.WorkspaceModelImpl
import com.intellij.workspaceModel.ide.workspaceModel
import com.intellij.workspaceModel.storage.*
import com.intellij.workspaceModel.storage.bridgeEntities.ArtifactEntity
import com.intellij.workspaceModel.storage.bridgeEntities.ArtifactId
@@ -47,8 +48,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D
override fun getArtifacts(): Array<ArtifactBridge> {
initBridges()
val workspaceModel = WorkspaceModel.getInstance(project)
val entityStorage = workspaceModel.entityStorage
val entityStorage = project.workspaceModel.entityStorage
val store = entityStorage.current
@@ -63,8 +63,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D
override fun findArtifact(name: String): Artifact? {
initBridges()
val workspaceModel = WorkspaceModel.getInstance(project)
val entityStorage = workspaceModel.entityStorage
val entityStorage = project.workspaceModel.entityStorage
val store = entityStorage.current
val artifactEntity = store.resolve(ArtifactId(name)) ?: return null
@@ -83,8 +82,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D
ApplicationManager.getApplication().assertReadAccessAllowed()
initBridges()
val workspaceModel = WorkspaceModel.getInstance(project)
val entityStorage = workspaceModel.entityStorage
val entityStorage = project.workspaceModel.entityStorage
val store = entityStorage.current
val typeId = type.id
@@ -101,7 +99,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D
ApplicationManager.getApplication().assertReadAccessAllowed()
initBridges()
val entityStorage = WorkspaceModel.getInstance(project).entityStorage
val entityStorage = project.workspaceModel.entityStorage
val storage = entityStorage.current
return storage
@@ -122,7 +120,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D
}
override fun createModifiableModel(): ModifiableArtifactModel {
val storage = WorkspaceModel.getInstance(project).entityStorage.current
val storage = project.workspaceModel.entityStorage.current
return ArtifactModifiableModelBridge(project, MutableEntityStorage.from(storage), this)
}
@@ -162,7 +160,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D
LOG.trace { "Committing artifact manager bridge. diff: ${artifactModel.diff}" }
updateCustomElements(artifactModel.diff)
val current = WorkspaceModel.getInstance(project).entityStorage.current
val current = project.workspaceModel.entityStorage.current
val changes = artifactModel.diff.collectChanges(current)[ArtifactEntity::class.java] ?: emptyList()
val removed = mutableSetOf<ArtifactBridge>()
@@ -203,7 +201,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D
(ArtifactPointerManager.getInstance(project) as ArtifactPointerManagerImpl).disposePointers(changedArtifacts)
WorkspaceModel.getInstance(project).updateProjectModel("Commit artifact manager") {
project.workspaceModel.updateProjectModel("Commit artifact manager") {
it.addDiff(artifactModel.diff)
}
@@ -226,7 +224,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D
artifactWithDiffs.forEach { it.setActualStorage() }
artifactWithDiffs.clear()
val entityStorage = WorkspaceModel.getInstance(project).entityStorage
val entityStorage = project.workspaceModel.entityStorage
added.forEach { bridge ->
bridge.elementsWithDiff.forEach { it.setStorage(entityStorage, project, HashSet(), PackagingElementInitializer) }
bridge.elementsWithDiff.clear()
@@ -272,7 +270,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D
private fun initBridges() {
// XXX @RequiresReadLock annotation doesn't work for kt now
ApplicationManager.getApplication().assertReadAccessAllowed()
val workspaceModel = WorkspaceModel.getInstance(project)
val workspaceModel = project.workspaceModel
val current = workspaceModel.entityStorage.current
if (current.entitiesAmount(ArtifactEntity::class.java) != current.artifactsMap.size()) {
@@ -323,7 +321,7 @@ class ArtifactManagerBridge(private val project: Project) : ArtifactManager(), D
fun dropMappings(selector: (ArtifactEntity) -> Boolean) {
// XXX @RequiresReadLock annotation doesn't work for kt now
ApplicationManager.getApplication().assertWriteAccessAllowed()
(WorkspaceModel.getInstance(project) as WorkspaceModelImpl).updateProjectModelSilent("Drop artifact mappings") {
(project.workspaceModel as WorkspaceModelImpl).updateProjectModelSilent("Drop artifact mappings") {
val map = it.mutableArtifactsMap
it.entities(ArtifactEntity::class.java).filter(selector).forEach { artifact ->
map.removeMapping(artifact)