Skip to content

Commit a993013

Browse files
dhasani23David Hasanirli
authored
feat(amazonq): enable client-side build (#5704)
* copy JAR * remove notify * remove other notify * fix detekt and test * resolve conflicts * add check for empty diff * rebase * update JAR * always resume even on empty diff * poll correctly * text update * fix detekt * zip sql metadata correctly * update text * fix timeout issue * handle Windows * refactor * remove IDE capability * remove IDE capability everywhere * address comment * Update plugins/amazonq/build.gradle.kts Co-authored-by: Richard Li <[email protected]> --------- Co-authored-by: David Hasani <[email protected]> Co-authored-by: Richard Li <[email protected]>
1 parent 29fd4e7 commit a993013

File tree

17 files changed

+248
-283
lines changed

17 files changed

+248
-283
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "feature",
3+
"description" : "/transform: run all builds client-side"
4+
}

plugins/amazonq/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ val prepareBundledFlare by tasks.registering(Copy::class) {
133133
}
134134

135135
tasks.withType<PrepareSandboxTask>().configureEach {
136+
intoChild(intellijPlatform.projectName.map { "$it/lib" })
137+
.from(file("contrib/QCT-Maven-6-16.jar"))
136138
intoChild(intellijPlatform.projectName.map { "$it/flare" })
137139
.from(prepareBundledFlare)
138140
}

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@ import java.util.concurrent.atomic.AtomicBoolean
7272
import javax.net.ssl.SSLHandshakeException
7373

7474
const val MAX_ZIP_SIZE = 2000000000 // 2GB
75-
const val EXPLAINABILITY_V1 = "EXPLAINABILITY_V1"
76-
const val SELECTIVE_TRANSFORMATION_V2 = "SELECTIVE_TRANSFORMATION_V2"
7775

7876
// constants for handling SDKClientException
7977
const val CONNECTION_REFUSED_ERROR: String = "Connection refused"
@@ -554,6 +552,8 @@ class CodeModernizerSession(
554552

555553
else -> {
556554
LOG.error(e) { e.message.toString() }
555+
LOG.info { "Stopping transformation job [$jobId] due to unexpected error." }
556+
stopTransformation(jobId.id)
557557
CodeModernizerJobCompletedResult.RetryableFailure(
558558
jobId,
559559
message("codemodernizer.notification.info.modernize_failed.connection_failed", e.message.orEmpty()),

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/constants/CodeTransformChatItems.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ fun buildUserInputSQLConversionMetadataChatContent() = CodeTransformChatMessageC
348348
)
349349

350350
fun buildUserInputCustomDependencyVersionsChatContent() = CodeTransformChatMessageContent(
351-
message = "Optionally, provide a .YAML file which specifies custom dependency versions you want Q to upgrade to.",
351+
message = message("codemodernizer.chat.message.custom_dependency_upgrades_prompt"),
352352
buttons = listOf(
353353
confirmCustomDependencyVersionsButton,
354354
continueTransformationButton,
@@ -368,7 +368,7 @@ fun buildInvalidTargetJdkNameChatContent(jdkName: String) = CodeTransformChatMes
368368
)
369369

370370
fun buildCustomDependencyVersionsFileValidChatContent() = CodeTransformChatMessageContent(
371-
message = "I received your .yaml file and will upload it to Q.",
371+
message = message("codemodernizer.chat.message.custom_dependency_upgrades_valid"),
372372
type = CodeTransformChatMessageType.FinalizedAnswer,
373373
)
374374

@@ -415,7 +415,7 @@ fun buildSQLMetadataValidationErrorChatContent(errorReason: String) = CodeTransf
415415

416416
fun buildCustomDependencyVersionsFileInvalidChatContent() = CodeTransformChatMessageContent(
417417
type = CodeTransformChatMessageType.FinalizedAnswer,
418-
message = "The file you uploaded does not follow the format of the sample YAML file provided.",
418+
message = message("codemodernizer.chat.message.custom_dependency_upgrades_invalid"),
419419
)
420420

421421
fun buildUserCancelledChatContent() = CodeTransformChatMessageContent(
@@ -455,7 +455,7 @@ fun buildUserLanguageUpgradeSelectionSummaryChatContent(moduleName: String, targ
455455

456456
fun buildContinueTransformationChatContent() = CodeTransformChatMessageContent(
457457
type = CodeTransformChatMessageType.FinalizedAnswer,
458-
message = "Ok, I will continue without this information.",
458+
message = message("codemodernizer.chat.message.custom_dependency_upgrades_continue"),
459459
)
460460

461461
fun buildCompileLocalInProgressChatContent() = CodeTransformChatMessageContent(

plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,21 @@
44
package software.aws.toolkits.jetbrains.services.codemodernizer.controller
55

66
import com.intellij.ide.BrowserUtil
7+
import com.intellij.openapi.application.ApplicationManager
78
import com.intellij.openapi.application.runInEdt
89
import com.intellij.openapi.fileChooser.FileChooser
910
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
11+
import com.intellij.openapi.fileEditor.FileEditorManager
1012
import com.intellij.openapi.module.ModuleUtil
1113
import com.intellij.openapi.projectRoots.JavaSdkVersion
1214
import com.intellij.openapi.projectRoots.ProjectJdkTable
1315
import com.intellij.openapi.util.io.FileUtil.createTempDirectory
1416
import com.intellij.openapi.vfs.VirtualFile
17+
import com.intellij.testFramework.LightVirtualFile
1518
import kotlinx.coroutines.delay
1619
import kotlinx.coroutines.runBlocking
1720
import kotlinx.coroutines.withContext
21+
import org.jetbrains.yaml.YAMLFileType
1822
import software.amazon.awssdk.services.codewhispererstreaming.model.TransformationDownloadArtifactType
1923
import software.aws.toolkits.core.utils.debug
2024
import software.aws.toolkits.core.utils.error
@@ -28,10 +32,8 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.ArtifactHandler
2832
import software.aws.toolkits.jetbrains.services.codemodernizer.CodeModernizerManager
2933
import software.aws.toolkits.jetbrains.services.codemodernizer.CodeModernizerManager.Companion.LOG
3034
import software.aws.toolkits.jetbrains.services.codemodernizer.CodeTransformTelemetryManager
31-
import software.aws.toolkits.jetbrains.services.codemodernizer.EXPLAINABILITY_V1
3235
import software.aws.toolkits.jetbrains.services.codemodernizer.HilTelemetryMetaData
3336
import software.aws.toolkits.jetbrains.services.codemodernizer.InboundAppMessagesHandler
34-
import software.aws.toolkits.jetbrains.services.codemodernizer.SELECTIVE_TRANSFORMATION_V2
3537
import software.aws.toolkits.jetbrains.services.codemodernizer.client.GumbyClient
3638
import software.aws.toolkits.jetbrains.services.codemodernizer.commands.CodeTransformActionMessage
3739
import software.aws.toolkits.jetbrains.services.codemodernizer.commands.CodeTransformCommand
@@ -76,6 +78,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildTr
7678
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildTransformStoppingChatContent
7779
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserCancelledChatContent
7880
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserHilSelection
81+
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserInputCustomDependencyVersionsChatContent
7982
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserInputLanguageUpgradeChatContent
8083
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserInputSQLConversionMetadataChatContent
8184
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserInputSkipTestsFlagChatContent
@@ -89,6 +92,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.messages.Authenti
8992
import software.aws.toolkits.jetbrains.services.codemodernizer.messages.CodeTransformChatMessage
9093
import software.aws.toolkits.jetbrains.services.codemodernizer.messages.CodeTransformCommandMessage
9194
import software.aws.toolkits.jetbrains.services.codemodernizer.messages.IncomingCodeTransformMessage
95+
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CLIENT_SIDE_BUILD
9296
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerArtifact
9397
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerJobCompletedResult
9498
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeTransformConversationState
@@ -97,12 +101,14 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeTransfo
97101
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CustomerSelection
98102
import software.aws.toolkits.jetbrains.services.codemodernizer.model.DownloadArtifactResult
99103
import software.aws.toolkits.jetbrains.services.codemodernizer.model.DownloadFailureReason
104+
import software.aws.toolkits.jetbrains.services.codemodernizer.model.EXPLAINABILITY_V1
100105
import software.aws.toolkits.jetbrains.services.codemodernizer.model.InvalidTelemetryReason
101106
import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId
102107
import software.aws.toolkits.jetbrains.services.codemodernizer.model.MAVEN_BUILD_RUN_UNIT_TESTS
103108
import software.aws.toolkits.jetbrains.services.codemodernizer.model.MAVEN_BUILD_SKIP_UNIT_TESTS
104109
import software.aws.toolkits.jetbrains.services.codemodernizer.model.MavenCopyCommandsResult
105110
import software.aws.toolkits.jetbrains.services.codemodernizer.model.MavenDependencyReportCommandsResult
111+
import software.aws.toolkits.jetbrains.services.codemodernizer.model.SELECTIVE_TRANSFORMATION_V2
106112
import software.aws.toolkits.jetbrains.services.codemodernizer.model.UploadFailureReason
107113
import software.aws.toolkits.jetbrains.services.codemodernizer.model.ValidationResult
108114
import software.aws.toolkits.jetbrains.services.codemodernizer.panels.managers.CodeModernizerBottomWindowPanelManager
@@ -412,14 +418,11 @@ class CodeTransformChatController(
412418
codeModernizerManager.codeTransformationSession?.let {
413419
it.sessionContext.customBuildCommand = customBuildCommand
414420
}
415-
// TODO: add CLIENT_SIDE_BUILD below when releasing CSB
416-
val transformCapabilities = listOf(EXPLAINABILITY_V1, SELECTIVE_TRANSFORMATION_V2)
421+
val transformCapabilities = listOf(EXPLAINABILITY_V1, CLIENT_SIDE_BUILD, SELECTIVE_TRANSFORMATION_V2)
417422
codeModernizerManager.codeTransformationSession?.let {
418423
it.sessionContext.transformCapabilities = transformCapabilities
419-
codeModernizerManager.runLocalMavenBuild(context.project, it)
420424
}
421-
// TODO: when releasing CSB, delete "runLocalMavenBuild" line above and uncomment line below
422-
// promptForCustomYamlFile()
425+
promptForCustomYamlFile()
423426
}
424427

425428
override suspend fun processCodeTransformCustomDependencyVersions(message: IncomingCodeTransformMessage.CodeTransformConfirmCustomDependencyVersions) {
@@ -461,14 +464,11 @@ class CodeTransformChatController(
461464
}
462465
}
463466

464-
// TODO: uncomment when releasing CSB
465-
/*
466467
private suspend fun promptForCustomYamlFile() {
467468
codeTransformChatHelper.addNewMessage(buildUserInputCustomDependencyVersionsChatContent())
468469
val sampleYAML = """
469-
name: "custom-dependency-management"
470+
name: "dependency-upgrade"
470471
description: "Custom dependency version management for Java migration from JDK 8/11/17 to JDK 17/21"
471-
472472
dependencyManagement:
473473
dependencies:
474474
- identifier: "com.example:library1"
@@ -479,18 +479,18 @@ dependencyManagement:
479479
targetVersion: "3.0.0"
480480
originType: "THIRD_PARTY"
481481
plugins:
482-
- identifier: "com.example.plugin"
482+
- identifier: "com.example:plugin"
483483
targetVersion: "1.2.0"
484484
versionProperty: "plugin.version" # Optional
485485
""".trimIndent()
486486

487-
val virtualFile = LightVirtualFile("sample-dependency-management.yaml", YAMLFileType.YML, sampleYAML)
487+
val virtualFile = LightVirtualFile("dependency_upgrade.yml", YAMLFileType.YML, sampleYAML)
488488
virtualFile.isWritable = true
489489
ApplicationManager.getApplication().invokeLater {
490490
FileEditorManager.getInstance(context.project).openFile(virtualFile, true)
491491
}
492492
}
493-
*/
493+
494494
override suspend fun processCodeTransformContinueAction(message: IncomingCodeTransformMessage.CodeTransformContinue) {
495495
codeTransformChatHelper.addNewMessage(buildContinueTransformationChatContent())
496496
promptForTargetJdkName(message.tabId)

0 commit comments

Comments
 (0)