Skip to content

Commit 3b3352a

Browse files
committed
improve-navigation-change-service
1 parent 18d1ff8 commit 3b3352a

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

jvm-common/src/main/kotlin/org/digma/intellij/plugin/idea/navigation/NavigationDiscoveryChangeService.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.digma.intellij.plugin.idea.navigation
22

33
import com.intellij.openapi.Disposable
4+
import com.intellij.openapi.application.readAction
45
import com.intellij.openapi.components.Service
56
import com.intellij.openapi.diagnostic.Logger
67
import com.intellij.openapi.project.Project
@@ -24,7 +25,6 @@ import kotlinx.coroutines.launch
2425
import kotlinx.datetime.Clock
2526
import kotlinx.datetime.Instant
2627
import org.digma.intellij.plugin.common.isProjectValid
27-
import org.digma.intellij.plugin.common.runInReadAccessWithResult
2828
import org.digma.intellij.plugin.errorreporting.ErrorReporter
2929
import org.digma.intellij.plugin.idea.psi.isJvmSupportedFile
3030
import org.digma.intellij.plugin.log.Log
@@ -483,12 +483,12 @@ class NavigationDiscoveryChangeService(private val project: Project, private val
483483

484484

485485
private interface ItemProcessor<T> {
486-
fun process(item: T)
486+
suspend fun process(item: T)
487487
}
488488

489489

490490
private inner class FileEventsProcessor : ItemProcessor<VFileEvent> {
491-
override fun process(item: VFileEvent) {
491+
override suspend fun process(item: VFileEvent) {
492492

493493
try {
494494

@@ -554,7 +554,7 @@ class NavigationDiscoveryChangeService(private val project: Project, private val
554554

555555

556556
private inner class ChangedFileProcessor : ItemProcessor<String> {
557-
override fun process(item: String) {
557+
override suspend fun process(item: String) {
558558

559559
try {
560560

@@ -572,9 +572,10 @@ class NavigationDiscoveryChangeService(private val project: Project, private val
572572
}
573573

574574

575-
private fun updateNavigation(project: Project, file: VirtualFile) {
575+
private suspend fun updateNavigation(project: Project, file: VirtualFile) {
576576
if (isValidRelevantFile(project, file)) {
577-
val psiFile = runInReadAccessWithResult {
577+
578+
val psiFile = readAction {
578579
PsiManager.getInstance(project).findFile(file)
579580
}
580581
psiFile?.let {

jvm-common/src/main/kotlin/org/digma/intellij/plugin/idea/navigation/navigationUtils.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
package org.digma.intellij.plugin.idea.navigation
22

3+
import com.intellij.openapi.application.readAction
34
import com.intellij.openapi.project.Project
45
import com.intellij.openapi.roots.ProjectFileIndex
56
import com.intellij.openapi.util.Computable
67
import com.intellij.openapi.vfs.VirtualFile
7-
import org.digma.intellij.plugin.common.ReadActions
88
import org.digma.intellij.plugin.common.executeCatchingIgnorePCE
99
import org.digma.intellij.plugin.common.executeCatchingWithResultIgnorePCE
1010
import org.digma.intellij.plugin.common.isProjectValid
1111
import org.digma.intellij.plugin.common.isValidVirtualFile
1212
import org.digma.intellij.plugin.common.runWIthRetryIgnorePCE
1313
import org.digma.intellij.plugin.common.runWIthRetryWithResultIgnorePCE
1414
import org.digma.intellij.plugin.idea.navigation.model.NavigationProcessContext
15-
import java.util.function.Supplier
1615

1716

1817
fun executeCatchingWithRetry(
@@ -53,7 +52,7 @@ fun isRelevantFile(project: Project, file: VirtualFile?): Boolean {
5352

5453
//this method checks isInContent which needs read access. don't call it from EDT events like
5554
// onChange in psi tree listeners because it will cause short freezes, only call it on background processing
56-
fun isValidRelevantFile(project: Project, file: VirtualFile?): Boolean {
55+
suspend fun isValidRelevantFile(project: Project, file: VirtualFile?): Boolean {
5756
return isRelevantFile(project, file) &&
5857
isValidVirtualFile(file) &&
5958
file != null &&
@@ -63,8 +62,8 @@ fun isValidRelevantFile(project: Project, file: VirtualFile?): Boolean {
6362

6463
//don't call this method on EDT events like onChange in psi tree listeners because it will
6564
// cause short freezes, only call it on background processing
66-
fun isInContent(project: Project, file: VirtualFile): Boolean {
67-
return ReadActions.ensureReadAction(Supplier {
65+
suspend fun isInContent(project: Project, file: VirtualFile): Boolean {
66+
return readAction {
6867
ProjectFileIndex.getInstance(project).isInContent(file)
69-
})
68+
}
7069
}

0 commit comments

Comments
 (0)