Skip to content

Commit 4662e42

Browse files
Added highlights (#2000)
Co-authored-by: oleksandrh <[email protected]>
1 parent 45955bc commit 4662e42

File tree

9 files changed

+150
-1
lines changed

9 files changed

+150
-1
lines changed

.idea/gradle.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.digma.intellij.plugin.model.rest.errordetails.CodeObjectErrorDetails;
1111
import org.digma.intellij.plugin.model.rest.errors.CodeObjectError;
1212
import org.digma.intellij.plugin.model.rest.event.*;
13+
import org.digma.intellij.plugin.model.rest.highlights.HighlightsPerformanceResponse;
1314
import org.digma.intellij.plugin.model.rest.insights.*;
1415
import org.digma.intellij.plugin.model.rest.livedata.*;
1516
import org.digma.intellij.plugin.model.rest.lowlevel.*;
@@ -109,4 +110,6 @@ public interface AnalyticsProvider extends Closeable {
109110
InsightsStatsResult getInsightsStats(Map<String, Object> queryParams);
110111

111112
HttpResponse lowLevelCall(HttpRequest request);
113+
114+
List<HighlightsPerformanceResponse> getHighlightsPerformance(Map<String, Object> queryParams);
112115
}

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.digma.intellij.plugin.model.rest.errordetails.CodeObjectErrorDetails;
1515
import org.digma.intellij.plugin.model.rest.errors.CodeObjectError;
1616
import org.digma.intellij.plugin.model.rest.event.*;
17+
import org.digma.intellij.plugin.model.rest.highlights.HighlightsPerformanceResponse;
1718
import org.digma.intellij.plugin.model.rest.insights.*;
1819
import org.digma.intellij.plugin.model.rest.livedata.*;
1920
import org.digma.intellij.plugin.model.rest.lowlevel.*;
@@ -290,6 +291,11 @@ public HttpResponse lowLevelCall(HttpRequest request) {
290291
}
291292
}
292293

294+
@Override
295+
public List<HighlightsPerformanceResponse> getHighlightsPerformance(Map<String, Object> queryParams) {
296+
return execute(() -> client.analyticsProvider.getHighlightsPerformance(queryParams));
297+
}
298+
293299
private static Request toOkHttp3Request(HttpRequest request){
294300
var okHttp3Body = request.getBody() != null
295301
? RequestBody.create(MediaType.parse(request.getBody().getContentType()), request.getBody().getContent())
@@ -784,6 +790,13 @@ Call<ResponseBody> setInsightCustomStartTime(
784790
})
785791
@GET("/insights/statistics")
786792
Call<InsightsStatsResult> getInsightsStats(@QueryMap Map<String, Object> fields);
793+
794+
@Headers({
795+
"Accept: application/+json",
796+
"Content-Type:application/json"
797+
})
798+
@GET("/highlights/performance")
799+
Call<List<HighlightsPerformanceResponse>> getHighlightsPerformance(@QueryMap Map<String, Object> fields);
787800
}
788801

789802
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.digma.intellij.plugin.model.rest.errordetails.CodeObjectErrorDetails;
2222
import org.digma.intellij.plugin.model.rest.errors.CodeObjectError;
2323
import org.digma.intellij.plugin.model.rest.event.*;
24+
import org.digma.intellij.plugin.model.rest.highlights.HighlightsPerformanceResponse;
2425
import org.digma.intellij.plugin.model.rest.insights.*;
2526
import org.digma.intellij.plugin.model.rest.livedata.*;
2627
import org.digma.intellij.plugin.model.rest.lowlevel.*;
@@ -377,6 +378,10 @@ public PerformanceMetricsResponse getPerformanceMetrics() throws AnalyticsServic
377378
return executeCatching(() -> analyticsProviderProxy.getPerformanceMetrics());
378379
}
379380

381+
public List<HighlightsPerformanceResponse> getHighlightsPerformance(@NotNull Map<String, Object> queryParams) throws AnalyticsServiceException {
382+
return executeCatching(() -> analyticsProviderProxy.getHighlightsPerformance(queryParams));
383+
}
384+
380385
public Optional<LoadStatusResponse> getLoadStatus() throws AnalyticsServiceException {
381386
return executeCatching(() -> analyticsProviderProxy.getLoadStatus());
382387
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package org.digma.intellij.plugin.model.rest.highlights
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator
4+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
5+
import org.digma.intellij.plugin.model.rest.common.Duration
6+
import org.digma.intellij.plugin.model.rest.common.SpanDurationsPercentile
7+
import org.digma.intellij.plugin.model.rest.common.SpanDurationsPlot
8+
import java.beans.ConstructorProperties
9+
import java.sql.Timestamp
10+
11+
@JsonIgnoreProperties(ignoreUnknown = true)
12+
data class HighlightsPerformanceResponse
13+
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
14+
@ConstructorProperties(
15+
"environment",
16+
"percentiles",
17+
"lastSpanInstanceInfo",
18+
"histogramPlot"
19+
)
20+
constructor(val environment: String,
21+
val percentiles: Array<SpanDurationsPercentile>,
22+
val lastSpanInstanceInfo: SpanInstanceInfo?,
23+
val histogramPlot: SpanDurationsPlot?)
24+
25+
@JsonIgnoreProperties(ignoreUnknown = true)
26+
data class SpanInstanceInfo
27+
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
28+
@ConstructorProperties(
29+
"traceId",
30+
"spanId",
31+
"startTime",
32+
"duration"
33+
)
34+
constructor(
35+
var traceId: String?,
36+
var spanId: String?,
37+
var startTime: Timestamp?,
38+
var duration: Duration?
39+
)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.digma.intellij.plugin.ui.highlights
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException
4+
import com.fasterxml.jackson.databind.JsonNode
5+
import com.intellij.openapi.project.Project
6+
import org.cef.browser.CefBrowser
7+
import org.digma.intellij.plugin.insights.AbstractInsightsMessageRouterHandler
8+
import org.digma.intellij.plugin.log.Log
9+
import org.digma.intellij.plugin.ui.highlights.model.SetHighlightsPerformanceMessage
10+
import org.digma.intellij.plugin.ui.jcef.getQueryMapFromPayload
11+
import org.digma.intellij.plugin.ui.jcef.serializeAndExecuteWindowPostMessageJavaScript
12+
13+
class HighlightsMessageRouterHandler(project: Project) : AbstractInsightsMessageRouterHandler(project) {
14+
15+
override fun doOnQuery(project: Project, browser: CefBrowser, requestJsonNode: JsonNode, rawRequest: String, action: String): Boolean {
16+
17+
when (action) {
18+
"HIGHLIGHTS/GET_PERFORMANCE" -> getHighlightsPerformance(browser, requestJsonNode)
19+
20+
else -> {
21+
return super.doOnQuery(project, browser, requestJsonNode, rawRequest, action)
22+
}
23+
}
24+
25+
return true
26+
}
27+
28+
@Synchronized
29+
@Throws(JsonProcessingException::class)
30+
private fun getHighlightsPerformance(browser: CefBrowser, requestJsonNode: JsonNode) {
31+
32+
Log.log(logger::trace, project, "getHighlightsPerformance called")
33+
34+
val backendQueryParams = getQueryMapFromPayload(requestJsonNode, objectMapper)
35+
val payload = HighlightsService.getInstance(project).getHighlightsPerformance(backendQueryParams)
36+
val message = SetHighlightsPerformanceMessage(payload)
37+
Log.log(logger::trace, project, "sending HIGHLIGHTS/SET_PERFORMANCE message")
38+
serializeAndExecuteWindowPostMessageJavaScript(browser, message)
39+
}
40+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.digma.intellij.plugin.ui.highlights
2+
3+
import com.intellij.openapi.components.Service
4+
import com.intellij.openapi.components.service
5+
import com.intellij.openapi.diagnostic.Logger
6+
import com.intellij.openapi.project.Project
7+
import org.digma.intellij.plugin.analytics.AnalyticsService
8+
import org.digma.intellij.plugin.analytics.AnalyticsServiceException
9+
import org.digma.intellij.plugin.common.EDT
10+
import org.digma.intellij.plugin.insights.InsightsServiceImpl
11+
import org.digma.intellij.plugin.log.Log
12+
import org.digma.intellij.plugin.model.rest.highlights.HighlightsPerformanceResponse
13+
14+
15+
@Service(Service.Level.PROJECT)
16+
class HighlightsService(val project: Project) : InsightsServiceImpl(project) {
17+
18+
private val logger = Logger.getInstance(this::class.java)
19+
20+
companion object {
21+
@JvmStatic
22+
fun getInstance(project: Project): HighlightsService {
23+
return project.service<HighlightsService>()
24+
}
25+
}
26+
27+
fun getHighlightsPerformance(queryParams: MutableMap<String, Any>): List<HighlightsPerformanceResponse>? {
28+
EDT.assertNonDispatchThread()
29+
30+
return try {
31+
val highlightsPerformance = AnalyticsService.getInstance(project).getHighlightsPerformance(queryParams)
32+
highlightsPerformance
33+
} catch (e: AnalyticsServiceException) {
34+
Log.warnWithException(logger, project, e, "Error loading highlights performance {}", e.message)
35+
null
36+
}
37+
}
38+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.digma.intellij.plugin.ui.highlights.model
2+
3+
import org.digma.intellij.plugin.model.rest.highlights.HighlightsPerformanceResponse
4+
import org.digma.intellij.plugin.ui.jcef.JCEFGlobalConstants
5+
6+
data class SetHighlightsPerformanceMessage(val payload: List<HighlightsPerformanceResponse>?) {
7+
val type = JCEFGlobalConstants.REQUEST_MESSAGE_TYPE
8+
val action = "HIGHLIGHTS/SET_PERFORMANCE"
9+
}

src/main/kotlin/org/digma/intellij/plugin/ui/mainapp/MainAppMessageRouterHandler.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import org.digma.intellij.plugin.analytics.AnalyticsServiceException
77
import org.digma.intellij.plugin.log.Log
88
import org.digma.intellij.plugin.navigation.View
99
import org.digma.intellij.plugin.ui.assets.AssetsMessageRouterHandler
10+
import org.digma.intellij.plugin.ui.highlights.HighlightsMessageRouterHandler
1011
import org.digma.intellij.plugin.ui.insights.InsightsMessageRouterHandler
1112
import org.digma.intellij.plugin.ui.jcef.BaseMessageRouterHandler
1213
import org.digma.intellij.plugin.ui.jcef.sendCurrentViewsState
@@ -21,6 +22,7 @@ class MainAppMessageRouterHandler(project: Project) : BaseMessageRouterHandler(p
2122
private val handlers = listOf(
2223
AssetsMessageRouterHandler(project),
2324
InsightsMessageRouterHandler(project),
25+
HighlightsMessageRouterHandler(project),
2426
TestsMessageRouterHandler(project)
2527
)
2628

0 commit comments

Comments
 (0)