diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java index 9d4ad036..d1184b21 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/chat/ChatMessageProvider.java @@ -7,6 +7,7 @@ import software.aws.toolkits.eclipse.amazonq.chat.models.ChatRequestParams; import software.aws.toolkits.eclipse.amazonq.chat.models.ChatResult; import software.aws.toolkits.eclipse.amazonq.chat.models.GenericTabParams; +import software.aws.toolkits.eclipse.amazonq.exception.AmazonQPluginException; import software.aws.toolkits.eclipse.amazonq.lsp.AmazonQLspServer; import software.aws.toolkits.eclipse.amazonq.providers.LspProvider; import software.aws.toolkits.eclipse.amazonq.util.PluginLogger; @@ -20,7 +21,8 @@ public ChatMessageProvider() { try { amazonQLspServer = LspProvider.getAmazonQServer().get(); } catch (InterruptedException | ExecutionException e) { - PluginLogger.error("Error occurred while retrieving Amazon Q LSP server. Failed to instantiate ChatMessageProvider."); + PluginLogger.error("Error occurred while retrieving Amazon Q LSP server. Failed to instantiate ChatMessageProvider.", e); + throw new AmazonQPluginException(e); } } @@ -31,23 +33,27 @@ public ChatResult sendChatPrompt(final ChatRequestParams chatRequestParams) { return chatResult; } catch (InterruptedException | ExecutionException e) { PluginLogger.error("Error occurred while sending " + Command.CHAT_SEND_PROMPT + " message to Amazon Q LSP server", e); - e.printStackTrace(); + throw new AmazonQPluginException(e); } - return null; } public void sendChatReady() { - PluginLogger.info("Sending " + Command.CHAT_READY + " message to Amazon Q LSP server"); - amazonQLspServer.chatReady(); - } - - public void sendChatReady() { - PluginLogger.info("Sending " + Command.CHAT_READY + " message to Amazon Q LSP server"); - amazonQLspServer.chatReady(); + try { + PluginLogger.info("Sending " + Command.CHAT_READY + " message to Amazon Q LSP server"); + amazonQLspServer.chatReady(); + } catch (Exception e) { + PluginLogger.error("Error occurred while sending " + Command.CHAT_READY + " message to Amazon Q LSP server", e); + throw new AmazonQPluginException(e); + } } public void sendTabAdd(final GenericTabParams tabParams) { - PluginLogger.info("Sending " + Command.CHAT_TAB_ADD + " message to Amazon Q LSP server"); - amazonQLspServer.tabAdd(tabParams); + try { + PluginLogger.info("Sending " + Command.CHAT_TAB_ADD + " message to Amazon Q LSP server"); + amazonQLspServer.tabAdd(tabParams); + } catch (Exception e) { + PluginLogger.error("Error occurred while sending " + Command.CHAT_TAB_ADD + " message to Amazon Q LSP server", e); + throw new AmazonQPluginException(e); + } } } diff --git a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java index 8e9b26d6..a94f88a4 100644 --- a/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java +++ b/plugin/src/software/aws/toolkits/eclipse/amazonq/views/AmazonQChatWebview.java @@ -55,12 +55,14 @@ public final void createPartControl(final Composite parent) { new BrowserFunction(browser, "ideCommand") { @Override public Object function(final Object[] arguments) { - try { - commandParser.parseCommand(arguments) - .ifPresent(parsedCommand -> actionHandler.handleCommand(parsedCommand, browser)); - } catch (Exception e) { - PluginLogger.error("Error processing message from Browser", e); - } + ThreadingUtils.executeAsyncTask(() -> { + try { + commandParser.parseCommand(arguments) + .ifPresent(parsedCommand -> actionHandler.handleCommand(parsedCommand, browser)); + } catch (Exception e) { + PluginLogger.error("Error processing message from Browser", e); + } + }); return null; } };