diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQPanel.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQPanel.kt index 41487d0a658..75cf419c23d 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQPanel.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQPanel.kt @@ -56,9 +56,7 @@ class AmazonQPanel(val project: Project, private val scope: CoroutineScope) : Di AsyncChatUiListener.TOPIC, object : AsyncChatUiListener { override fun onChange(message: String) { - runInEdt { - browser.get()?.postChat(message) - } + browser.get()?.postChat(message) } } ) diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt index de793733c79..e1d0e775316 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt @@ -8,6 +8,7 @@ import com.google.gson.Gson import com.intellij.ide.BrowserUtil import com.intellij.ide.util.RunOnceUtil import com.intellij.openapi.application.runInEdt +import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.options.ShowSettingsUtil import com.intellij.openapi.project.Project import com.intellij.ui.jcef.JBCefJSQuery.Response @@ -22,8 +23,7 @@ import kotlinx.coroutines.flow.merge import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import org.cef.browser.CefBrowser -import org.eclipse.lsp4j.Position -import org.eclipse.lsp4j.Range +import org.eclipse.lsp4j.TextDocumentIdentifier import software.aws.toolkits.core.utils.error import software.aws.toolkits.core.utils.getLogger import software.aws.toolkits.core.utils.warn @@ -34,7 +34,6 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsServerCapabilitiesProvider import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatCommunicationManager -import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.getTextDocumentIdentifier import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.AUTH_FOLLOW_UP_CLICKED import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.AuthFollowUpClickNotification import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ButtonClickNotification @@ -71,7 +70,6 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CopyC import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CopyCodeToClipboardParams import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CreatePromptNotification import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CreatePromptParams -import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorState import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FeedbackNotification @@ -107,6 +105,8 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TabBa import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TabBarActionRequest import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TabEventParams import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.TabEventRequest +import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil +import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil.toUriString import software.aws.toolkits.jetbrains.services.amazonq.util.command import software.aws.toolkits.jetbrains.services.amazonq.util.tabType import software.aws.toolkits.jetbrains.services.amazonq.webview.theme.AmazonQTheme @@ -236,19 +236,9 @@ class BrowserConnector( requestFromUi.params.prompt.escapedPrompt, node.command ) - val textDocumentIdentifier = getTextDocumentIdentifier(project) - val cursorState = CursorState( - Range( - Position( - 0, - 0 - ), - Position( - 1, - 1 - ) - ) - ) + val editor = FileEditorManager.getInstance(project).selectedTextEditor + val textDocumentIdentifier = editor?.let { TextDocumentIdentifier(toUriString(it.virtualFile)) } + val cursorState = editor?.let { LspEditorUtil.getCursorState(it) } val chatParams = ChatParams( requestFromUi.params.tabId, diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererService.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererService.kt index 147b31d3562..a0c1e8a0147 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererService.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererService.kt @@ -48,7 +48,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocume import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionListWithReferences import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionTriggerKind import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionWithReferencesParams -import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.FileUriUtil.toUriString +import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil.toUriString import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator import software.aws.toolkits.jetbrains.services.codewhisperer.editor.CodeWhispererEditorManager import software.aws.toolkits.jetbrains.services.codewhisperer.editor.CodeWhispererEditorUtil.getCaretPosition diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererServiceNew.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererServiceNew.kt index a939012ded0..234843e417d 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererServiceNew.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/service/CodeWhispererServiceNew.kt @@ -46,7 +46,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocume import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionListWithReferences import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionTriggerKind import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionWithReferencesParams -import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.FileUriUtil.toUriString +import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil.toUriString import software.aws.toolkits.jetbrains.services.codewhisperer.editor.CodeWhispererEditorManagerNew import software.aws.toolkits.jetbrains.services.codewhisperer.editor.CodeWhispererEditorUtil.getCaretPosition import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererServiceTest.kt b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererServiceTest.kt index c787e1679a9..dbe0a5d8ad9 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererServiceTest.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererServiceTest.kt @@ -19,7 +19,7 @@ import org.mockito.kotlin.spy import org.mockito.kotlin.stub import org.mockito.kotlin.whenever import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.textDocument.InlineCompletionTriggerKind -import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.FileUriUtil.toUriString +import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil.toUriString import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererCustomization import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererModelConfigurator import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererJava diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/dependencies/ModuleDependencyProvider.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/dependencies/ModuleDependencyProvider.kt index e8d0087e7d2..af9af6f4eb7 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/dependencies/ModuleDependencyProvider.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/dependencies/ModuleDependencyProvider.kt @@ -8,7 +8,7 @@ import com.intellij.openapi.module.Module import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.vfs.VirtualFile import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.dependencies.DidChangeDependencyPathsParams -import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.FileUriUtil.toUriString +import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil.toUriString interface ModuleDependencyProvider { companion object { diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatEditorUtils.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatEditorUtils.kt deleted file mode 100644 index c102acc410a..00000000000 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatEditorUtils.kt +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat - -import com.intellij.openapi.fileEditor.FileEditorManager -import com.intellij.openapi.project.Project -import org.eclipse.lsp4j.TextDocumentIdentifier -import kotlin.io.path.Path - -fun getTextDocumentIdentifier(project: Project): TextDocumentIdentifier { - val selectedEditor = FileEditorManager.getInstance(project).selectedEditor - val filePath = Path(selectedEditor?.file?.path.orEmpty()).toUri() - return TextDocumentIdentifier(filePath.toString()) -} diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/CursorState.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/CursorState.kt index 2baa0221f50..c638e76ab28 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/CursorState.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/CursorState.kt @@ -3,8 +3,15 @@ package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat +import org.eclipse.lsp4j.Position import org.eclipse.lsp4j.Range -data class CursorState( +sealed interface CursorState + +data class CursorPosition( + val position: Position, +) : CursorState + +data class CursorRange( val range: Range, -) +) : CursorState diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/SendChatPrompt.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/SendChatPrompt.kt index ae58bf8c45d..136f9adc336 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/SendChatPrompt.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/SendChatPrompt.kt @@ -9,8 +9,8 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ContextCom data class ChatParams( val tabId: String, val prompt: ChatPrompt, - val textDocument: TextDocumentIdentifier, - val cursorState: CursorState, + val textDocument: TextDocumentIdentifier?, + val cursorState: CursorState?, val context: List?, ) diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt index 537a804a297..1a2c0bb7447 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandler.kt @@ -27,7 +27,7 @@ import org.eclipse.lsp4j.TextDocumentIdentifier import org.eclipse.lsp4j.TextDocumentItem import org.eclipse.lsp4j.VersionedTextDocumentIdentifier import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService -import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.FileUriUtil.toUriString +import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil.toUriString import software.aws.toolkits.jetbrains.utils.pluginAwareExecuteOnPooledThread class TextDocumentServiceHandler( diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/FileUriUtil.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/FileUriUtil.kt deleted file mode 100644 index b2821257a49..00000000000 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/FileUriUtil.kt +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. -// SPDX-License-Identifier: Apache-2.0 - -package software.aws.toolkits.jetbrains.services.amazonq.lsp.util - -import com.intellij.openapi.vfs.VfsUtilCore -import com.intellij.openapi.vfs.VirtualFile -import software.aws.toolkits.core.utils.getLogger -import software.aws.toolkits.core.utils.warn -import java.io.File -import java.net.URI -import java.net.URISyntaxException - -object FileUriUtil { - - fun toUriString(virtualFile: VirtualFile): String? { - val protocol = virtualFile.fileSystem.protocol - val uri = when (protocol) { - "jar" -> VfsUtilCore.convertToURL(virtualFile.url)?.toExternalForm() - "jrt" -> virtualFile.url - else -> toUri(VfsUtilCore.virtualToIoFile(virtualFile)).toASCIIString() - } ?: return null - - return if (virtualFile.isDirectory) { - uri.trimEnd('/', '\\') - } else { - uri - } - } - - private fun toUri(file: File): URI { - try { - // URI scheme specified by language server protocol - return URI("file", "", file.absoluteFile.toURI().path, null) - } catch (e: URISyntaxException) { - LOG.warn { "${e.localizedMessage}: $e" } - return file.absoluteFile.toURI() - } - } - - private val LOG = getLogger() -} diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/LspEditorUtil.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/LspEditorUtil.kt new file mode 100644 index 00000000000..e7ece95f539 --- /dev/null +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/LspEditorUtil.kt @@ -0,0 +1,75 @@ +// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.services.amazonq.lsp.util + +import com.intellij.openapi.application.runReadAction +import com.intellij.openapi.editor.Editor +import com.intellij.openapi.vfs.VfsUtilCore +import com.intellij.openapi.vfs.VirtualFile +import org.eclipse.lsp4j.Position +import org.eclipse.lsp4j.Range +import software.aws.toolkits.core.utils.getLogger +import software.aws.toolkits.core.utils.warn +import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorPosition +import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorRange +import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorState +import java.io.File +import java.net.URI +import java.net.URISyntaxException + +object LspEditorUtil { + + fun toUriString(virtualFile: VirtualFile): String? { + val protocol = virtualFile.fileSystem.protocol + val uri = when (protocol) { + "jar" -> VfsUtilCore.convertToURL(virtualFile.url)?.toExternalForm() + "jrt" -> virtualFile.url + else -> toUri(VfsUtilCore.virtualToIoFile(virtualFile)).toASCIIString() + } ?: return null + + return if (virtualFile.isDirectory) { + uri.trimEnd('/', '\\') + } else { + uri + } + } + + private fun toUri(file: File): URI { + try { + // URI scheme specified by language server protocol + return URI("file", "", file.absoluteFile.toURI().path, null) + } catch (e: URISyntaxException) { + LOG.warn { "${e.localizedMessage}: $e" } + return file.absoluteFile.toURI() + } + } + + /** + * Works but is divergent from [FocusAreaContextExtrator] + */ + fun getCursorState(editor: Editor): CursorState = + runReadAction { + val selectionModel = editor.selectionModel + if (selectionModel.hasSelection()) { + val selectedStartPos = editor.offsetToLogicalPosition(selectionModel.selectionStart) + val selectedEndPos = editor.offsetToLogicalPosition(selectionModel.selectionEnd) + + return@runReadAction CursorRange( + Range( + Position(selectedStartPos.line, selectedStartPos.column), + Position(selectedEndPos.line, selectedEndPos.column) + ) + ) + } else { + return@runReadAction CursorPosition( + Position( + editor.caretModel.primaryCaret.logicalPosition.line, + editor.caretModel.primaryCaret.logicalPosition.column + ) + ) + } + } + + private val LOG = getLogger() +} diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/WorkspaceFolderUtil.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/WorkspaceFolderUtil.kt index 87e570b9f48..be98a8a9c5e 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/WorkspaceFolderUtil.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/WorkspaceFolderUtil.kt @@ -7,7 +7,7 @@ import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.Project import com.intellij.openapi.roots.ModuleRootManager import org.eclipse.lsp4j.WorkspaceFolder -import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.FileUriUtil.toUriString +import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil.toUriString object WorkspaceFolderUtil { fun createWorkspaceFolders(project: Project): List = diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandler.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandler.kt index 3ef39c6073c..202cf84e095 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandler.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandler.kt @@ -35,7 +35,7 @@ import org.eclipse.lsp4j.TextDocumentItem import org.eclipse.lsp4j.WorkspaceFolder import org.eclipse.lsp4j.WorkspaceFoldersChangeEvent import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService -import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.FileUriUtil.toUriString +import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil.toUriString import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.WorkspaceFolderUtil.createWorkspaceFolders import software.aws.toolkits.jetbrains.utils.pluginAwareExecuteOnPooledThread import java.nio.file.FileSystems diff --git a/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandlerTest.kt b/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandlerTest.kt index b96b00c4758..ecb5104adfa 100644 --- a/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandlerTest.kt +++ b/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/textdocument/TextDocumentServiceHandlerTest.kt @@ -40,7 +40,7 @@ import org.junit.Rule import org.junit.Test import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLanguageServer import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService -import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.FileUriUtil +import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.LspEditorUtil import java.net.URI import java.nio.file.Path import java.util.concurrent.CompletableFuture @@ -230,8 +230,8 @@ class TextDocumentServiceHandlerTest { val document = mockk() val file = createMockVirtualFile(URI.create("")) - mockkObject(FileUriUtil) { - every { FileUriUtil.toUriString(file) } returns null + mockkObject(LspEditorUtil) { + every { LspEditorUtil.toUriString(file) } returns null val fileDocumentManager = mockk { every { getFile(document) } returns file diff --git a/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/FileUriUtilTest.kt b/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/FileUriUtilTest.kt index 4418cb33ac8..abefcf9f152 100644 --- a/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/FileUriUtilTest.kt +++ b/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/FileUriUtilTest.kt @@ -38,7 +38,7 @@ class FileUriUtilTest { @Test fun `test basic unix path`() { val virtualFile = createMockVirtualFile("/path/to/file.txt") - val uri = FileUriUtil.toUriString(virtualFile) + val uri = LspEditorUtil.toUriString(virtualFile) val expected = normalizeFileUri("file:///path/to/file.txt") assertThat(uri).isEqualTo(expected) } @@ -46,7 +46,7 @@ class FileUriUtilTest { @Test fun `test unix directory path`() { val virtualFile = createMockVirtualFile("/path/to/directory/", mockIsDirectory = true) - val uri = FileUriUtil.toUriString(virtualFile) + val uri = LspEditorUtil.toUriString(virtualFile) val expected = normalizeFileUri("file:///path/to/directory") assertThat(uri).isEqualTo(expected) } @@ -54,7 +54,7 @@ class FileUriUtilTest { @Test fun `test path with spaces`() { val virtualFile = createMockVirtualFile("/path/with spaces/file.txt") - val uri = FileUriUtil.toUriString(virtualFile) + val uri = LspEditorUtil.toUriString(virtualFile) val expected = normalizeFileUri("file:///path/with%20spaces/file.txt") assertThat(uri).isEqualTo(expected) } @@ -62,7 +62,7 @@ class FileUriUtilTest { @Test fun `test root path`() { val virtualFile = createMockVirtualFile("/") - val uri = FileUriUtil.toUriString(virtualFile) + val uri = LspEditorUtil.toUriString(virtualFile) val expected = normalizeFileUri("file:///") assertThat(uri).isEqualTo(expected) } @@ -70,7 +70,7 @@ class FileUriUtilTest { @Test fun `test path with multiple separators`() { val virtualFile = createMockVirtualFile("/path//to///file.txt") - val uri = FileUriUtil.toUriString(virtualFile) + val uri = LspEditorUtil.toUriString(virtualFile) val expected = normalizeFileUri("file:///path/to/file.txt") assertThat(uri).isEqualTo(expected) } @@ -79,7 +79,7 @@ class FileUriUtilTest { fun `test very long path`() { val longPath = "/a".repeat(256) + "/file.txt" val virtualFile = createMockVirtualFile(longPath) - val uri = FileUriUtil.toUriString(virtualFile) + val uri = LspEditorUtil.toUriString(virtualFile) if (uri != null) { assertThat(uri.startsWith("file:///")).isTrue assertThat(uri.endsWith("/file.txt")).isTrue @@ -89,7 +89,7 @@ class FileUriUtilTest { @Test fun `test relative path`() { val virtualFile = createMockVirtualFile("./relative/path/file.txt") - val uri = FileUriUtil.toUriString(virtualFile) + val uri = LspEditorUtil.toUriString(virtualFile) if (uri != null) { assertThat(uri.contains("file.txt")).isTrue assertThat(uri.startsWith("file:///")).isTrue @@ -102,7 +102,7 @@ class FileUriUtilTest { "jar:file:///path/to/archive.jar!/com/example/Test.class", "jar" ) - val result = FileUriUtil.toUriString(virtualFile) + val result = LspEditorUtil.toUriString(virtualFile) val expected = normalizeFileUri("jar:file:///path/to/archive.jar!/com/example/Test.class") assertThat(result).isEqualTo(expected) } @@ -113,7 +113,7 @@ class FileUriUtilTest { "jrt://java.base/java/lang/String.class", "jrt" ) - val result = FileUriUtil.toUriString(virtualFile) + val result = LspEditorUtil.toUriString(virtualFile) val expected = normalizeFileUri("jrt://java.base/java/lang/String.class") assertThat(result).isEqualTo(expected) } @@ -124,7 +124,7 @@ class FileUriUtilTest { "invalid:url:format", "jar" ) - val result = FileUriUtil.toUriString(virtualFile) + val result = LspEditorUtil.toUriString(virtualFile) assertThat(result).isNull() } @@ -135,7 +135,7 @@ class FileUriUtilTest { "jar", true ) - val result = FileUriUtil.toUriString(virtualFile) + val result = LspEditorUtil.toUriString(virtualFile) val expected = normalizeFileUri("jar:file:///path/to/archive.jar!/com/example") assertThat(result).isEqualTo(expected) } @@ -147,7 +147,7 @@ class FileUriUtilTest { "jar", true ) - val result = FileUriUtil.toUriString(virtualFile) + val result = LspEditorUtil.toUriString(virtualFile) assertThat(result).isNull() } }