Skip to content

Commit f0b5cee

Browse files
authored
Merge pull request #2635 from digma-ai/improove-auto-reload
improve auto reload registration
2 parents e3145e3 + 1e84996 commit f0b5cee

File tree

20 files changed

+129
-84
lines changed

20 files changed

+129
-84
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -910,6 +910,7 @@ class ActivityMonitor(private val project: Project, cs: CoroutineScope) : Dispos
910910
val ideVersion = ideInfo.fullVersion
911911
val ideBuildNumber = ideInfo.build.asString()
912912
val pluginVersion = SemanticVersionUtil.getPluginVersionWithoutBuildNumberAndPreRelease("unknown")
913+
val uiVersion = UIVersioningService.getInstance().getCurrentUiVersion()
913914
val isJcefSupported = JBCefApp.isSupported()
914915

915916
postHog?.set(
@@ -920,6 +921,7 @@ class ActivityMonitor(private val project: Project, cs: CoroutineScope) : Dispos
920921
"ide.version" to ideVersion,
921922
"ide.build" to ideBuildNumber,
922923
"plugin.version" to pluginVersion,
924+
"ui.version" to uiVersion,
923925
"user.type" to if (UniqueGeneratedUserId.isDevUser) "internal" else "external",
924926
"jcef.supported" to isJcefSupported,
925927
INSTALL_STATUS_PROPERTY_NAME to getCurrentInstallStatus()
@@ -1159,4 +1161,14 @@ class ActivityMonitor(private val project: Project, cs: CoroutineScope) : Dispos
11591161
}
11601162

11611163

1164+
fun setUIVersion(uiVersion: String) {
1165+
postHog?.set(
1166+
UniqueGeneratedUserId.userId,
1167+
mapOf(
1168+
"ui.version" to uiVersion
1169+
)
1170+
)
1171+
}
1172+
1173+
11621174
}

ide-common/src/main/kotlin/org/digma/intellij/plugin/reload/ReloadObserver.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,15 @@ class ReloadObserver(cs: CoroutineScope) {
7474

7575
fun register(project: Project, appName: String, jcefUiComponent: JComponent, parentDisposable: Disposable) {
7676

77+
Log.log(logger::trace, "register called for component {} in project {}", appName, project.name)
78+
7779
if (GraphicsEnvironment.isHeadless()) {
7880
Log.log(logger::trace, "GraphicsEnvironment is headless, not registering components")
7981
return
8082
}
8183

8284
if (!SystemInfo.isMac) {
83-
Log.log(logger::trace, "system is not mac, not registering components")
85+
Log.log(logger::trace, "system is not mac, not registering component {}", appName)
8486
return
8587
}
8688

@@ -89,9 +91,9 @@ class ReloadObserver(cs: CoroutineScope) {
8991
jcefUiComponent.addPropertyChangeListener(jcefPropertyChangeListener)
9092

9193
Disposer.register(parentDisposable) {
94+
Log.log(logger::trace, "registration removed for component {} in project {}", appName, project.name)
9295
jcefUiComponent.removePropertyChangeListener(jcefPropertyChangeListener)
9396
}
94-
9597
}
9698

9799

@@ -185,6 +187,7 @@ class ReloadObserver(cs: CoroutineScope) {
185187
}
186188

187189
} catch (e: Throwable) {
190+
Log.warnWithException(logger,e,"error in ReloadObserver.checkChangesAndReload")
188191
ErrorReporter.getInstance().reportError("ReloadObserver.checkChangesAndReload", e)
189192
}
190193
}

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

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ class UIVersioningService(val cs: CoroutineScope) : DisposableAdaptor {
187187
deleteUiBundle(getCurrentUiVersion())
188188
setCurrentUiVersion(latestDownloadedUiVersion)
189189
setLatestDownloadedVersion(null)
190+
191+
findActiveProject()?.let {
192+
ActivityMonitor.getInstance(it).setUIVersion(getCurrentUiVersion())
193+
}
190194
} else {
191195
//something is wrong, we have the property latestDownloadedVersion but there is no file, maybe it was deleted.
192196
//reset latestDownloadedVersion
@@ -220,6 +224,9 @@ class UIVersioningService(val cs: CoroutineScope) : DisposableAdaptor {
220224
if (unpackUiBundle()) {
221225
deleteUiBundle(getCurrentUiVersion())
222226
setCurrentUiVersion(bundledUiVersion)
227+
findActiveProject()?.let {
228+
ActivityMonitor.getInstance(it).setUIVersion(getCurrentUiVersion())
229+
}
223230
} else {
224231
Log.log(logger::warn, "could not unpack bundled ui version {}", bundledUiVersion)
225232
}
@@ -240,13 +247,16 @@ class UIVersioningService(val cs: CoroutineScope) : DisposableAdaptor {
240247
)
241248
unpackUiBundle()
242249
setCurrentUiVersion(bundledUiVersion)
250+
findActiveProject()?.let {
251+
ActivityMonitor.getInstance(it).setUIVersion(getCurrentUiVersion())
252+
}
243253
}
244254

245255
} catch (e: Throwable) {
246256
Log.warnWithException(logger, e, "failed validating ui bundle file")
247257
ErrorReporter.getInstance().reportError("UIVersioningService.validateUiBundleExistsAndUpdatePath", e)
248258

249-
//we don't know what went wrong, So as fallback use the packaged ui bundle
259+
//we don't know what went wrong, So use the packaged ui bundle as fallback
250260
deleteUiBundle(getCurrentUiVersion())
251261
getLatestDownloadedVersion()?.let {
252262
deleteUiBundle(it)
@@ -255,6 +265,9 @@ class UIVersioningService(val cs: CoroutineScope) : DisposableAdaptor {
255265

256266
unpackUiBundle()
257267
setCurrentUiVersion(bundledUiVersion)
268+
findActiveProject()?.let {
269+
ActivityMonitor.getInstance(it).setUIVersion(getCurrentUiVersion())
270+
}
258271

259272
}
260273
}
@@ -411,6 +424,11 @@ class UIVersioningService(val cs: CoroutineScope) : DisposableAdaptor {
411424

412425
deleteUiBundle(getCurrentUiVersion())
413426
setCurrentUiVersion(uiVersion)
427+
428+
findActiveProject()?.let {
429+
ActivityMonitor.getInstance(it).setUIVersion(getCurrentUiVersion())
430+
}
431+
414432
service<ReloadService>().reloadAllProjects(ReloadSource.UI_UPDATE)
415433
} else {
416434
ErrorReporter.getInstance().reportError(
@@ -501,11 +519,6 @@ class UIVersioningService(val cs: CoroutineScope) : DisposableAdaptor {
501519
val responseCode: Int = connection.getResponseCode()
502520

503521
if (responseCode != HttpURLConnection.HTTP_OK) {
504-
ErrorReporter.getInstance().reportError(
505-
null, "UIVersioningService.downloadAndCopyUiBundleFile",
506-
"download from $url",
507-
mapOf("responseCode" to responseCode.toString())
508-
)
509522
Log.log(logger::warn, "error downloading ui bundle {}, response code {}", url, responseCode)
510523
throw RuntimeException("could not download file from $url, response code $responseCode")
511524
} else {
@@ -532,7 +545,11 @@ class UIVersioningService(val cs: CoroutineScope) : DisposableAdaptor {
532545
return true
533546

534547
} catch (e: Exception) {
535-
ErrorReporter.getInstance().reportError("UIVersioningService.downloadAndCopyUiBundleFile", e)
548+
ErrorReporter.getInstance().reportError(
549+
"UIVersioningService.downloadAndCopyUiBundleFile", e, mapOf(
550+
"download url" to url
551+
)
552+
)
536553
Log.warnWithException(logger, e, "could not download file {}", url)
537554
return false
538555
} finally {

src/main/java/org/digma/intellij/plugin/dashboard/DashboardFileEditor.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package org.digma.intellij.plugin.dashboard;
22

3-
import com.intellij.openapi.application.ApplicationManager;
43
import com.intellij.openapi.fileEditor.*;
54
import com.intellij.openapi.project.Project;
65
import com.intellij.openapi.util.*;
76
import com.intellij.openapi.vfs.VirtualFile;
87
import com.intellij.ui.jcef.JBCefApp;
9-
import org.digma.intellij.plugin.reload.ReloadObserver;
108
import org.digma.intellij.plugin.ui.jcef.*;
119
import org.jetbrains.annotations.*;
1210

@@ -29,7 +27,7 @@ public DashboardFileEditor(Project project, DashboardVirtualFile file) {
2927
this.file = file;
3028
jCefComponent = createJcefComponent(project, file);
3129
if (jCefComponent != null) {
32-
ApplicationManager.getApplication().getService(ReloadObserver.class).register(project, DASHBOARD_APP_NAME + "." + file.getName(), jCefComponent.getComponent(), this);
30+
jCefComponent.registerForReloadObserver(DASHBOARD_APP_NAME + "." + file.getName());
3331
}
3432
}
3533

src/main/java/org/digma/intellij/plugin/documentation/DocumentationEnvJsTemplateBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.digma.intellij.plugin.documentation;
22

33
import com.intellij.openapi.project.Project;
4-
import org.digma.intellij.plugin.ui.jcef.*;
4+
import org.digma.intellij.plugin.ui.jcef.BaseEnvJsTemplateBuilder;
55
import org.jetbrains.annotations.NotNull;
66

77
import java.util.Map;

src/main/java/org/digma/intellij/plugin/documentation/DocumentationFileEditor.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package org.digma.intellij.plugin.documentation;
22

3-
import com.intellij.openapi.application.ApplicationManager;
43
import com.intellij.openapi.fileEditor.*;
54
import com.intellij.openapi.project.Project;
65
import com.intellij.openapi.util.*;
76
import com.intellij.openapi.vfs.VirtualFile;
87
import com.intellij.ui.jcef.JBCefApp;
9-
import org.digma.intellij.plugin.reload.ReloadObserver;
108
import org.digma.intellij.plugin.ui.jcef.*;
119
import org.jetbrains.annotations.*;
1210

@@ -29,7 +27,7 @@ public DocumentationFileEditor(Project project, DocumentationVirtualFile file) {
2927
this.file = file;
3028
jCefComponent = createJcefComponent(project, file);
3129
if (jCefComponent != null) {
32-
ApplicationManager.getApplication().getService(ReloadObserver.class).register(project, DOCUMENTATION_APP_NAME + "." + file.getName(), jCefComponent.getComponent(), this);
30+
jCefComponent.registerForReloadObserver(DOCUMENTATION_APP_NAME + "." + file.getName());
3331
}
3432
}
3533

src/main/java/org/digma/intellij/plugin/jaegerui/JaegerUIFileEditor.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package org.digma.intellij.plugin.jaegerui;
22

3-
import com.intellij.openapi.application.ApplicationManager;
43
import com.intellij.openapi.fileEditor.*;
54
import com.intellij.openapi.project.Project;
65
import com.intellij.openapi.util.*;
76
import com.intellij.openapi.vfs.VirtualFile;
87
import com.intellij.ui.jcef.JBCefApp;
9-
import org.digma.intellij.plugin.reload.ReloadObserver;
108
import org.digma.intellij.plugin.ui.jcef.*;
119
import org.jetbrains.annotations.*;
1210

@@ -29,7 +27,7 @@ public JaegerUIFileEditor(Project project, JaegerUIVirtualFile file) {
2927
this.file = file;
3028
jCefComponent = createJcefComponent(project, file);
3129
if (jCefComponent != null) {
32-
ApplicationManager.getApplication().getService(ReloadObserver.class).register(project, JAEGER_UI_APP_NAME + "." + file.getName(), jCefComponent.getComponent(), this);
30+
jCefComponent.registerForReloadObserver(JAEGER_UI_APP_NAME + "." + file.getName());
3331
}
3432
}
3533

src/main/java/org/digma/intellij/plugin/jaegerui/JaegerUiProxyResourceHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import org.jetbrains.annotations.*;
1515

1616
import java.net.*;
17-
import java.util.*;
17+
import java.util.HashMap;
1818
import java.util.stream.Collectors;
1919

2020
public class JaegerUiProxyResourceHandler implements CefResourceHandler {

src/main/java/org/digma/intellij/plugin/jaegerui/model/incoming/GoToSpanMessage.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
package org.digma.intellij.plugin.jaegerui.model.incoming;
22

3-
import com.fasterxml.jackson.annotation.JsonAutoDetect;
4-
import com.fasterxml.jackson.annotation.JsonCreator;
5-
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
6-
import com.fasterxml.jackson.annotation.JsonInclude;
7-
import com.fasterxml.jackson.annotation.JsonProperty;
3+
import com.fasterxml.jackson.annotation.*;
84
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
95

106

src/main/java/org/digma/intellij/plugin/jaegerui/model/outgoing/Insight.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package org.digma.intellij.plugin.jaegerui.model.outgoing;
22

33

4-
import com.fasterxml.jackson.annotation.JsonAutoDetect;
5-
import com.fasterxml.jackson.annotation.JsonCreator;
6-
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
7-
import com.fasterxml.jackson.annotation.JsonInclude;
8-
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.fasterxml.jackson.annotation.*;
95
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
106

117
@JsonIgnoreProperties(ignoreUnknown = true)

0 commit comments

Comments
 (0)