Skip to content

Commit f70aecd

Browse files
committed
reload jaeger and dashboard
1 parent 8d69b1b commit f70aecd

File tree

3 files changed

+84
-9
lines changed

3 files changed

+84
-9
lines changed

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

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.digma.intellij.plugin.dashboard;
22

3+
import com.intellij.openapi.Disposable;
4+
import com.intellij.openapi.application.ApplicationManager;
35
import com.intellij.openapi.components.Service;
46
import com.intellij.openapi.diagnostic.Logger;
57
import com.intellij.openapi.fileEditor.FileEditorManager;
@@ -9,20 +11,29 @@
911
import org.digma.intellij.plugin.dashboard.incoming.GoToSpan;
1012
import org.digma.intellij.plugin.log.Log;
1113
import org.digma.intellij.plugin.posthog.*;
14+
import org.digma.intellij.plugin.reload.*;
1215
import org.digma.intellij.plugin.scope.*;
1316
import org.jetbrains.annotations.NotNull;
1417

1518
import java.io.InputStream;
1619
import java.util.*;
1720

21+
import static org.digma.intellij.plugin.dashboard.DashboardVirtualFile.DASHBOARD_EDITOR_KEY;
22+
1823
@Service(Service.Level.PROJECT)
19-
public final class DashboardService {
24+
public final class DashboardService implements Disposable, ReloadableJCefContainer {
2025

2126
private final Logger logger = Logger.getInstance(DashboardService.class);
2227
private final Project project;
2328

2429
public DashboardService(Project project) {
2530
this.project = project;
31+
ApplicationManager.getApplication().getService(ReloadService.class).register(this, this);
32+
}
33+
34+
@Override
35+
public void dispose() {
36+
//nothing to do, used as parent disposable
2637
}
2738

2839
public static DashboardService getInstance(Project project) {
@@ -98,6 +109,35 @@ public void goToSpan(GoToSpan goToSpan) {
98109

99110
var span = goToSpan.payload();
100111

101-
ScopeManager.getInstance(project).changeScope(new SpanScope(span.spanCodeObjectId()),false,null,null,span.environment());
112+
ScopeManager.getInstance(project).changeScope(new SpanScope(span.spanCodeObjectId()), false, null, null, span.environment());
113+
}
114+
115+
116+
@Override
117+
public void reload() {
118+
119+
var files = Arrays.stream(FileEditorManager.getInstance(project).getOpenFiles()).filter(DashboardVirtualFile::isDashboardVirtualFile).toList();
120+
121+
var newFiles = new ArrayList<DashboardVirtualFile>();
122+
123+
files.forEach(oldFile -> {
124+
if (oldFile instanceof DashboardVirtualFile dashboardVirtualFile) {
125+
var newFile = new DashboardVirtualFile(dashboardVirtualFile.getName());
126+
newFile.setDashboardName(dashboardVirtualFile.getDashboardName());
127+
newFile.setPath(dashboardVirtualFile.getPath());
128+
DASHBOARD_EDITOR_KEY.set(newFile, DashboardFileEditorProvider.DASHBOARD_EDITOR_TYPE);
129+
newFiles.add(newFile);
130+
}
131+
});
132+
133+
files.forEach(file -> FileEditorManager.getInstance(project).closeFile(file));
134+
135+
newFiles.forEach(file -> FileEditorManager.getInstance(project).openFile(file));
136+
}
137+
138+
@NotNull
139+
@Override
140+
public Project getProject() {
141+
return project;
102142
}
103143
}

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

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

33
import com.intellij.openapi.Disposable;
4+
import com.intellij.openapi.application.ApplicationManager;
45
import com.intellij.openapi.diagnostic.Logger;
56
import com.intellij.openapi.fileEditor.FileEditorManager;
67
import com.intellij.openapi.project.Project;
@@ -14,15 +15,18 @@
1415
import org.digma.intellij.plugin.navigation.codenavigation.CodeNavigator;
1516
import org.digma.intellij.plugin.posthog.*;
1617
import org.digma.intellij.plugin.psi.*;
18+
import org.digma.intellij.plugin.reload.*;
1719
import org.digma.intellij.plugin.scope.*;
1820
import org.digma.intellij.plugin.settings.SettingsState;
1921
import org.digma.intellij.plugin.ui.model.TraceSample;
2022
import org.jetbrains.annotations.*;
2123

2224
import java.util.*;
2325

26+
import static org.digma.intellij.plugin.jaegerui.JaegerUIVirtualFile.JAEGER_UI_EDITOR_KEY;
2427

25-
public class JaegerUIService implements Disposable {
28+
29+
public class JaegerUIService implements Disposable, ReloadableJCefContainer {
2630

2731
private final Logger logger = Logger.getInstance(JaegerUIService.class);
2832

@@ -31,6 +35,7 @@ public class JaegerUIService implements Disposable {
3135

3236
public JaegerUIService(Project project) {
3337
this.project = project;
38+
ApplicationManager.getApplication().getService(ReloadService.class).register(this, this);
3439
}
3540

3641
@Override
@@ -237,4 +242,35 @@ private Map<String, List<Insight>> getInsights(@NotNull List<String> spanIds) {
237242
}
238243

239244

245+
@Override
246+
public void reload() {
247+
248+
var files = Arrays.stream(FileEditorManager.getInstance(project).getOpenFiles()).filter(JaegerUIVirtualFile::isJaegerUIVirtualFile).toList();
249+
250+
var newFiles = new ArrayList<JaegerUIVirtualFile>();
251+
252+
files.forEach(oldFile -> {
253+
if (oldFile instanceof JaegerUIVirtualFile jaegerUIVirtualFile) {
254+
var newFile = new JaegerUIVirtualFile(jaegerUIVirtualFile.getName());
255+
newFile.setJaegerBaseUrl(jaegerUIVirtualFile.getJaegerBaseUrl());
256+
newFile.setTraceId(jaegerUIVirtualFile.getTraceId());
257+
newFile.setTraceSamples(jaegerUIVirtualFile.getTraceSamples());
258+
newFile.setSpanName(jaegerUIVirtualFile.getSpanName());
259+
newFile.setSpanCodeObjectId(jaegerUIVirtualFile.getSpanCodeObjectId());
260+
newFile.setSendSearchQuery(jaegerUIVirtualFile.isSendSearchQuery());
261+
JAEGER_UI_EDITOR_KEY.set(newFile, JaegerUIFileEditorProvider.JAEGER_UI_EDITOR_TYPE);
262+
newFiles.add(newFile);
263+
}
264+
});
265+
266+
files.forEach(filo -> FileEditorManager.getInstance(project).closeFile(filo));
267+
268+
newFiles.forEach(file -> FileEditorManager.getInstance(project).openFile(file));
269+
}
270+
271+
@NotNull
272+
@Override
273+
public Project getProject() {
274+
return project;
275+
}
240276
}

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
import com.intellij.testFramework.LightVirtualFile;
77
import org.digma.intellij.plugin.common.DigmaVirtualFileMarker;
88
import org.digma.intellij.plugin.ui.model.TraceSample;
9-
import org.jetbrains.annotations.NotNull;
10-
import org.jetbrains.annotations.Nullable;
9+
import org.jetbrains.annotations.*;
1110

1211
import java.util.List;
1312

@@ -57,15 +56,15 @@ public static VirtualFile createVirtualFile(String jaegerBaseUrl, @NotNull List<
5756
return file;
5857
}
5958

60-
private void setTraceSamples(List<TraceSample> traceSamples) {
59+
public void setTraceSamples(List<TraceSample> traceSamples) {
6160
this.traceSamples = traceSamples;
6261
}
6362

64-
private void setTraceId(String traceId) {
63+
public void setTraceId(String traceId) {
6564
this.traceId = traceId;
6665
}
6766

68-
private void setJaegerBaseUrl(String jaegerBaseUrl) {
67+
public void setJaegerBaseUrl(String jaegerBaseUrl) {
6968
this.jaegerBaseUrl = jaegerBaseUrl;
7069
}
7170

@@ -81,7 +80,7 @@ public List<TraceSample> getTraceSamples() {
8180
return traceSamples;
8281
}
8382

84-
private void setSpanName(String spanName) {
83+
public void setSpanName(String spanName) {
8584
this.spanName = spanName;
8685
}
8786

0 commit comments

Comments
 (0)