Skip to content

Commit 7125dbe

Browse files
committed
updateConfiguration
1 parent a8da8ca commit 7125dbe

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ 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.UpdateConfigurationParams
1213
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.UpdateCredentialsPayload
1314
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.dependencies.DidChangeDependencyPathsParams
1415
import java.util.concurrent.CompletableFuture
@@ -29,4 +30,7 @@ interface AmazonQLanguageServer : LanguageServer {
2930

3031
@JsonRequest("aws/getConfigurationFromServer")
3132
fun getConfigurationFromServer(params: GetConfigurationFromServerParams): CompletableFuture<LspServerConfigurations>
33+
34+
@JsonRequest("aws/updateConfiguration")
35+
fun updateConfiguration(params: UpdateConfigurationParams): CompletableFuture<LspServerConfigurations>
3236
}

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,14 @@ import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenPr
1515
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProviderListener
1616
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
1717
import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager
18+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.LspServerConfigurations
19+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.UpdateConfigurationParams
1820
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.BearerCredentials
1921
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.UpdateCredentialsPayload
2022
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.UpdateCredentialsPayloadData
23+
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfile
24+
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfileManager
25+
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfileSelectedListener
2126
import software.aws.toolkits.jetbrains.utils.isQConnected
2227
import software.aws.toolkits.jetbrains.utils.isQExpired
2328
import java.util.concurrent.CompletableFuture
@@ -28,16 +33,19 @@ class DefaultAuthCredentialsService(
2833
serverInstance: Disposable,
2934
) : AuthCredentialsService,
3035
BearerTokenProviderListener,
31-
ToolkitConnectionManagerListener {
36+
ToolkitConnectionManagerListener,
37+
QRegionProfileSelectedListener {
3238

3339
init {
3440
project.messageBus.connect(serverInstance).apply {
3541
subscribe(BearerTokenProviderListener.TOPIC, this@DefaultAuthCredentialsService)
3642
subscribe(ToolkitConnectionManagerListener.TOPIC, this@DefaultAuthCredentialsService)
43+
subscribe(QRegionProfileSelectedListener.TOPIC, this@DefaultAuthCredentialsService)
3744
}
3845

3946
if (isQConnected(project) && !isQExpired(project)) {
4047
updateTokenFromActiveConnection()
48+
updateConfiguration()
4149
}
4250
}
4351

@@ -108,4 +116,20 @@ class DefaultAuthCredentialsService(
108116
encrypted = false
109117
)
110118
}
119+
120+
override fun onProfileSelected(project: Project, profile: QRegionProfile?) {
121+
updateConfiguration()
122+
}
123+
124+
private fun updateConfiguration(): CompletableFuture<LspServerConfigurations> {
125+
val payload = UpdateConfigurationParams(
126+
section = "aws.q",
127+
settings = mapOf(
128+
"profileArn" to QRegionProfileManager.getInstance().activeProfile(project)?.arn
129+
)
130+
)
131+
return AmazonQLspService.executeIfRunning(project) { server ->
132+
server.updateConfiguration(payload)
133+
} ?: (CompletableFuture.failedFuture(IllegalStateException("LSP Server not running")))
134+
}
111135
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,10 @@ data class WorkspaceInfo(val workspaceRoot: String, val workspaceId: String)
88

99
// This represents the entire array
1010
data class LspServerConfigurations(val workspaces: List<WorkspaceInfo>)
11+
12+
data class UpdateConfigurationParams(
13+
val section: String,
14+
val settings: LSPAny,
15+
)
16+
17+
typealias LSPAny = Any?

0 commit comments

Comments
 (0)