@@ -8,14 +8,6 @@ import com.intellij.openapi.application.ApplicationManager
8
8
import com.intellij.openapi.components.service
9
9
import com.intellij.openapi.project.Project
10
10
import com.intellij.util.text.nullize
11
- import software.amazon.awssdk.auth.credentials.AnonymousCredentialsProvider
12
- import software.amazon.awssdk.services.codewhisperer.CodeWhispererClient
13
- import software.amazon.awssdk.services.codewhisperer.model.CreateCodeScanRequest
14
- import software.amazon.awssdk.services.codewhisperer.model.CreateCodeScanResponse
15
- import software.amazon.awssdk.services.codewhisperer.model.GetCodeScanRequest
16
- import software.amazon.awssdk.services.codewhisperer.model.GetCodeScanResponse
17
- import software.amazon.awssdk.services.codewhisperer.model.ListCodeScanFindingsRequest
18
- import software.amazon.awssdk.services.codewhisperer.model.ListCodeScanFindingsResponse
19
11
import software.amazon.awssdk.services.codewhispererruntime.CodeWhispererRuntimeClient
20
12
import software.amazon.awssdk.services.codewhispererruntime.model.ChatInteractWithMessageEvent
21
13
import software.amazon.awssdk.services.codewhispererruntime.model.ChatMessageInteractionType
@@ -25,14 +17,20 @@ import software.amazon.awssdk.services.codewhispererruntime.model.CreateUploadUr
25
17
import software.amazon.awssdk.services.codewhispererruntime.model.Dimension
26
18
import software.amazon.awssdk.services.codewhispererruntime.model.GenerateCompletionsRequest
27
19
import software.amazon.awssdk.services.codewhispererruntime.model.GenerateCompletionsResponse
20
+ import software.amazon.awssdk.services.codewhispererruntime.model.GetCodeAnalysisRequest
21
+ import software.amazon.awssdk.services.codewhispererruntime.model.GetCodeAnalysisResponse
28
22
import software.amazon.awssdk.services.codewhispererruntime.model.GetCodeFixJobRequest
29
23
import software.amazon.awssdk.services.codewhispererruntime.model.GetCodeFixJobResponse
30
24
import software.amazon.awssdk.services.codewhispererruntime.model.GetTestGenerationResponse
31
25
import software.amazon.awssdk.services.codewhispererruntime.model.IdeCategory
32
26
import software.amazon.awssdk.services.codewhispererruntime.model.InlineChatUserDecision
33
27
import software.amazon.awssdk.services.codewhispererruntime.model.ListAvailableCustomizationsRequest
28
+ import software.amazon.awssdk.services.codewhispererruntime.model.ListCodeAnalysisFindingsRequest
29
+ import software.amazon.awssdk.services.codewhispererruntime.model.ListCodeAnalysisFindingsResponse
34
30
import software.amazon.awssdk.services.codewhispererruntime.model.ListFeatureEvaluationsResponse
35
31
import software.amazon.awssdk.services.codewhispererruntime.model.SendTelemetryEventResponse
32
+ import software.amazon.awssdk.services.codewhispererruntime.model.StartCodeAnalysisRequest
33
+ import software.amazon.awssdk.services.codewhispererruntime.model.StartCodeAnalysisResponse
36
34
import software.amazon.awssdk.services.codewhispererruntime.model.StartCodeFixJobRequest
37
35
import software.amazon.awssdk.services.codewhispererruntime.model.StartCodeFixJobResponse
38
36
import software.amazon.awssdk.services.codewhispererruntime.model.StartTestGenerationResponse
@@ -51,23 +49,18 @@ import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
51
49
import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeWhispererConnection
52
50
import software.aws.toolkits.jetbrains.services.amazonq.codeWhispererUserContext
53
51
import software.aws.toolkits.jetbrains.services.codewhisperer.customization.CodeWhispererCustomization
54
- import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager
55
52
import software.aws.toolkits.jetbrains.services.codewhisperer.language.CodeWhispererProgrammingLanguage
56
53
import software.aws.toolkits.jetbrains.services.codewhisperer.model.SessionContextNew
57
54
import software.aws.toolkits.jetbrains.services.codewhisperer.service.RequestContext
58
55
import software.aws.toolkits.jetbrains.services.codewhisperer.service.RequestContextNew
59
56
import software.aws.toolkits.jetbrains.services.codewhisperer.service.ResponseContext
60
57
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants
61
58
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererUtil.getTelemetryOptOutPreference
62
- import software.aws.toolkits.jetbrains.services.codewhisperer.util.transform
63
59
import software.aws.toolkits.telemetry.CodewhispererCompletionType
64
60
import software.aws.toolkits.telemetry.CodewhispererSuggestionState
65
61
import java.time.Instant
66
62
import java.util.concurrent.TimeUnit
67
- import kotlin.reflect.KProperty0
68
- import kotlin.reflect.jvm.isAccessible
69
63
70
- // TODO: move this file to package "/client"
71
64
// As the connection is project-level, we need to make this project-level too
72
65
@Deprecated(" Methods can throw a NullPointerException if callee does not check if connection is valid" )
73
66
interface CodeWhispererClientAdaptor : Disposable {
@@ -81,20 +74,11 @@ interface CodeWhispererClientAdaptor : Disposable {
81
74
request : CreateUploadUrlRequest ,
82
75
): CreateUploadUrlResponse
83
76
84
- fun createCodeScan (
85
- request : CreateCodeScanRequest ,
86
- isSigv4 : Boolean = shouldUseSigv4Client(project),
87
- ): CreateCodeScanResponse
77
+ fun createCodeScan (request : StartCodeAnalysisRequest ): StartCodeAnalysisResponse
88
78
89
- fun getCodeScan (
90
- request : GetCodeScanRequest ,
91
- isSigv4 : Boolean = shouldUseSigv4Client(project),
92
- ): GetCodeScanResponse
79
+ fun getCodeScan (request : GetCodeAnalysisRequest ): GetCodeAnalysisResponse
93
80
94
- fun listCodeScanFindings (
95
- request : ListCodeScanFindingsRequest ,
96
- isSigv4 : Boolean = shouldUseSigv4Client(project),
97
- ): ListCodeScanFindingsResponse
81
+ fun listCodeScanFindings (request : ListCodeAnalysisFindingsRequest ): ListCodeAnalysisFindingsResponse
98
82
99
83
fun startCodeFixJob (request : StartCodeFixJobRequest ): StartCodeFixJobResponse
100
84
@@ -272,26 +256,15 @@ interface CodeWhispererClientAdaptor : Disposable {
272
256
companion object {
273
257
fun getInstance (project : Project ): CodeWhispererClientAdaptor = project.service()
274
258
275
- private fun shouldUseSigv4Client (project : Project ) =
276
- CodeWhispererExplorerActionManager .getInstance().checkActiveCodeWhispererConnectionType(project) == CodeWhispererLoginType .Accountless
277
-
278
259
const val INVALID_CODESCANJOBID = " Invalid_CodeScanJobID"
279
260
const val INVALID_CODEFIXJOBID = " Invalid_CodeFixJobID"
280
261
}
281
262
}
282
263
283
264
open class CodeWhispererClientAdaptorImpl (override val project : Project ) : CodeWhispererClientAdaptor {
284
- private val mySigv4Client by lazy { createUnmanagedSigv4Client() }
285
-
286
265
@Volatile
287
266
private var myBearerClient: CodeWhispererRuntimeClient ? = null
288
267
289
- private val KProperty0 <* >.isLazyInitialized: Boolean
290
- get() {
291
- isAccessible = true
292
- return (getDelegate() as Lazy <* >).isInitialized()
293
- }
294
-
295
268
init {
296
269
initClientUpdateListener()
297
270
}
@@ -327,26 +300,12 @@ open class CodeWhispererClientAdaptorImpl(override val project: Project) : CodeW
327
300
override fun createUploadUrl (request : CreateUploadUrlRequest ): CreateUploadUrlResponse =
328
301
bearerClient().createUploadUrl(request)
329
302
330
- override fun createCodeScan (request : CreateCodeScanRequest , isSigv4 : Boolean ): CreateCodeScanResponse =
331
- if (isSigv4) {
332
- mySigv4Client.createCodeScan(request)
333
- } else {
334
- bearerClient().startCodeAnalysis(request.transform()).transform()
335
- }
303
+ override fun createCodeScan (request : StartCodeAnalysisRequest ): StartCodeAnalysisResponse = bearerClient().startCodeAnalysis(request)
336
304
337
- override fun getCodeScan (request : GetCodeScanRequest , isSigv4 : Boolean ): GetCodeScanResponse =
338
- if (isSigv4) {
339
- mySigv4Client.getCodeScan(request)
340
- } else {
341
- bearerClient().getCodeAnalysis(request.transform()).transform()
342
- }
305
+ override fun getCodeScan (request : GetCodeAnalysisRequest ): GetCodeAnalysisResponse = bearerClient().getCodeAnalysis(request)
343
306
344
- override fun listCodeScanFindings (request : ListCodeScanFindingsRequest , isSigv4 : Boolean ): ListCodeScanFindingsResponse =
345
- if (isSigv4) {
346
- mySigv4Client.listCodeScanFindings(request)
347
- } else {
348
- bearerClient().listCodeAnalysisFindings(request.transform()).transform()
349
- }
307
+ override fun listCodeScanFindings (request : ListCodeAnalysisFindingsRequest ): ListCodeAnalysisFindingsResponse =
308
+ bearerClient().listCodeAnalysisFindings(request)
350
309
351
310
override fun startCodeFixJob (request : StartCodeFixJobRequest ): StartCodeFixJobResponse = bearerClient().startCodeFixJob(request)
352
311
@@ -851,9 +810,6 @@ open class CodeWhispererClientAdaptorImpl(override val project: Project) : CodeW
851
810
}
852
811
853
812
override fun dispose () {
854
- if (this ::mySigv4Client.isLazyInitialized) {
855
- mySigv4Client.close()
856
- }
857
813
myBearerClient?.close()
858
814
}
859
815
@@ -880,11 +836,6 @@ open class CodeWhispererClientAdaptorImpl(override val project: Project) : CodeW
880
836
881
837
companion object {
882
838
private val LOG = getLogger<CodeWhispererClientAdaptorImpl >()
883
- private fun createUnmanagedSigv4Client (): CodeWhispererClient = AwsClientManager .getInstance().createUnmanagedClient(
884
- AnonymousCredentialsProvider .create(),
885
- CodeWhispererConstants .Config .Sigv4ClientRegion ,
886
- CodeWhispererConstants .Config .CODEWHISPERER_ENDPOINT
887
- )
888
839
}
889
840
}
890
841
0 commit comments