mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[Workspace Model] Perform multicommit as a one change
GitOrigin-RevId: 15dde20aef72a9ffc3a71e8fcd8a3901b426a269
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9f65cf8164
commit
f1df512064
+12
-3
@@ -3,16 +3,25 @@ package com.intellij.workspace.legacyBridge.intellij
|
||||
import com.intellij.openapi.module.ModifiableModuleModel
|
||||
import com.intellij.openapi.roots.ModifiableRootModel
|
||||
import com.intellij.openapi.roots.impl.ModifiableModelCommitterService
|
||||
import com.intellij.workspace.api.TypedEntityStorageBuilder
|
||||
import com.intellij.workspace.ide.WorkspaceModel
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
@ApiStatus.Internal
|
||||
internal class LegacyBridgeModifiableModelCommitterService : ModifiableModelCommitterService {
|
||||
override fun multiCommit(rootModels: MutableCollection<out ModifiableRootModel>, moduleModel: ModifiableModuleModel) {
|
||||
// TODO Add all diffs at once
|
||||
// TODO Naive impl, check for existing contact in com.intellij.openapi.module.impl.ModuleManagerImpl.commitModelWithRunnable
|
||||
val diffs = mutableSetOf<TypedEntityStorageBuilder>()
|
||||
for (rootModel in rootModels) {
|
||||
if (rootModel.isChanged) rootModel.commit() else rootModel.dispose()
|
||||
if (rootModel.isChanged) {
|
||||
diffs += (rootModel as LegacyBridgeModifiableRootModel).collectChanges() ?: continue
|
||||
}
|
||||
else rootModel.dispose()
|
||||
}
|
||||
diffs += (moduleModel as LegacyBridgeModifiableModuleModel).collectChanges()
|
||||
|
||||
WorkspaceModel.getInstance(moduleModel.project).updateProjectModel {
|
||||
diffs.forEach(it::addDiff)
|
||||
}
|
||||
moduleModel.commit()
|
||||
}
|
||||
}
|
||||
+9
-3
@@ -164,6 +164,14 @@ internal class LegacyBridgeModifiableModuleModel(
|
||||
myNewNameToModule.isNotEmpty()
|
||||
|
||||
override fun commit() {
|
||||
val diff = collectChanges()
|
||||
|
||||
WorkspaceModel.getInstance(project).updateProjectModel {
|
||||
it.addDiff(diff)
|
||||
}
|
||||
}
|
||||
|
||||
fun collectChanges(): TypedEntityStorageBuilder {
|
||||
ApplicationManager.getApplication().assertWriteAccessAllowed()
|
||||
|
||||
val storage = entityStoreOnDiff.current
|
||||
@@ -184,9 +192,7 @@ internal class LegacyBridgeModifiableModuleModel(
|
||||
}
|
||||
}
|
||||
|
||||
WorkspaceModel.getInstance(project).updateProjectModel {
|
||||
it.addDiff(diff)
|
||||
}
|
||||
return diff
|
||||
}
|
||||
|
||||
override fun renameModule(module: Module, newName: String) {
|
||||
|
||||
+10
-6
@@ -20,11 +20,9 @@ import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.util.isEmpty
|
||||
import com.intellij.workspace.api.*
|
||||
import com.intellij.workspace.ide.WorkspaceModel
|
||||
import com.intellij.workspace.legacyBridge.libraries.libraries.LegacyBridgeLibrary
|
||||
import com.intellij.workspace.legacyBridge.libraries.libraries.LegacyBridgeLibraryImpl
|
||||
import com.intellij.workspace.legacyBridge.libraries.libraries.LegacyBridgeLibraryModifiableModelImpl
|
||||
import com.intellij.workspace.legacyBridge.libraries.libraries.LegacyBridgeModifiableBase
|
||||
import com.intellij.workspace.legacyBridge.libraries.libraries.*
|
||||
import com.intellij.workspace.legacyBridge.roots.LegacyBridgeModifiableContentEntryImpl
|
||||
import com.intellij.workspace.legacyBridge.typedModel.library.LibraryViaTypedEntity
|
||||
import com.intellij.workspace.legacyBridge.typedModel.module.LibraryOrderEntryViaTypedEntity
|
||||
import com.intellij.workspace.legacyBridge.typedModel.module.OrderEntryViaTypedEntity
|
||||
import com.intellij.workspace.legacyBridge.typedModel.module.RootModelViaTypedEntityImpl
|
||||
@@ -293,9 +291,9 @@ class LegacyBridgeModifiableRootModel(
|
||||
}
|
||||
}
|
||||
|
||||
override fun commit() {
|
||||
fun collectChanges(): TypedEntityStorageBuilder? {
|
||||
assertModelIsLive()
|
||||
if (!isChanged) return
|
||||
if (!isChanged) return null
|
||||
|
||||
if (extensionsDelegate.isInitialized() && extensions.any { it.isChanged }) {
|
||||
val element = Element("component")
|
||||
@@ -343,6 +341,12 @@ class LegacyBridgeModifiableRootModel(
|
||||
|
||||
disposeSkippingLibraries()
|
||||
|
||||
return diff
|
||||
}
|
||||
|
||||
override fun commit() {
|
||||
val diff = collectChanges() ?: return
|
||||
|
||||
val moduleDiff = module.diff
|
||||
|
||||
if (moduleDiff != null) {
|
||||
|
||||
Reference in New Issue
Block a user