From 70bd6c88506299b2a136f9a0ebefe9efef720d22 Mon Sep 17 00:00:00 2001 From: Nikolay Rykunov Date: Wed, 4 Sep 2024 16:29:59 +0200 Subject: [PATCH] [debugger-rd] IJPL-160146: Register entities using EntityTypeProvider EP GitOrigin-RevId: bf10e84a5d8a2eb155dbe41342d7a7d0a55a7a1f --- .../common/ValueLookupManagerSubscriptions.kt | 10 -------- .../resources/META-INF/xdebugger.xml | 1 + .../evaluate/ValueLookupManagerController.kt | 23 ++++++++++++------- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/evaluate/quick/common/ValueLookupManagerSubscriptions.kt b/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/evaluate/quick/common/ValueLookupManagerSubscriptions.kt index 9936d52e8523..357409c01f63 100644 --- a/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/evaluate/quick/common/ValueLookupManagerSubscriptions.kt +++ b/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/evaluate/quick/common/ValueLookupManagerSubscriptions.kt @@ -19,11 +19,6 @@ import kotlinx.coroutines.withContext internal fun subscribeForDebuggingStart(cs: CoroutineScope, project: Project, onStartListening: () -> Unit) { cs.launch(Dispatchers.Default) { withKernel { - change { - shared { - register(XDebuggerValueLookupListeningStartedEntity) - } - } XDebuggerValueLookupListeningStartedEntity.each().filter { it.projectEntity.asProject() === project }.collect { withContext(Dispatchers.Main) { onStartListening() @@ -36,11 +31,6 @@ internal fun subscribeForDebuggingStart(cs: CoroutineScope, project: Project, on internal fun subscribeForValueHintHideRequest(cs: CoroutineScope, project: Project, onHintHidden: () -> Unit) { cs.launch(Dispatchers.Default) { withKernel { - change { - shared { - register(XDebuggerValueLookupHideHintsRequestEntity) - } - } XDebuggerValueLookupHideHintsRequestEntity.each().filter { it.projectEntity.asProject() === project }.collect { entity -> withContext(Dispatchers.Main) { onHintHidden() diff --git a/platform/xdebugger-impl/resources/META-INF/xdebugger.xml b/platform/xdebugger-impl/resources/META-INF/xdebugger.xml index 8c71e171a533..dc75ec8c898f 100644 --- a/platform/xdebugger-impl/resources/META-INF/xdebugger.xml +++ b/platform/xdebugger-impl/resources/META-INF/xdebugger.xml @@ -143,6 +143,7 @@ + diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/ValueLookupManagerController.kt b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/ValueLookupManagerController.kt index 6fe6811033ee..525706c46bc7 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/ValueLookupManagerController.kt +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/ValueLookupManagerController.kt @@ -5,11 +5,13 @@ import com.intellij.openapi.components.Service import com.intellij.openapi.components.service import com.intellij.openapi.project.Project import com.intellij.openapi.util.Key +import com.intellij.platform.kernel.EntityTypeProvider import com.intellij.platform.kernel.withKernel import com.intellij.platform.project.ProjectEntity import com.intellij.platform.project.asEntity import com.jetbrains.rhizomedb.EID import com.jetbrains.rhizomedb.Entity +import com.jetbrains.rhizomedb.EntityType import fleet.kernel.DurableEntityType import fleet.kernel.change import fleet.kernel.shared @@ -19,6 +21,15 @@ import kotlinx.coroutines.launch import org.jetbrains.annotations.ApiStatus import java.util.concurrent.atomic.AtomicReference +private class XDebuggerValueLookupEntityTypesProvider : EntityTypeProvider { + override fun entityTypes(): List> { + return listOf( + XDebuggerValueLookupListeningStartedEntity, + XDebuggerValueLookupHideHintsRequestEntity, + ) + } +} + @ApiStatus.Internal class XDebuggerValueLookupListeningStartedEntity(override val eid: EID) : Entity { companion object : DurableEntityType( @@ -59,17 +70,13 @@ class ValueLookupManagerController(private val project: Project, private val cs: } cs.launch(Dispatchers.Main) { withKernel { - change { - shared { - register(XDebuggerValueLookupListeningStartedEntity) - } - } val entities = XDebuggerValueLookupListeningStartedEntity.all() if (entities.isEmpty()) { change { + val projectEntity = project.asEntity() shared { XDebuggerValueLookupListeningStartedEntity.new { - it[XDebuggerValueLookupListeningStartedEntity.Project] = project.asEntity() + it[XDebuggerValueLookupListeningStartedEntity.Project] = projectEntity } } } @@ -86,10 +93,10 @@ class ValueLookupManagerController(private val project: Project, private val cs: cs.launch(Dispatchers.Main) { withKernel { change { + val projectEntity = project.asEntity() shared { - register(XDebuggerValueLookupHideHintsRequestEntity) XDebuggerValueLookupHideHintsRequestEntity.new { - it[XDebuggerValueLookupHideHintsRequestEntity.Project] = project.asEntity() + it[XDebuggerValueLookupHideHintsRequestEntity.Project] = projectEntity } } }