Skip to content

Commit 2e753f2

Browse files
committed
fix(amazonq): fix warnings when metrics fields are null
1 parent 7cb2b07 commit 2e753f2

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
7777
val name = telemetryMap["name"] as? String ?: return
7878

7979
@Suppress("UNCHECKED_CAST")
80-
val data = telemetryMap["data"] as? Map<String, Any> ?: return
80+
val data = telemetryMap["data"] as? Map<String, Any?> ?: return
8181

8282
TelemetryService.getInstance().record(project) {
8383
datum(name) {
@@ -90,7 +90,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
9090
}
9191

9292
data.forEach { (key, value) ->
93-
metadata(key, value.toString())
93+
metadata(key, value?.toString() ?: "null")
9494
}
9595
}
9696
}

plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImplTest.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,36 @@ class AmazonQLanguageClientImplTest {
8181
)
8282
}
8383

84+
@Test
85+
fun `telemetryEvent handles null`() {
86+
val telemetryService = mockk<TelemetryService>(relaxed = true)
87+
mockkObject(TelemetryService)
88+
every { TelemetryService.getInstance() } returns telemetryService
89+
90+
val builderCaptor = slot<MetricEvent.Builder.() -> Unit>()
91+
every { telemetryService.record(project, capture(builderCaptor)) } returns Unit
92+
93+
val event = mapOf(
94+
"name" to "test_event",
95+
"data" to mapOf(
96+
"key1" to null,
97+
)
98+
)
99+
100+
sut.telemetryEvent(event)
101+
102+
val builder = DefaultMetricEvent.builder()
103+
builderCaptor.captured.invoke(builder)
104+
105+
val metricEvent = builder.build()
106+
val datum = metricEvent.data.first()
107+
108+
assertThat(datum.name).isEqualTo("test_event")
109+
assertThat(datum.metadata).contains(
110+
entry("key1", "null"),
111+
)
112+
}
113+
84114
@Test
85115
fun `telemetryEvent handles event with result field`() {
86116
val telemetryService = mockk<TelemetryService>(relaxed = true)

0 commit comments

Comments
 (0)