Skip to content

Commit b76d438

Browse files
authored
Merge pull request #2252 from digma-ai/migrate-startup-activity-to-project-activity
migrate-startup-activity-to-project-activity Closes #1865
2 parents e6d6ad1 + cc39fde commit b76d438

File tree

23 files changed

+117
-102
lines changed

23 files changed

+117
-102
lines changed

ide-common/src/main/java/org/digma/intellij/plugin/analytics/AnalyticsServiceStarter.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
package org.digma.intellij.plugin.analytics;
22

33
import com.intellij.openapi.project.Project;
4-
import com.intellij.openapi.startup.StartupActivity;
54
import org.digma.intellij.plugin.common.Backgroundable;
5+
import org.digma.intellij.plugin.startup.DigmaProjectActivity;
66
import org.jetbrains.annotations.NotNull;
77

88
/**
99
* Initialize AnalyticsService early as possible
1010
*/
11-
public class AnalyticsServiceStarter implements StartupActivity.DumbAware {
11+
public class AnalyticsServiceStarter extends DigmaProjectActivity {
12+
1213

1314
@Override
14-
public void runActivity(@NotNull Project project) {
15+
public void executeProjectStartup(@NotNull Project project) {
1516
Backgroundable.ensureBackgroundWithoutReadAccess(project, "initializing analytics service", () -> {
1617
//start AnalyticsServiceSettingsWatcher so it will start listening to settings change events
1718
AnalyticsServiceSettingsWatcher.getInstance();

ide-common/src/main/java/org/digma/intellij/plugin/common/StartupStartupActivity.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,27 @@
22

33
import com.intellij.ide.util.RunOnceUtil;
44
import com.intellij.openapi.project.*;
5-
import com.intellij.openapi.startup.StartupActivity;
65
import org.digma.intellij.plugin.posthog.ActivityMonitor;
76
import org.digma.intellij.plugin.session.SessionMetadataProperties;
7+
import org.digma.intellij.plugin.startup.DigmaProjectActivity;
88
import org.digma.intellij.plugin.ui.ToolWindowShower;
99
import org.jetbrains.annotations.NotNull;
1010

1111
import static org.digma.intellij.plugin.session.SessionMetadataPropertiesKt.getPluginLoadedKey;
1212

13-
public class StartupStartupActivity implements StartupActivity.DumbAware {
13+
public class StartupStartupActivity extends DigmaProjectActivity {
1414

1515
private static final String RUN_ONCE_ID = "org.digma.runonce.opentoolwindow";
1616

17+
1718
@Override
18-
public void runActivity(@NotNull Project project) {
19+
public void executeProjectStartup(@NotNull Project project) {
1920
RunOnceUtil.runOnceForApp(RUN_ONCE_ID, () -> {
2021
ActivityMonitor.getInstance(project).registerFirstTimePluginLoaded();
2122
project.getService(DumbService.class).runWhenSmart(() -> EDT.ensureEDT(() -> ToolWindowShower.getInstance(project).showToolWindow()));
2223
});
2324
ActivityMonitor.getInstance(project).registerPluginLoaded();
2425
SessionMetadataProperties.getInstance().put(getPluginLoadedKey(project), true);
2526
}
27+
2628
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package org.digma.intellij.plugin.digmathon
22

33
import com.intellij.openapi.project.Project
4-
import com.intellij.openapi.startup.StartupActivity
4+
import org.digma.intellij.plugin.startup.DigmaProjectActivity
55

6-
class DigmathonStartup : StartupActivity.DumbAware {
6+
class DigmathonStartup : DigmaProjectActivity() {
77

8-
override fun runActivity(project: Project) {
8+
override fun executeProjectStartup(project: Project) {
99
DigmathonService.getInstance()
1010
}
1111
}

ide-common/src/main/kotlin/org/digma/intellij/plugin/posthog/ActivityMonitorStarter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package org.digma.intellij.plugin.posthog
22

33
import com.intellij.openapi.project.Project
4-
import com.intellij.openapi.startup.StartupActivity
4+
import org.digma.intellij.plugin.startup.DigmaProjectActivity
55

6-
class ActivityMonitorStarter : StartupActivity.Background {
6+
class ActivityMonitorStarter : DigmaProjectActivity() {
77

88
//try to start ActivityMonitor as early as possible. although if the digma tool window is opened on start it will call
99
// ActivityMonitor on UI thread
10-
override fun runActivity(project: Project) {
10+
override fun executeProjectStartup(project: Project) {
1111
ActivityMonitor.getInstance(project)
1212
}
1313

ide-common/src/main/kotlin/org/digma/intellij/plugin/posthog/ContainerEngineStartupActivity.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@ package org.digma.intellij.plugin.posthog
22

33
import com.intellij.execution.configurations.GeneralCommandLine
44
import com.intellij.execution.util.ExecUtil
5-
import com.intellij.openapi.diagnostic.Logger
65
import com.intellij.openapi.project.Project
7-
import com.intellij.openapi.startup.StartupActivity
86
import org.digma.intellij.plugin.errorreporting.ErrorReporter
97
import org.digma.intellij.plugin.log.Log
8+
import org.digma.intellij.plugin.startup.DigmaProjectActivity
109

11-
class ContainerEngineStartupActivity : StartupActivity {
12-
private val logger = Logger.getInstance(ContainerEngineStartupActivity::class.java)
10+
class ContainerEngineStartupActivity : DigmaProjectActivity() {
1311
private val isWindows: Boolean = System.getProperty("os.name").startsWith("windows", true)
1412

1513
enum class ContainerEngine {
@@ -18,7 +16,7 @@ class ContainerEngineStartupActivity : StartupActivity {
1816
UNKNOWN
1917
}
2018

21-
override fun runActivity(project: Project) {
19+
override fun executeProjectStartup(project: Project) {
2220
val containerPlatform = getInstalled(project).toString().lowercase()
2321
ActivityMonitor.getInstance(project).registerContainerEngine(containerPlatform)
2422
}
@@ -32,6 +30,8 @@ class ContainerEngineStartupActivity : StartupActivity {
3230

3331
return ContainerEngine.UNKNOWN
3432
}
33+
34+
3535
private fun getExecPath(project: Project, executable: String): String ? {
3636
val cmd = GeneralCommandLine(if (isWindows) "where" else "which")
3737
cmd.addParameter(executable)

ide-common/src/main/kotlin/org/digma/intellij/plugin/posthog/PerformanceMetricsPosthogEventStartupActivity.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import com.intellij.openapi.components.Service
66
import com.intellij.openapi.components.service
77
import com.intellij.openapi.diagnostic.Logger
88
import com.intellij.openapi.project.Project
9-
import com.intellij.openapi.startup.StartupActivity
109
import kotlinx.coroutines.CoroutineScope
1110
import kotlinx.coroutines.delay
1211
import kotlinx.coroutines.isActive
@@ -20,13 +19,15 @@ import org.digma.intellij.plugin.errorreporting.ErrorReporter
2019
import org.digma.intellij.plugin.log.Log
2120
import org.digma.intellij.plugin.model.rest.version.PerformanceMetricsResponse
2221
import org.digma.intellij.plugin.persistence.PersistenceService
22+
import org.digma.intellij.plugin.startup.DigmaProjectActivity
2323
import java.util.concurrent.atomic.AtomicBoolean
2424
import kotlin.time.Duration
2525
import kotlin.time.Duration.Companion.hours
2626
import kotlin.time.Duration.Companion.minutes
2727

28-
class PerformanceMetricsPosthogEventStartupActivity : StartupActivity {
29-
override fun runActivity(project: Project) {
28+
class PerformanceMetricsPosthogEventStartupActivity : DigmaProjectActivity() {
29+
30+
override fun executeProjectStartup(project: Project) {
3031
service<ContinuousPerformanceMetricsReporter>().start()
3132
}
3233
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.digma.intellij.plugin.startup
2+
3+
import com.intellij.openapi.diagnostic.Logger
4+
import com.intellij.openapi.project.Project
5+
import com.intellij.openapi.startup.ProjectActivity
6+
import org.digma.intellij.plugin.errorreporting.ErrorReporter
7+
import org.digma.intellij.plugin.log.Log
8+
9+
abstract class DigmaProjectActivity : ProjectActivity {
10+
11+
protected val logger = Logger.getInstance(this::class.java)
12+
13+
abstract fun executeProjectStartup(project: Project)
14+
15+
override suspend fun execute(project: Project) {
16+
runCatching {
17+
Log.log(logger::trace, project, "Project activity {} started", this::class.java.simpleName)
18+
executeProjectStartup(project)
19+
Log.log(logger::trace, project, "Project activity {} ended", this::class.java.simpleName)
20+
}.onFailure {
21+
ErrorReporter.getInstance().reportError(project, "DigmaProjectActivity.execute", it)
22+
}
23+
}
24+
}

ide-common/src/main/kotlin/org/digma/intellij/plugin/updates/AggressiveUpdateService.kt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import com.intellij.openapi.components.Service
66
import com.intellij.openapi.components.service
77
import com.intellij.openapi.diagnostic.Logger
88
import com.intellij.openapi.project.Project
9-
import com.intellij.openapi.startup.StartupActivity
109
import io.ktor.utils.io.CancellationException
1110
import kotlinx.coroutines.Job
1211
import kotlinx.coroutines.cancel
@@ -29,7 +28,6 @@ import org.digma.intellij.plugin.model.rest.version.BackendDeploymentType
2928
import org.digma.intellij.plugin.model.rest.version.VersionResponse
3029
import org.digma.intellij.plugin.posthog.ActivityMonitor
3130
import org.digma.intellij.plugin.settings.InternalFileSettings
32-
import org.digma.intellij.plugin.updates.AggressiveUpdateService.Companion.getInstance
3331
import org.digma.intellij.plugin.updates.CurrentUpdateState.OK
3432
import org.digma.intellij.plugin.updates.CurrentUpdateState.UPDATE_BACKEND
3533
import org.digma.intellij.plugin.updates.CurrentUpdateState.UPDATE_BOTH
@@ -406,10 +404,3 @@ class AggressiveUpdateService(val project: Project) : Disposable {
406404

407405

408406
data class PublicUpdateState(val updateState: CurrentUpdateState, val backendDeploymentType: BackendDeploymentType)
409-
410-
411-
class AggressiveUpdateServiceStarter : StartupActivity.DumbAware {
412-
override fun runActivity(project: Project) {
413-
getInstance(project)
414-
}
415-
}

jvm-common/src/main/kotlin/org/digma/intellij/plugin/idea/deps/ModulesDepsService.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import com.intellij.openapi.module.ModuleManager
77
import com.intellij.openapi.project.Project
88
import com.intellij.openapi.roots.LibraryOrderEntry
99
import com.intellij.openapi.roots.ModuleRootManager
10-
import com.intellij.openapi.startup.StartupActivity
1110
import org.digma.intellij.plugin.errorreporting.ErrorReporter
1211
import org.digma.intellij.plugin.posthog.ActivityMonitor
1312
import org.digma.intellij.plugin.posthog.MonitoredFramework
13+
import org.digma.intellij.plugin.startup.DigmaProjectActivity
1414
import org.jetbrains.annotations.NotNull
1515
import java.util.Timer
1616
import java.util.TimerTask
@@ -406,8 +406,8 @@ class ModulesDepsService(private val project: Project) : Disposable {
406406
}
407407
}
408408

409-
class ModuleDepsStarter : StartupActivity {
410-
override fun runActivity(project: Project) {
409+
class ModuleDepsStarter : DigmaProjectActivity() {
410+
override fun executeProjectStartup(project: Project) {
411411
// its enough just call getInstance and it will be initialized
412412
ModulesDepsService.getInstance(project)
413413
}

jvm-common/src/main/kotlin/org/digma/intellij/plugin/idea/execution/OTELJarProviderStartup.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ package org.digma.intellij.plugin.idea.execution
22

33
import com.intellij.openapi.components.service
44
import com.intellij.openapi.project.Project
5-
import com.intellij.openapi.startup.StartupActivity
5+
import org.digma.intellij.plugin.startup.DigmaProjectActivity
66

7-
class OTELJarProviderStartup : StartupActivity {
8-
override fun runActivity(project: Project) {
7+
class OTELJarProviderStartup : DigmaProjectActivity() {
8+
9+
override fun executeProjectStartup(project: Project) {
910
//just call the service so its initializes if it's the first IDE startup.
1011
//opening more projects will do nothing because it's an application service.
1112
service<OTELJarProvider>()

0 commit comments

Comments
 (0)