Skip to content

Commit 7149066

Browse files
committed
Add backward comp
1 parent 6ec3ee9 commit 7149066

File tree

6 files changed

+130
-30
lines changed

6 files changed

+130
-30
lines changed

analytics-provider/src/main/java/org/digma/intellij/plugin/analytics/AnalyticsProvider.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,11 @@ public interface AnalyticsProvider extends Closeable {
123123

124124
HttpResponse lowLevelCall(HttpRequest request);
125125

126-
String getHighlightsPerformance(HighlightsRequest request);
126+
String getHighlightsPerformance(Map<String, Object> queryParams);
127+
String getHighlightsTopInsights(Map<String, Object> queryParams);
127128

128-
String getHighlightsTopInsights(HighlightsRequest request);
129+
String getHighlightsPerformanceV2(HighlightsRequest request);
130+
String getHighlightsTopInsightsV2(HighlightsRequest request);
129131

130132
String getHighlightsImpact(HighlightsRequest request);
131133
}

analytics-provider/src/main/java/org/digma/intellij/plugin/analytics/RestAnalyticsProvider.java

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ public VersionResponse getVersions(VersionRequest request) {
208208

209209
@Override
210210
public AboutResult getAbout() {
211-
return execute(client.analyticsProvider::getAbout);
211+
return execute(() -> client.analyticsProvider.getAbout());
212212
}
213213

214214
@Override
@@ -311,20 +311,30 @@ public InsightsStatsResult getInsightsStats(Map<String, Object> queryParams) {
311311
}
312312

313313
@Override
314-
public String getHighlightsPerformance(HighlightsRequest request) {
315-
return execute(() -> client.analyticsProvider.getHighlightsPerformance(request));
314+
public String getHighlightsPerformance(Map<String, Object> queryParams) {
315+
return execute(() -> client.analyticsProvider.getHighlightsPerformance(queryParams));
316316
}
317317

318318
@Override
319-
public String getHighlightsTopInsights(HighlightsRequest request) {
320-
return execute(() -> client.analyticsProvider.getHighlightsTopInsights(request));
319+
public String getHighlightsTopInsights(Map<String, Object> queryParams) {
320+
return execute(() -> client.analyticsProvider.getHighlightsTopInsights(queryParams));
321321
}
322322

323323
@Override
324324
public String getHighlightsImpact(HighlightsRequest request) {
325325
return execute(() -> client.analyticsProvider.getHighlightsImpact(request));
326326
}
327327

328+
@Override
329+
public String getHighlightsPerformanceV2(HighlightsRequest request) {
330+
return execute(() -> client.analyticsProvider.getHighlightsPerformanceV2(request));
331+
}
332+
333+
@Override
334+
public String getHighlightsTopInsightsV2(HighlightsRequest request) {
335+
return execute(() -> client.analyticsProvider.getHighlightsTopInsightsV2(request));
336+
}
337+
328338
@Override
329339
public HttpResponse lowLevelCall(HttpRequest request) {
330340

@@ -878,20 +888,33 @@ Call<ResponseBody> setInsightCustomStartTime(
878888
@GET("/insights/statistics")
879889
Call<InsightsStatsResult> getInsightsStats(@QueryMap Map<String, Object> fields);
880890

891+
@Headers({
892+
"Accept: application/+json",
893+
"Content-Type:application/json"
894+
})
895+
@GET("/highlights/performance")
896+
Call<String> getHighlightsPerformance(@QueryMap Map<String, Object> fields);
897+
898+
@Headers({
899+
"Accept: application/+json",
900+
"Content-Type:application/json"
901+
})
902+
@GET("/highlights/topinsights")
903+
Call<String> getHighlightsTopInsights(@QueryMap Map<String, Object> fields);
881904

882905
@Headers({
883906
"Accept: application/+json",
884907
"Content-Type:application/json"
885908
})
886909
@POST("/highlights/performance")
887-
Call<String> getHighlightsPerformance(@Body HighlightsRequest request);
910+
Call<String> getHighlightsPerformanceV2(@Body HighlightsRequest request);
888911

889912
@Headers({
890913
"Accept: application/+json",
891914
"Content-Type:application/json"
892915
})
893916
@POST("/highlights/topinsights")
894-
Call<String> getHighlightsTopInsights(@Body HighlightsRequest request);
917+
Call<String> getHighlightsTopInsightsV2(@Body HighlightsRequest request);
895918

896919
@Headers({
897920
"Accept: application/+json",

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

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -410,16 +410,24 @@ public PerformanceMetricsResponse getPerformanceMetrics() throws AnalyticsServic
410410
return executeCatching(() -> analyticsProviderProxy.getPerformanceMetrics());
411411
}
412412

413-
public String getHighlightsImpact(HighlightsRequest request) throws AnalyticsServiceException {
414-
return executeCatching(() -> analyticsProviderProxy.getHighlightsImpact(request));
413+
public String getHighlightsPerformance(@NotNull Map<String, Object> queryParams) throws AnalyticsServiceException {
414+
return executeCatching(() -> analyticsProviderProxy.getHighlightsPerformance(queryParams));
415+
}
416+
417+
public String getHighlightsTopInsights(@NotNull Map<String, Object> queryParams) throws AnalyticsServiceException {
418+
return executeCatching(() -> analyticsProviderProxy.getHighlightsTopInsights(queryParams));
415419
}
416420

417-
public String getHighlightsPerformance(HighlightsRequest request) throws AnalyticsServiceException {
418-
return executeCatching(() -> analyticsProviderProxy.getHighlightsPerformance(request));
421+
public String getHighlightsPerformanceV2(HighlightsRequest request) throws AnalyticsServiceException {
422+
return executeCatching(() -> analyticsProviderProxy.getHighlightsPerformanceV2(request));
419423
}
420424

421-
public String getHighlightsTopInsights(HighlightsRequest request) throws AnalyticsServiceException {
422-
return executeCatching(() -> analyticsProviderProxy.getHighlightsTopInsights(request));
425+
public String getHighlightsTopInsightsV2(HighlightsRequest request) throws AnalyticsServiceException {
426+
return executeCatching(() -> analyticsProviderProxy.getHighlightsTopInsightsV2(request));
427+
}
428+
429+
public String getHighlightsImpact(HighlightsRequest request) throws AnalyticsServiceException {
430+
return executeCatching(() -> analyticsProviderProxy.getHighlightsImpact(request));
423431
}
424432

425433
public Optional<LoadStatusResponse> getLoadStatus() throws AnalyticsServiceException {

ide-common/src/main/kotlin/org/digma/intellij/plugin/analytics/BackendUtils.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@ package org.digma.intellij.plugin.analytics
22

33
import com.intellij.openapi.project.Project
44

5-
65
fun isCentralized(project: Project): Boolean {
76
return BackendInfoHolder.getInstance().isCentralized(project)
87
}
98

109
fun isCentralized(): Boolean {
1110
return BackendInfoHolder.getInstance().isCentralized()
11+
}
12+
13+
fun getVersion(): String {
14+
return BackendInfoHolder.getInstance().getAbout()?.applicationVersion ?: "unknown";
1215
}

src/main/kotlin/org/digma/intellij/plugin/ui/highlights/HighlightsMessageRouterHandler.kt

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import com.fasterxml.jackson.databind.node.ArrayNode
66
import com.fasterxml.jackson.databind.node.ObjectNode
77
import com.intellij.openapi.project.Project
88
import org.cef.browser.CefBrowser
9+
import org.digma.intellij.plugin.analytics.getVersion
10+
import org.digma.intellij.plugin.analytics.isCentralized
911
import org.digma.intellij.plugin.log.Log
1012
import org.digma.intellij.plugin.model.rest.highlights.HighlightsRequest
1113
import org.digma.intellij.plugin.ui.common.updateObservabilityValue
@@ -20,13 +22,28 @@ class HighlightsMessageRouterHandler(project: Project) : BaseCommonMessageRouter
2022

2123
override fun doOnQuery(project: Project, browser: CefBrowser, requestJsonNode: JsonNode, rawRequest: String, action: String): Boolean {
2224

23-
when (action) {
24-
"MAIN/GET_HIGHLIGHTS_PERFORMANCE_DATA" -> getHighlightsPerformance(browser, requestJsonNode)
25-
"MAIN/GET_HIGHLIGHTS_TOP_ISSUES_DATA" -> getHighlightsTopInsights(browser, requestJsonNode)
26-
"MAIN/GET_HIGHLIGHTS_IMPACT_DATA" -> getHighlightsImpact(browser, requestJsonNode)
27-
28-
else -> {
29-
return false
25+
var version = getVersion();
26+
if (isCentralized() && (version == "unknown" || version > "0.3.7"))
27+
{
28+
when (action) {
29+
"MAIN/GET_HIGHLIGHTS_PERFORMANCE_DATA" -> getHighlightsPerformanceV2(browser, requestJsonNode)
30+
"MAIN/GET_HIGHLIGHTS_TOP_ISSUES_DATA" -> getHighlightsTopInsightsV2(browser, requestJsonNode)
31+
"MAIN/GET_HIGHLIGHTS_IMPACT_DATA" -> getHighlightsImpact(browser, requestJsonNode)
32+
33+
else -> {
34+
return false
35+
}
36+
}
37+
}
38+
else {
39+
when (action) {
40+
"MAIN/GET_HIGHLIGHTS_PERFORMANCE_DATA" -> getHighlightsPerformance(browser, requestJsonNode)
41+
"MAIN/GET_HIGHLIGHTS_TOP_ISSUES_DATA" -> getHighlightsTopInsights(browser, requestJsonNode)
42+
"MAIN/GET_HIGHLIGHTS_IMPACT_DATA" -> getHighlightsImpact(browser, requestJsonNode)
43+
44+
else -> {
45+
return false
46+
}
3047
}
3148
}
3249

@@ -39,11 +56,34 @@ class HighlightsMessageRouterHandler(project: Project) : BaseCommonMessageRouter
3956

4057
Log.log(logger::trace, project, "getHighlightsPerformance called")
4158

59+
val backendQueryParams = getQueryMapFromPayload(requestJsonNode, objectMapper)
60+
val payload = HighlightsService.getInstance(project).getHighlightsPerformance(backendQueryParams)
61+
val message = SetHighlightsPerformanceMessage(payload)
62+
Log.log(logger::trace, project, "sending MAIN/GET_HIGHLIGHTS_PERFORMANCE_DATA message")
63+
serializeAndExecuteWindowPostMessageJavaScript(browser, message)
64+
}
65+
66+
private fun getHighlightsTopInsights(browser: CefBrowser, requestJsonNode: JsonNode) {
67+
Log.log(logger::trace, project, "getHighlightsTopInsights called")
68+
69+
val backendQueryParams = getQueryMapFromPayload(requestJsonNode, objectMapper)
70+
val payload = HighlightsService.getInstance(project).getHighlightsTopInsights(backendQueryParams)
71+
val message = SetHighlightsTopInsightsMessage(payload)
72+
Log.log(logger::trace, project, "sending MAIN/GET_HIGHLIGHTS_TOP_ISSUES_DATA message")
73+
serializeAndExecuteWindowPostMessageJavaScript(browser, message)
74+
}
75+
76+
@Synchronized
77+
@Throws(JsonProcessingException::class)
78+
private fun getHighlightsPerformanceV2(browser: CefBrowser, requestJsonNode: JsonNode) {
79+
80+
Log.log(logger::trace, project, "getHighlightsPerformance called")
81+
4282
val payloadQuery = getPayloadQuery(requestJsonNode)
4383
if (payloadQuery is ObjectNode) {
4484

4585
var request = createHighlightsRequest(payloadQuery, "scopedSpanCodeObjectId");
46-
val payload = HighlightsService.getInstance(project).getHighlightsPerformance(request)
86+
val payload = HighlightsService.getInstance(project).getHighlightsPerformanceV2(request)
4787

4888
val message = SetHighlightsPerformanceMessage(payload)
4989
Log.log(logger::trace, project, "sending MAIN/GET_HIGHLIGHTS_PERFORMANCE_DATA message")
@@ -69,14 +109,14 @@ class HighlightsMessageRouterHandler(project: Project) : BaseCommonMessageRouter
69109
}
70110
}
71111

72-
private fun getHighlightsTopInsights(browser: CefBrowser, requestJsonNode: JsonNode) {
112+
private fun getHighlightsTopInsightsV2(browser: CefBrowser, requestJsonNode: JsonNode) {
73113
Log.log(logger::trace, project, "getHighlightsTopInsights called")
74114

75115
val payloadQuery = getPayloadQuery(requestJsonNode)
76116
if (payloadQuery is ObjectNode) {
77117

78118
var request = createHighlightsRequest(payloadQuery, "scopedCodeObjectId");
79-
val payload = HighlightsService.getInstance(project).getHighlightsTopInsights(request)
119+
val payload = HighlightsService.getInstance(project).getHighlightsTopInsightsV2(request)
80120

81121
val message = SetHighlightsTopInsightsMessage(payload)
82122
Log.log(logger::trace, project, "sending MAIN/GET_HIGHLIGHTS_TOP_ISSUES_DATA message")

src/main/kotlin/org/digma/intellij/plugin/ui/highlights/HighlightsService.kt

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,47 @@ class HighlightsService(val project: Project) : InsightsServiceImpl(project) {
3636
}
3737
}
3838

39-
fun getHighlightsPerformance(request: HighlightsRequest): String? {
39+
fun getHighlightsPerformance(queryParams: MutableMap<String, Any>): String? {
4040
EDT.assertNonDispatchThread()
4141

4242
return try {
43-
val result = AnalyticsService.getInstance(project).getHighlightsPerformance(request)
43+
val result = AnalyticsService.getInstance(project).getHighlightsPerformance(queryParams)
4444
result
4545
} catch (e: AnalyticsServiceException) {
4646
Log.warnWithException(logger, project, e, "Error loading highlights performance {}", e.message)
4747
null
4848
}
4949
}
5050

51-
fun getHighlightsTopInsights(request: HighlightsRequest): String? {
51+
fun getHighlightsTopInsights(queryParams: MutableMap<String, Any>): String {
5252
EDT.assertNonDispatchThread()
5353

5454
return try {
55-
val highlightsPerformance = AnalyticsService.getInstance(project).getHighlightsTopInsights(request)
55+
val highlightsPerformance = AnalyticsService.getInstance(project).getHighlightsTopInsights(queryParams)
56+
highlightsPerformance
57+
} catch (e: AnalyticsServiceException) {
58+
Log.warnWithException(logger, project, e, "Error loading highlights top insights {}", e.message)
59+
return "{}"
60+
}
61+
}
62+
63+
fun getHighlightsPerformanceV2(request: HighlightsRequest): String? {
64+
EDT.assertNonDispatchThread()
65+
66+
return try {
67+
val result = AnalyticsService.getInstance(project).getHighlightsPerformanceV2(request)
68+
result
69+
} catch (e: AnalyticsServiceException) {
70+
Log.warnWithException(logger, project, e, "Error loading highlights performance {}", e.message)
71+
null
72+
}
73+
}
74+
75+
fun getHighlightsTopInsightsV2(request: HighlightsRequest): String? {
76+
EDT.assertNonDispatchThread()
77+
78+
return try {
79+
val highlightsPerformance = AnalyticsService.getInstance(project).getHighlightsTopInsightsV2(request)
5680
highlightsPerformance
5781
} catch (e: AnalyticsServiceException) {
5882
Log.warnWithException(logger, project, e, "Error loading highlights top insights {}", e.message)

0 commit comments

Comments
 (0)