mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-CR-54281 make source folder removal thread safe
GitOrigin-RevId: bd36f3611a0096ebda9de0b540c686a33d5a4fe0
This commit is contained in:
committed by
intellij-monorepo-bot
parent
ffcd94bf94
commit
d09800bb34
+12
-10
@@ -87,14 +87,16 @@ class SourceFolderManagerImpl(private val project: Project) : SourceFolderManage
|
||||
sourceFoldersByModule[moduleName]?.sourceFolders
|
||||
}
|
||||
|
||||
private fun unsafeRemoveSourceFolder(url: String) {
|
||||
val sourceFolder = sourceFolders.remove(url) ?: return
|
||||
val module = sourceFolder.module
|
||||
val moduleModel = sourceFoldersByModule[module.name] ?: return
|
||||
val sourceFolders = moduleModel.sourceFolders
|
||||
sourceFolders.remove(url)
|
||||
if (sourceFolders.isEmpty()) {
|
||||
sourceFoldersByModule.remove(module.name)
|
||||
private fun removeSourceFolder(url: String) {
|
||||
synchronized(mutex) {
|
||||
val sourceFolder = sourceFolders.remove(url) ?: return
|
||||
val module = sourceFolder.module
|
||||
val moduleModel = sourceFoldersByModule[module.name] ?: return
|
||||
val sourceFolders = moduleModel.sourceFolders
|
||||
sourceFolders.remove(url)
|
||||
if (sourceFolders.isEmpty()) {
|
||||
sourceFoldersByModule.remove(module.name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +128,7 @@ class SourceFolderManagerImpl(private val project: Project) : SourceFolderManage
|
||||
val sourceFolderFile = virtualFileManager.refreshAndFindFileByUrl(sourceFolder.url)
|
||||
if (sourceFolderFile != null && sourceFolderFile.isValid) {
|
||||
sourceFoldersToChange.computeIfAbsent(sourceFolder.module) { ArrayList() }.add(Pair(event.file!!, sourceFolder))
|
||||
synchronized(mutex) { unsafeRemoveSourceFolder(sourceFolder.url) }
|
||||
removeSourceFolder(sourceFolder.url)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -156,7 +158,7 @@ class SourceFolderManagerImpl(private val project: Project) : SourceFolderManage
|
||||
val sourceFolderFile = virtualFileManager.refreshAndFindFileByUrl(sourceFolder.url)
|
||||
if (sourceFolderFile != null && sourceFolderFile.isValid) {
|
||||
sourceFoldersToChange.computeIfAbsent(sourceFolder.module) { ArrayList() }.add(Pair(sourceFolderFile, sourceFolder))
|
||||
synchronized(mutex) { unsafeRemoveSourceFolder(sourceFolder.url) }
|
||||
removeSourceFolder(sourceFolder.url)
|
||||
}
|
||||
|
||||
updateSourceFolders(sourceFoldersToChange)
|
||||
|
||||
Reference in New Issue
Block a user