Skip to content

Commit a751f56

Browse files
committed
Feedback
1 parent 98a43b5 commit a751f56

File tree

6 files changed

+27
-27
lines changed

6 files changed

+27
-27
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/commands/MessageSerializer.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.util.command
2020

2121
class MessageSerializer @VisibleForTesting constructor() {
2222

23-
private val objectMapper = jacksonObjectMapper()
23+
val objectMapper = jacksonObjectMapper()
2424
.registerModule(JavaTimeModule())
2525
.enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS)
2626
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
@@ -37,8 +37,8 @@ class MessageSerializer @VisibleForTesting constructor() {
3737

3838
fun serialize(value: Any): String = objectMapper.writeValueAsString(value)
3939

40-
fun <T> deserializeChatMessages(value: JsonNode, clazz: Class<T>): T =
41-
objectMapper.treeToValue(value, clazz)
40+
inline fun <reified T> deserializeChatMessages(value: JsonNode): T =
41+
objectMapper.treeToValue<T>(value)
4242

4343
// Provide singleton global access
4444
companion object {

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/Browser.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class Browser(parent: Disposable, private val webUri: URI, val project: Project)
4343
"mynah",
4444
AssetResourceHandler.AssetResourceHandlerFactory(),
4545
)
46-
AmazonQLspService.getInstance(project).addServerStartedListener {
46+
AmazonQLspService.getInstance(project).addLspInitializeMessageListener {
4747
loadWebView(
4848
isCodeTransformAvailable,
4949
isFeatureDevAvailable,

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class BrowserConnector(
151151
private fun handleFlareChatMessages(browser: Browser, node: JsonNode) {
152152
when (node.command) {
153153
SEND_CHAT_COMMAND_PROMPT -> {
154-
val requestFromUi = serializer.deserializeChatMessages(node, SendChatPromptRequest::class.java)
154+
val requestFromUi = serializer.deserializeChatMessages<SendChatPromptRequest>(node)
155155
val chatPrompt = ChatPrompt(
156156
requestFromUi.params.prompt.prompt,
157157
requestFromUi.params.prompt.escapedPrompt,
@@ -189,7 +189,7 @@ class BrowserConnector(
189189
showResult(result, partialResultToken, tabId, encryptionManager, browser)
190190
}
191191
CHAT_QUICK_ACTION -> {
192-
val requestFromUi = serializer.deserializeChatMessages(node, QuickChatActionRequest::class.java)
192+
val requestFromUi = serializer.deserializeChatMessages<QuickChatActionRequest>(node)
193193
val tabId = requestFromUi.params.tabId
194194
val quickActionParams = requestFromUi.params
195195
val partialResultToken = chatCommunicationManager.addPartialChatMessage(tabId)

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ import org.eclipse.lsp4j.jsonrpc.services.JsonRequest
99
import org.eclipse.lsp4j.services.LanguageServer
1010
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.GetConfigurationFromServerParams
1111
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.LspServerConfigurations
12+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
1213
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
1314
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
15+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
1416
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.UpdateCredentialsPayload
1517
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.dependencies.DidChangeDependencyPathsParams
1618
import java.util.concurrent.CompletableFuture
@@ -32,9 +34,9 @@ interface AmazonQLanguageServer : LanguageServer {
3234
@JsonRequest("aws/getConfigurationFromServer")
3335
fun getConfigurationFromServer(params: GetConfigurationFromServerParams): CompletableFuture<LspServerConfigurations>
3436

35-
@JsonRequest("aws/chat/sendChatPrompt")
37+
@JsonRequest(SEND_CHAT_COMMAND_PROMPT)
3638
fun sendChatPrompt(params: EncryptedChatParams): CompletableFuture<String>
3739

38-
@JsonRequest("aws/chat/sendChatQuickAction")
40+
@JsonRequest(CHAT_QUICK_ACTION)
3941
fun sendQuickAction(params: EncryptedQuickActionChatParams): CompletableFuture<String>
4042
}

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

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.intellij.openapi.project.Project
1919
import com.intellij.openapi.util.Disposer
2020
import com.intellij.openapi.util.Key
2121
import com.intellij.openapi.util.SystemInfo
22+
import com.intellij.util.animation.consumer
2223
import com.intellij.util.io.await
2324
import kotlinx.coroutines.CoroutineScope
2425
import kotlinx.coroutines.Deferred
@@ -44,6 +45,7 @@ import org.eclipse.lsp4j.jsonrpc.Launcher.Builder
4445
import org.eclipse.lsp4j.jsonrpc.MessageConsumer
4546
import org.eclipse.lsp4j.jsonrpc.messages.Message
4647
import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage
48+
import org.eclipse.lsp4j.launch.LSPLauncher
4749
import org.slf4j.event.Level
4850
import software.aws.toolkits.core.utils.getLogger
4951
import software.aws.toolkits.core.utils.info
@@ -107,9 +109,9 @@ internal class LSPProcessListener : ProcessListener {
107109

108110
@Service(Service.Level.PROJECT)
109111
class AmazonQLspService(private val project: Project, private val cs: CoroutineScope) : Disposable {
110-
private val serverStartedListener = mutableListOf<AmazonQServerStartedListener>()
111-
fun addServerStartedListener(listener: AmazonQServerStartedListener) = serverStartedListener.add(listener)
112-
fun notifyServerStarted() = serverStartedListener.forEach { it() }
112+
private val lspInitializedMessageReceivedListener = mutableListOf<AmazonQInitializeMessageReceivedListener>()
113+
fun addLspInitializeMessageListener(listener: AmazonQInitializeMessageReceivedListener) = lspInitializedMessageReceivedListener.add(listener)
114+
fun notifyInitializeMessageReceived() = lspInitializedMessageReceivedListener.forEach { it() }
113115

114116
private var instance: Deferred<AmazonQServerInstance>
115117
val capabilities
@@ -275,23 +277,18 @@ private class AmazonQServerInstance(private val project: Project, private val cs
275277
launcherHandler.addProcessListener(inputWrapper)
276278
launcherHandler.startNotify()
277279

278-
class AmazonQServerBuilder : Builder<AmazonQLanguageServer>() {
279-
private val customMessageTracer = MessageTracer()
280-
281-
override fun wrapMessageConsumer(consumer: MessageConsumer?): MessageConsumer =
282-
super.wrapMessageConsumer { message ->
283-
customMessageTracer.trace("INCOMING", message)
280+
launcher = LSPLauncher.Builder<AmazonQLanguageServer>()
281+
.wrapMessages { consumer ->
282+
MessageConsumer {
283+
message ->
284284
if (message is ResponseMessage && message.result is AwsExtendedInitializeResult) {
285285
val result = message.result as AwsExtendedInitializeResult
286286
AwsServerCapabilitiesProvider.getInstance(project).setAwsServerCapabilities(result.getAwsServerCapabilities())
287-
AmazonQLspService.getInstance(project).notifyServerStarted()
287+
AmazonQLspService.getInstance(project).notifyInitializeMessageReceived()
288288
}
289289
consumer?.consume(message)
290-
customMessageTracer.trace("PROCESSED", message)
291290
}
292-
}
293-
294-
launcher = AmazonQServerBuilder()
291+
}
295292
.setLocalService(AmazonQLanguageClientImpl(project))
296293
.setRemoteInterface(AmazonQLanguageServer::class.java)
297294
.configureGson {
@@ -392,4 +389,4 @@ private class AmazonQServerInstance(private val project: Project, private val cs
392389
}
393390
}
394391

395-
typealias AmazonQServerStartedListener = () -> Unit
392+
typealias AmazonQInitializeMessageReceivedListener = () -> Unit

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,33 @@ package software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat
66
import com.google.gson.Gson
77
import com.google.gson.TypeAdapter
88
import com.google.gson.TypeAdapterFactory
9+
import com.google.gson.reflect.TypeToken
910
import com.google.gson.stream.JsonReader
1011
import com.google.gson.stream.JsonWriter
1112
import org.eclipse.lsp4j.InitializeResult
1213
import java.io.IOException
1314

1415
class AmazonQLspTypeAdapterFactory : TypeAdapterFactory {
15-
override fun <T : Any?> create(gson: Gson, type: com.google.gson.reflect.TypeToken<T>): TypeAdapter<T>? {
16+
override fun <T : Any?> create(gson: Gson, type: TypeToken<T>): TypeAdapter<T>? {
1617
if (type.rawType === InitializeResult::class.java) {
1718
val delegate: TypeAdapter<InitializeResult?> = gson.getDelegateAdapter(this, type) as TypeAdapter<InitializeResult?>
1819

1920
return object : TypeAdapter<InitializeResult>() {
2021
@Throws(IOException::class)
21-
override fun write(out: JsonWriter?, value: InitializeResult?) {
22+
override fun write(out: JsonWriter, value: InitializeResult?) {
2223
delegate.write(out, value)
2324
}
2425

2526
@Throws(IOException::class)
26-
override fun read(`in`: JsonReader?): InitializeResult =
27+
override fun read(`in`: JsonReader): InitializeResult =
2728
gson.fromJson(`in`, AwsExtendedInitializeResult::class.java)
2829
} as TypeAdapter<T>
2930
}
3031
return null
3132
}
3233
}
3334

34-
class AwsExtendedInitializeResult : InitializeResult() {
35+
class AwsExtendedInitializeResult(awsServerCapabilities: AwsServerCapabilities? = null) : InitializeResult() {
3536
private var awsServerCapabilities: AwsServerCapabilities? = null
3637

3738
fun getAwsServerCapabilities(): AwsServerCapabilities? = awsServerCapabilities

0 commit comments

Comments
 (0)