diff --git a/java/debugger/impl/BUILD.bazel b/java/debugger/impl/BUILD.bazel
index af6953cfacea..f5f067be7b5e 100644
--- a/java/debugger/impl/BUILD.bazel
+++ b/java/debugger/impl/BUILD.bazel
@@ -64,6 +64,7 @@ jvm_library(
"//java/codeserver/highlighting",
"//xml/xml-psi-api:psi",
"//platform/xdebugger-impl/shared",
+ "//platform/xdebugger-impl/rpc",
],
runtime_deps = [":impl_resources"]
)
diff --git a/java/debugger/impl/intellij.java.debugger.impl.iml b/java/debugger/impl/intellij.java.debugger.impl.iml
index 5c8d2b8abf9b..cfe0a6a210e8 100644
--- a/java/debugger/impl/intellij.java.debugger.impl.iml
+++ b/java/debugger/impl/intellij.java.debugger.impl.iml
@@ -97,6 +97,7 @@
+
diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/HotSwapAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/HotSwapAction.java
index 84a0870c5394..43b51a9551d0 100644
--- a/java/debugger/impl/src/com/intellij/debugger/actions/HotSwapAction.java
+++ b/java/debugger/impl/src/com/intellij/debugger/actions/HotSwapAction.java
@@ -12,6 +12,7 @@ import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;
import com.intellij.xdebugger.impl.hotswap.HotSwapStatistics;
+import com.intellij.xdebugger.impl.rpc.HotSwapSource;
import org.jetbrains.annotations.NotNull;
public class HotSwapAction extends AnAction {
@@ -24,7 +25,7 @@ public class HotSwapAction extends AnAction {
DebuggerSession session = debuggerManager.getContext().getDebuggerSession();
if (session != null && session.isAttached()) {
- HotSwapStatistics.logHotSwapCalled(project, HotSwapStatistics.HotSwapSource.RELOAD_ALL);
+ HotSwapStatistics.logHotSwapCalled(project, HotSwapSource.RELOAD_ALL);
HotSwapUI.getInstance(project).reloadChangedClasses(session, DebuggerSettings.getInstance().COMPILE_BEFORE_HOTSWAP);
}
}
diff --git a/java/debugger/impl/src/com/intellij/debugger/actions/ReloadFileAction.java b/java/debugger/impl/src/com/intellij/debugger/actions/ReloadFileAction.java
index 745b009e4210..d4bed3092017 100644
--- a/java/debugger/impl/src/com/intellij/debugger/actions/ReloadFileAction.java
+++ b/java/debugger/impl/src/com/intellij/debugger/actions/ReloadFileAction.java
@@ -11,6 +11,7 @@ import com.intellij.openapi.compiler.CompilerManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.xdebugger.impl.hotswap.HotSwapStatistics;
+import com.intellij.xdebugger.impl.rpc.HotSwapSource;
import org.jetbrains.annotations.NotNull;
public class ReloadFileAction extends CompileAction {
@@ -22,7 +23,7 @@ public class ReloadFileAction extends CompileAction {
if (files.length > 0) {
DebuggerSession session = DebuggerManagerEx.getInstanceEx(project).getContext().getDebuggerSession();
if (session != null) {
- HotSwapStatistics.logHotSwapCalled(project, HotSwapStatistics.HotSwapSource.RELOAD_FILE);
+ HotSwapStatistics.logHotSwapCalled(project, HotSwapSource.RELOAD_FILE);
HotSwapUI.getInstance(project).compileAndReload(session, files);
}
}
diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/HotSwapUIImpl.java b/java/debugger/impl/src/com/intellij/debugger/ui/HotSwapUIImpl.java
index 41b83ad4c8da..9706255c6b19 100644
--- a/java/debugger/impl/src/com/intellij/debugger/ui/HotSwapUIImpl.java
+++ b/java/debugger/impl/src/com/intellij/debugger/ui/HotSwapUIImpl.java
@@ -34,6 +34,7 @@ import com.intellij.util.containers.FileCollectionFactory;
import com.intellij.util.messages.MessageBusConnection;
import com.intellij.xdebugger.impl.hotswap.HotSwapStatistics;
import com.intellij.xdebugger.impl.hotswap.HotSwapStatusNotificationManager;
+import com.intellij.xdebugger.impl.rpc.HotSwapSource;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
@@ -176,7 +177,7 @@ public final class HotSwapUIImpl extends HotSwapUI {
statusListener.onCancel(sessions);
return;
}
- HotSwapStatistics.logHotSwapCalled(myProject, HotSwapStatistics.HotSwapSource.ON_REBUILD_ASK);
+ HotSwapStatistics.logHotSwapCalled(myProject, HotSwapSource.ON_REBUILD_ASK);
Set toReload = new HashSet<>(dialog.getSessionsToReload());
for (DebuggerSession session : modifiedClasses.keySet()) {
if (!toReload.contains(session)) {
@@ -404,7 +405,7 @@ public final class HotSwapUIImpl extends HotSwapUI {
if (listener == null) continue;
context.putUserData(HOT_SWAP_CALLBACK_KEY, listener);
if (alwaysDoHotSwapOnRebuild) {
- HotSwapStatistics.logHotSwapCalled(myProject, HotSwapStatistics.HotSwapSource.ON_REBUILD_AUTO);
+ HotSwapStatistics.logHotSwapCalled(myProject, HotSwapSource.ON_REBUILD_AUTO);
}
return;
}
diff --git a/platform/xdebugger-impl/backend/src/com/intellij/platform/debugger/impl/backend/hotswap/BackendXDebuggerHotSwapApi.kt b/platform/xdebugger-impl/backend/src/com/intellij/platform/debugger/impl/backend/hotswap/BackendXDebuggerHotSwapApi.kt
index 0dfd4298d16f..fe2503af2088 100644
--- a/platform/xdebugger-impl/backend/src/com/intellij/platform/debugger/impl/backend/hotswap/BackendXDebuggerHotSwapApi.kt
+++ b/platform/xdebugger-impl/backend/src/com/intellij/platform/debugger/impl/backend/hotswap/BackendXDebuggerHotSwapApi.kt
@@ -11,6 +11,7 @@ import com.intellij.platform.project.findProject
import com.intellij.xdebugger.impl.hotswap.HotSwapSessionImpl
import com.intellij.xdebugger.impl.hotswap.HotSwapSessionManagerImpl
import com.intellij.xdebugger.impl.hotswap.HotSwapStatistics
+import com.intellij.xdebugger.impl.rpc.HotSwapSource
import com.intellij.xdebugger.impl.rpc.XDebugHotSwapCurrentSessionStatus
import com.intellij.xdebugger.impl.rpc.XDebugHotSwapSessionId
import com.intellij.xdebugger.impl.rpc.XDebuggerHotSwapApi
@@ -41,7 +42,7 @@ internal class BackendXDebuggerHotSwapApi : XDebuggerHotSwapApi {
}
}
- override suspend fun performHotSwap(sessionId: XDebugHotSwapSessionId, source: HotSwapStatistics.HotSwapSource) {
+ override suspend fun performHotSwap(sessionId: XDebugHotSwapSessionId, source: HotSwapSource) {
val session = findValueById(sessionId, type = HowSwapSessionValueIdType) ?: return
HotSwapStatistics.logHotSwapCalled(session.project, source)
session.performHotSwap()
diff --git a/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/hotswap/FrontendHotSwapManager.kt b/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/hotswap/FrontendHotSwapManager.kt
index 38c9092a256d..0792b97c08e4 100644
--- a/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/hotswap/FrontendHotSwapManager.kt
+++ b/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/hotswap/FrontendHotSwapManager.kt
@@ -5,12 +5,8 @@ import com.intellij.openapi.components.Service
import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
import com.intellij.platform.project.projectId
-import com.intellij.xdebugger.impl.hotswap.HotSwapStatistics
-import com.intellij.xdebugger.impl.hotswap.HotSwapVisibleStatus
import com.intellij.xdebugger.impl.hotswap.NOTIFICATION_TIME_SECONDS
-import com.intellij.xdebugger.impl.rpc.XDebugHotSwapCurrentSessionStatus
-import com.intellij.xdebugger.impl.rpc.XDebugHotSwapSessionId
-import com.intellij.xdebugger.impl.rpc.XDebuggerHotSwapApi
+import com.intellij.xdebugger.impl.rpc.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.delay
@@ -40,7 +36,7 @@ internal class FrontendHotSwapManager(private val project: Project, val coroutin
val currentStatus: XDebugHotSwapCurrentSessionStatus? get() = frontendStatusFlow.value
- fun performHotSwap(sessionId: XDebugHotSwapSessionId, source: HotSwapStatistics.HotSwapSource) {
+ fun performHotSwap(sessionId: XDebugHotSwapSessionId, source: HotSwapSource) {
coroutineScope.launch {
XDebuggerHotSwapApi.getInstance().performHotSwap(sessionId, source)
}
diff --git a/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/hotswap/HotSwapFloatingToolbarProvider.kt b/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/hotswap/HotSwapFloatingToolbarProvider.kt
index 4c83666409c8..a1b2ddbff012 100644
--- a/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/hotswap/HotSwapFloatingToolbarProvider.kt
+++ b/platform/xdebugger-impl/frontend/src/com/intellij/platform/debugger/impl/frontend/hotswap/HotSwapFloatingToolbarProvider.kt
@@ -22,9 +22,9 @@ import com.intellij.ui.AnimatedIcon
import com.intellij.ui.PopupHandler
import com.intellij.util.ui.JBUI
import com.intellij.xdebugger.XDebuggerBundle
-import com.intellij.xdebugger.impl.hotswap.HotSwapStatistics
import com.intellij.xdebugger.impl.hotswap.HotSwapUiExtension
-import com.intellij.xdebugger.impl.hotswap.HotSwapVisibleStatus
+import com.intellij.xdebugger.impl.rpc.HotSwapSource
+import com.intellij.xdebugger.impl.rpc.HotSwapVisibleStatus
import com.intellij.xdebugger.impl.rpc.XDebugHotSwapCurrentSessionStatus
import icons.PlatformDebuggerImplIcons
import kotlinx.coroutines.Dispatchers
@@ -64,7 +64,7 @@ internal class HotSwapModifiedFilesAction : AnAction(), DumbAware {
val project = e.project ?: return
val status = getCurrentStatus(project) ?: return
if (!status.hasChanges) return
- FrontendHotSwapManager.getInstance(project).performHotSwap(status.sessionId, HotSwapStatistics.HotSwapSource.RELOAD_MODIFIED_ACTION)
+ FrontendHotSwapManager.getInstance(project).performHotSwap(status.sessionId, HotSwapSource.RELOAD_MODIFIED_ACTION)
}
override fun update(e: AnActionEvent) {
@@ -93,7 +93,7 @@ private class HotSwapWithRebuildAction : AnAction(), CustomComponentAction, Dumb
override fun actionPerformed(e: AnActionEvent) {
val project = e.project ?: return
val status = getCurrentStatus(project) ?: return
- FrontendHotSwapManager.getInstance(project).performHotSwap(status.sessionId, HotSwapStatistics.HotSwapSource.RELOAD_MODIFIED_BUTTON)
+ FrontendHotSwapManager.getInstance(project).performHotSwap(status.sessionId, HotSwapSource.RELOAD_MODIFIED_BUTTON)
}
override fun getActionUpdateThread() = ActionUpdateThread.EDT
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/rpc/XDebuggerHotSwapApi.kt b/platform/xdebugger-impl/rpc/src/com/intellij/platform/debugger/impl/rpc/XDebuggerHotSwapApi.kt
similarity index 79%
rename from platform/xdebugger-impl/src/com/intellij/xdebugger/impl/rpc/XDebuggerHotSwapApi.kt
rename to platform/xdebugger-impl/rpc/src/com/intellij/platform/debugger/impl/rpc/XDebuggerHotSwapApi.kt
index a4002214f6b3..97a9eff8015e 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/rpc/XDebuggerHotSwapApi.kt
+++ b/platform/xdebugger-impl/rpc/src/com/intellij/platform/debugger/impl/rpc/XDebuggerHotSwapApi.kt
@@ -5,8 +5,6 @@ import com.intellij.platform.project.ProjectId
import com.intellij.platform.rpc.Id
import com.intellij.platform.rpc.RemoteApiProviderService
import com.intellij.platform.rpc.UID
-import com.intellij.xdebugger.impl.hotswap.HotSwapStatistics
-import com.intellij.xdebugger.impl.hotswap.HotSwapVisibleStatus
import fleet.rpc.RemoteApi
import fleet.rpc.Rpc
import fleet.rpc.remoteApiDescriptor
@@ -18,7 +16,7 @@ import org.jetbrains.annotations.ApiStatus
@Rpc
interface XDebuggerHotSwapApi : RemoteApi {
suspend fun currentSessionStatus(projectId: ProjectId): Flow
- suspend fun performHotSwap(sessionId: XDebugHotSwapSessionId, source: HotSwapStatistics.HotSwapSource)
+ suspend fun performHotSwap(sessionId: XDebugHotSwapSessionId, source: HotSwapSource)
suspend fun hide(projectId: ProjectId)
companion object {
@@ -36,3 +34,19 @@ data class XDebugHotSwapSessionId(override val uid: UID) : Id
@ApiStatus.Internal
@Serializable
data class XDebugHotSwapCurrentSessionStatus(val sessionId: XDebugHotSwapSessionId, val status: HotSwapVisibleStatus)
+
+@ApiStatus.Internal
+enum class HotSwapVisibleStatus {
+ NO_CHANGES, CHANGES_READY, IN_PROGRESS, SUCCESS, HIDDEN
+}
+
+@ApiStatus.Internal
+@Serializable
+enum class HotSwapSource {
+ RELOAD_FILE,
+ RELOAD_ALL,
+ ON_REBUILD_AUTO,
+ ON_REBUILD_ASK,
+ RELOAD_MODIFIED_ACTION,
+ RELOAD_MODIFIED_BUTTON,
+}
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/hotswap/HotSwapSessionManagerImpl.kt b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/hotswap/HotSwapSessionManagerImpl.kt
index 05518d068f90..e3051195eeb0 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/hotswap/HotSwapSessionManagerImpl.kt
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/hotswap/HotSwapSessionManagerImpl.kt
@@ -8,6 +8,7 @@ import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Disposer
import com.intellij.platform.util.coroutines.childScope
import com.intellij.xdebugger.hotswap.*
+import com.intellij.xdebugger.impl.rpc.HotSwapVisibleStatus
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.cancel
import kotlinx.coroutines.flow.MutableStateFlow
@@ -98,11 +99,6 @@ class HotSwapSessionManagerImpl private constructor(private val project: Project
@ApiStatus.Internal
data class CurrentSessionState(val session: HotSwapSessionImpl<*>, val status: HotSwapVisibleStatus)
-@ApiStatus.Internal
-enum class HotSwapVisibleStatus {
- NO_CHANGES, CHANGES_READY, IN_PROGRESS, SUCCESS, HIDDEN
-}
-
private val logger = logger>()
private val COMPLETED_STATUS: HotSwapVisibleStatus? = null
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/hotswap/HotSwapStatistics.kt b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/hotswap/HotSwapStatistics.kt
index f768f3e0de14..8b6d0fe586e0 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/hotswap/HotSwapStatistics.kt
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/hotswap/HotSwapStatistics.kt
@@ -5,13 +5,13 @@ import com.intellij.internal.statistic.eventLog.EventLogGroup
import com.intellij.internal.statistic.eventLog.events.EventFields
import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector
import com.intellij.openapi.project.Project
-import kotlinx.serialization.Serializable
+import com.intellij.xdebugger.impl.rpc.HotSwapSource
import org.jetbrains.annotations.ApiStatus
@Suppress("PublicApiImplicitType")
@ApiStatus.Internal
object HotSwapStatistics : CounterUsagesCollector() {
- private val group = EventLogGroup("debugger.hotswap", 1)
+ private val group = EventLogGroup("debugger.hotswap", 2)
private val hotSwapCalled = group.registerEvent("hotswap.called", EventFields.Enum("source"))
private val hotSwapStatus = group.registerEvent("hotswap.finished", EventFields.Enum("status"))
@@ -32,16 +32,6 @@ object HotSwapStatistics : CounterUsagesCollector() {
@JvmStatic
fun logClassesReloaded(project: Project, count: Int) = hotSwapClassesNumber.log(project, count)
- @Serializable
- enum class HotSwapSource {
- RELOAD_FILE,
- RELOAD_ALL,
- ON_REBUILD_AUTO,
- ON_REBUILD_ASK,
- RELOAD_MODIFIED_ACTION,
- RELOAD_MODIFIED_BUTTON,
- }
-
enum class HotSwapStatus {
SUCCESS,
COMPILATION_FAILURE,
diff --git a/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/impl/hotswap/HotSwapSessionManagerTest.kt b/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/impl/hotswap/HotSwapSessionManagerTest.kt
index 8124467132f2..73fa7c86d395 100644
--- a/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/impl/hotswap/HotSwapSessionManagerTest.kt
+++ b/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/impl/hotswap/HotSwapSessionManagerTest.kt
@@ -8,6 +8,7 @@ import com.intellij.openapi.Disposable
import com.intellij.openapi.util.Disposer
import com.intellij.testFramework.HeavyPlatformTestCase
import com.intellij.xdebugger.hotswap.*
+import com.intellij.xdebugger.impl.rpc.HotSwapVisibleStatus
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.ReceiveChannel