Skip to content

Commit 8e3949f

Browse files
committed
feedback
1 parent 892577f commit 8e3949f

File tree

4 files changed

+14
-29
lines changed

4 files changed

+14
-29
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ interface AmazonQLanguageServer : LanguageServer {
1919
fun updateTokenCredentials(payload: UpdateCredentialsPayload): CompletableFuture<ResponseMessage>
2020

2121
@JsonNotification("aws/credentials/token/delete")
22-
fun deleteTokenCredentials()
22+
fun deleteTokenCredentials(): CompletableFuture<Unit>
2323
}

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,28 +154,26 @@ class AmazonQLspService(private val project: Project, private val cs: CoroutineS
154154
instance = start()
155155
}
156156

157-
suspend fun execute(runnable: suspend (AmazonQLanguageServer) -> Unit) {
157+
suspend fun<T> execute(runnable: suspend (AmazonQLanguageServer) -> T): T {
158158
val lsp = withTimeout(10.seconds) {
159159
val holder = mutex.withLock { instance }.await()
160160
holder.initializer.join()
161161

162162
holder.languageServer
163163
}
164-
165-
runnable(lsp)
164+
return runnable(lsp)
166165
}
167166

168-
fun executeSync(runnable: suspend (AmazonQLanguageServer) -> Unit) {
167+
fun<T> executeSync(runnable: suspend (AmazonQLanguageServer) -> T): T =
169168
runBlocking(cs.coroutineContext) {
170169
execute(runnable)
171170
}
172-
}
173171

174172
companion object {
175173
private val LOG = getLogger<AmazonQLspService>()
176174
fun getInstance(project: Project) = project.service<AmazonQLspService>()
177175

178-
fun executeIfRunning(project: Project, runnable: (AmazonQLanguageServer) -> Unit) =
176+
fun <T> executeIfRunning(project: Project, runnable: (AmazonQLanguageServer) -> T): T? =
179177
project.serviceIfCreated<AmazonQLspService>()?.executeSync(runnable)
180178
}
181179
}

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

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,28 +26,18 @@ class DefaultAuthCredentialsService(
2626

2727
val payload = createUpdateCredentialsPayload(token)
2828

29-
return CompletableFuture<ResponseMessage>().also { completableFuture ->
30-
AmazonQLspService.executeIfRunning(project) { server ->
31-
server.updateTokenCredentials(payload)
32-
.whenComplete { response, throwable ->
33-
if (throwable != null) {
34-
completableFuture.completeExceptionally(throwable)
35-
} else {
36-
completableFuture.complete(response)
37-
}
38-
}
39-
} ?: completableFuture.completeExceptionally(IllegalStateException("LSP Server not running"))
40-
}
29+
return AmazonQLspService.executeIfRunning(project) { server ->
30+
server.updateTokenCredentials(payload)
31+
} ?: (CompletableFuture.failedFuture(IllegalStateException("LSP Server not running")))
4132
}
4233

43-
override fun deleteTokenCredentials(): CompletableFuture<Unit> {
44-
return CompletableFuture<Unit>().also { completableFuture ->
34+
override fun deleteTokenCredentials(): CompletableFuture<Unit> =
35+
CompletableFuture<Unit>().also { completableFuture ->
4536
AmazonQLspService.executeIfRunning(project) { server ->
4637
server.deleteTokenCredentials()
4738
completableFuture.complete(null)
4839
} ?: completableFuture.completeExceptionally(IllegalStateException("LSP Server not running"))
4940
}
50-
}
5141

5242
private fun createUpdateCredentialsPayload(token: String): UpdateCredentialsPayload =
5343
UpdateCredentialsPayload(

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@ package software.aws.toolkits.jetbrains.services.amazonq.lsp.auth
55

66
import com.intellij.openapi.components.serviceIfCreated
77
import com.intellij.openapi.project.Project
8-
import io.mockk.coEvery
98
import io.mockk.every
10-
import io.mockk.just
119
import io.mockk.mockk
12-
import io.mockk.runs
1310
import io.mockk.verify
1411
import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage
1512
import org.junit.Before
@@ -38,10 +35,10 @@ class DefaultAuthCredentialsServiceTest {
3835
every { project.serviceIfCreated<AmazonQLspService>() } returns mockLspService
3936

4037
// Mock the LSP service's executeSync method as a suspend function
41-
coEvery {
42-
mockLspService.executeSync(any())
38+
every {
39+
mockLspService.executeSync<CompletableFuture<ResponseMessage>>(any())
4340
} coAnswers {
44-
val func = firstArg<suspend (AmazonQLanguageServer) -> Unit>()
41+
val func = firstArg<suspend (AmazonQLanguageServer) -> CompletableFuture<ResponseMessage>>()
4542
func.invoke(mockLanguageServer)
4643
}
4744

@@ -87,7 +84,7 @@ class DefaultAuthCredentialsServiceTest {
8784

8885
@Test
8986
fun `test deleteTokenCredentials success`() {
90-
every { mockLanguageServer.deleteTokenCredentials() } just runs
87+
every { mockLanguageServer.deleteTokenCredentials() } returns CompletableFuture.completedFuture(Unit)
9188

9289
sut.deleteTokenCredentials()
9390

0 commit comments

Comments
 (0)