Skip to content

Commit 17878f8

Browse files
authored
Merge branch 'feature/q-lsp-chat' into q-lsp-chat
2 parents 84fe996 + b57c9d6 commit 17878f8

File tree

25 files changed

+40
-1167
lines changed

25 files changed

+40
-1167
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "removal",
3+
"description" : "/transform: remove option to receive multiple diffs"
4+
}

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

Lines changed: 10 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.CODE_TRANSFORM_TROUBLESH
3030
import software.aws.toolkits.jetbrains.services.amazonq.CODE_TRANSFORM_TROUBLESHOOT_DOC_DOWNLOAD_EXPIRED
3131
import software.aws.toolkits.jetbrains.services.codemodernizer.client.GumbyClient
3232
import software.aws.toolkits.jetbrains.services.codemodernizer.commands.CodeTransformMessageListener
33-
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.createViewDiffButton
3433
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.getDownloadedArtifactTextFromType
35-
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.viewSummaryButton
3634
import software.aws.toolkits.jetbrains.services.codemodernizer.controller.CodeTransformChatHelper
3735
import software.aws.toolkits.jetbrains.services.codemodernizer.messages.CodeTransformChatMessageContent
3836
import software.aws.toolkits.jetbrains.services.codemodernizer.messages.CodeTransformChatMessageType
@@ -43,14 +41,12 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.model.DownloadArt
4341
import software.aws.toolkits.jetbrains.services.codemodernizer.model.DownloadFailureReason
4442
import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId
4543
import software.aws.toolkits.jetbrains.services.codemodernizer.model.ParseZipFailureReason
46-
import software.aws.toolkits.jetbrains.services.codemodernizer.model.PatchInfo
4744
import software.aws.toolkits.jetbrains.services.codemodernizer.model.UnzipFailureReason
4845
import software.aws.toolkits.jetbrains.services.codemodernizer.state.CodeModernizerSessionState
4946
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.getPathToHilArtifactDir
5047
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.isValidCodeTransformConnection
5148
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.openTroubleshootingGuideNotificationAction
5249
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.zipToPath
53-
import software.aws.toolkits.jetbrains.utils.notifyInfo
5450
import software.aws.toolkits.jetbrains.utils.notifyStickyInfo
5551
import software.aws.toolkits.jetbrains.utils.notifyStickyWarn
5652
import software.aws.toolkits.resources.message
@@ -63,20 +59,6 @@ import java.util.concurrent.atomic.AtomicBoolean
6359
const val DOWNLOAD_PROXY_WILDCARD_ERROR: String = "Dangling meta character '*' near index 0"
6460
const val DOWNLOAD_SSL_HANDSHAKE_ERROR: String = "Unable to execute HTTP request: javax.net.ssl.SSLHandshakeException"
6561
const val INVALID_ARTIFACT_ERROR: String = "Invalid artifact"
66-
val patchDescriptions = mapOf(
67-
"Prepare minimal upgrade to Java 17" to "This diff patch covers the set of upgrades for Springboot, JUnit, and PowerMockito frameworks in Java 17.",
68-
"Prepare minimal upgrade to Java 21" to "This diff patch covers the set of upgrades for Springboot, JUnit, and PowerMockito frameworks in Java 21.",
69-
"Popular Enterprise Specifications and Application Frameworks upgrade" to "This diff patch covers the set of upgrades for Jakarta EE 10, Hibernate 6.2, " +
70-
"and Micronaut 3.",
71-
"HTTP Client Utilities, Apache Commons Utilities, and Web Frameworks" to "This diff patch covers the set of upgrades for Apache HTTP Client 5, Apache " +
72-
"Commons utilities (Collections, IO, Lang, Math), and Struts 6.0.",
73-
"Testing Tools and Frameworks upgrade" to "This diff patch covers the set of upgrades for ArchUnit, Mockito, TestContainers, and Cucumber, in addition " +
74-
"to the Jenkins plugins and the Maven Wrapper.",
75-
"Miscellaneous Processing Documentation upgrade" to "This diff patch covers a diverse set of upgrades spanning ORMs, XML processing, API documentation, " +
76-
"and more.",
77-
"Deprecated API replacement, dependency upgrades, and formatting" to "This diff patch replaces deprecated APIs, makes additional dependency version " +
78-
"upgrades, and formats code changes."
79-
)
8062

8163
class ArtifactHandler(
8264
private val project: Project,
@@ -88,21 +70,13 @@ class ArtifactHandler(
8870
private val downloadedSummaries = mutableMapOf<JobId, TransformationSummary>()
8971
private val downloadedBuildLogPath = mutableMapOf<JobId, Path>()
9072
private var isCurrentlyDownloading = AtomicBoolean(false)
91-
private var totalPatchFiles: Int = 0
92-
private var sharedPatchIndex: Int = 0
9373

9474
internal suspend fun displayDiff(job: JobId) {
9575
if (isCurrentlyDownloading.get()) return
9676
when (val result = downloadArtifact(job, TransformationDownloadArtifactType.CLIENT_INSTRUCTIONS)) {
9777
is DownloadArtifactResult.Success -> {
9878
if (result.artifact !is CodeModernizerArtifact) return notifyUnableToApplyPatch("")
99-
totalPatchFiles = result.artifact.patches.size
100-
if (result.artifact.description == null) {
101-
displayDiffUsingPatch(result.artifact.patches.first(), totalPatchFiles, null, job)
102-
} else {
103-
val diffDescription = result.artifact.description[getCurrentPatchIndex()]
104-
displayDiffUsingPatch(result.artifact.patches[getCurrentPatchIndex()], totalPatchFiles, diffDescription, job)
105-
}
79+
displayDiffUsingPatch(result.artifact.patch, job)
10680
}
10781
is DownloadArtifactResult.ParseZipFailure -> notifyUnableToApplyPatch(result.failureReason.errorMessage)
10882
is DownloadArtifactResult.UnzipFailure -> notifyUnableToApplyPatch(result.failureReason.errorMessage)
@@ -260,8 +234,6 @@ class ArtifactHandler(
260234
*/
261235
internal suspend fun displayDiffUsingPatch(
262236
patchFile: VirtualFile,
263-
totalPatchFiles: Int,
264-
diffDescription: PatchInfo?,
265237
jobId: JobId,
266238
) {
267239
withContext(EDT) {
@@ -274,11 +246,7 @@ class ArtifactHandler(
274246
null,
275247
ChangeListManager.getInstance(project)
276248
.addChangeList(
277-
if (diffDescription != null) {
278-
"${diffDescription.name} (${if (diffDescription.isSuccessful) "Success" else "Failure"})"
279-
} else {
280-
patchFile.name
281-
},
249+
patchFile.name,
282250
""
283251
),
284252
null,
@@ -289,42 +257,12 @@ class ArtifactHandler(
289257
dialog.isModal = true
290258

291259
if (dialog.showAndGet()) {
292-
telemetry.submitSelection("Submit-${diffDescription?.name}", jobId.toString())
293-
if (diffDescription == null) {
294-
val resultContent = CodeTransformChatMessageContent(
295-
type = CodeTransformChatMessageType.PendingAnswer,
296-
message = message("codemodernizer.chat.message.changes_applied"),
297-
)
298-
codeTransformChatHelper?.updateLastPendingMessage(resultContent)
299-
} else {
300-
if (getCurrentPatchIndex() < totalPatchFiles) {
301-
val message = "I applied the changes in diff patch ${getCurrentPatchIndex() + 1} of $totalPatchFiles. " +
302-
"${patchDescriptions[diffDescription.name]}"
303-
val notificationMessage = "Amazon Q applied the changes in diff patch ${getCurrentPatchIndex() + 1} of $totalPatchFiles " +
304-
"to your project."
305-
val notificationTitle = "Diff patch ${getCurrentPatchIndex() + 1} of $totalPatchFiles applied"
306-
setCurrentPatchIndex(getCurrentPatchIndex() + 1)
307-
notifyInfo(notificationTitle, notificationMessage, project)
308-
if (getCurrentPatchIndex() == totalPatchFiles) {
309-
codeTransformChatHelper?.updateLastPendingMessage(
310-
CodeTransformChatMessageContent(type = CodeTransformChatMessageType.PendingAnswer, message = message)
311-
)
312-
} else {
313-
codeTransformChatHelper?.updateLastPendingMessage(
314-
CodeTransformChatMessageContent(
315-
type = CodeTransformChatMessageType.PendingAnswer,
316-
message = message,
317-
buttons = listOf(
318-
createViewDiffButton("View diff ${getCurrentPatchIndex() + 1}/$totalPatchFiles"),
319-
viewSummaryButton
320-
)
321-
)
322-
)
323-
}
324-
} else {
325-
// no-op; start a new transformation button already visible at this point
326-
}
327-
}
260+
telemetry.submitSelection("Submit", jobId.toString())
261+
val resultContent = CodeTransformChatMessageContent(
262+
type = CodeTransformChatMessageType.PendingAnswer,
263+
message = message("codemodernizer.chat.message.changes_applied"),
264+
)
265+
codeTransformChatHelper?.updateLastPendingMessage(resultContent)
328266
} else {
329267
telemetry.submitSelection("Cancel", jobId.toString())
330268
}
@@ -411,7 +349,7 @@ class ArtifactHandler(
411349
),
412350
)
413351

414-
fun notifyUnableToShowSummary() {
352+
private fun notifyUnableToShowSummary() {
415353
LOG.error { "Unable to display summary" }
416354
notifyStickyWarn(
417355
message("codemodernizer.notification.warn.view_summary_failed.title"),
@@ -425,7 +363,7 @@ class ArtifactHandler(
425363
)
426364
}
427365

428-
fun notifyUnableToShowBuildLog() {
366+
private fun notifyUnableToShowBuildLog() {
429367
LOG.error { "Unable to display build log" }
430368
notifyStickyWarn(
431369
message("codemodernizer.notification.warn.view_build_log_failed.title"),
@@ -447,12 +385,6 @@ class ArtifactHandler(
447385

448386
fun getSummary(job: JobId) = downloadedSummaries[job]
449387

450-
private fun getCurrentPatchIndex() = sharedPatchIndex
451-
452-
private fun setCurrentPatchIndex(index: Int) {
453-
sharedPatchIndex = index
454-
}
455-
456388
private fun showSummaryFromFile(summaryFile: File) {
457389
val summaryMarkdownVirtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(summaryFile)
458390
if (summaryMarkdownVirtualFile != null) {

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ import javax.net.ssl.SSLHandshakeException
7272

7373
const val MAX_ZIP_SIZE = 2000000000 // 2GB
7474
const val EXPLAINABILITY_V1 = "EXPLAINABILITY_V1"
75-
const val SELECTIVE_TRANSFORMATION_V1 = "SELECTIVE_TRANSFORMATION_V1"
7675

7776
// constants for handling SDKClientException
7877
const val CONNECTION_REFUSED_ERROR: String = "Connection refused"

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ private enum class CodeTransformMessageTypes(val type: String) {
4747
CodeTransformCancel("codetransform-cancel"),
4848
CodeTransformContinue("codetransform-continue"),
4949
CodeTransformConfirmSkipTests("codetransform-confirm-skip-tests"),
50-
CodeTransformConfirmOneOrMultipleDiffs("codetransform-confirm-one-or-multiple-diffs"),
5150
CodeTransformNew("codetransform-new"),
5251
CodeTransformOpenTransformHub("codetransform-open-transform-hub"),
5352
CodeTransformOpenMvnBuild("codetransform-open-mvn-build"),
@@ -84,7 +83,6 @@ class CodeTransformChatApp : AmazonQApp {
8483
CodeTransformMessageTypes.CodeTransformContinue.type to IncomingCodeTransformMessage.CodeTransformContinue::class,
8584
CodeTransformMessageTypes.ChatPrompt.type to IncomingCodeTransformMessage.ChatPrompt::class,
8685
CodeTransformMessageTypes.CodeTransformConfirmSkipTests.type to IncomingCodeTransformMessage.CodeTransformConfirmSkipTests::class,
87-
CodeTransformMessageTypes.CodeTransformConfirmOneOrMultipleDiffs.type to IncomingCodeTransformMessage.CodeTransformConfirmOneOrMultipleDiffs::class,
8886
CodeTransformMessageTypes.CodeTransformNew.type to IncomingCodeTransformMessage.CodeTransformNew::class,
8987
CodeTransformMessageTypes.CodeTransformOpenTransformHub.type to IncomingCodeTransformMessage.CodeTransformOpenTransformHub::class,
9088
CodeTransformMessageTypes.CodeTransformOpenMvnBuild.type to IncomingCodeTransformMessage.CodeTransformOpenMvnBuild::class,
@@ -193,7 +191,6 @@ class CodeTransformChatApp : AmazonQApp {
193191
is IncomingCodeTransformMessage.CodeTransformStop -> inboundAppMessagesHandler.processCodeTransformStopAction(message.tabId)
194192
is IncomingCodeTransformMessage.ChatPrompt -> inboundAppMessagesHandler.processChatPromptMessage(message)
195193
is IncomingCodeTransformMessage.CodeTransformConfirmSkipTests -> inboundAppMessagesHandler.processCodeTransformConfirmSkipTests(message)
196-
is IncomingCodeTransformMessage.CodeTransformConfirmOneOrMultipleDiffs -> inboundAppMessagesHandler.processCodeTransformOneOrMultipleDiffs(message)
197194
is IncomingCodeTransformMessage.CodeTransformContinue -> inboundAppMessagesHandler.processCodeTransformContinueAction(message)
198195
is IncomingCodeTransformMessage.CodeTransformNew -> inboundAppMessagesHandler.processCodeTransformNewAction(message)
199196
is IncomingCodeTransformMessage.CodeTransformOpenTransformHub -> inboundAppMessagesHandler.processCodeTransformOpenTransformHub(message)

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ interface InboundAppMessagesHandler {
2727

2828
suspend fun processCodeTransformConfirmSkipTests(message: IncomingCodeTransformMessage.CodeTransformConfirmSkipTests)
2929

30-
suspend fun processCodeTransformOneOrMultipleDiffs(message: IncomingCodeTransformMessage.CodeTransformConfirmOneOrMultipleDiffs)
31-
3230
suspend fun processCodeTransformOpenTransformHub(message: IncomingCodeTransformMessage.CodeTransformOpenTransformHub)
3331

3432
suspend fun processCodeTransformOpenMvnBuild(message: IncomingCodeTransformMessage.CodeTransformOpenMvnBuild)

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

Lines changed: 4 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,6 @@ private val confirmSkipTestsSelectionButton = Button(
8080
id = CodeTransformButtonId.ConfirmSkipTests.id,
8181
)
8282

83-
private val confirmOneOrMultipleDiffsSelectionButton = Button(
84-
keepCardAfterClick = false,
85-
waitMandatoryFormItems = true,
86-
text = message("codemodernizer.chat.message.button.confirm"),
87-
id = CodeTransformButtonId.ConfirmOneOrMultipleDiffs.id,
88-
)
89-
9083
private val confirmCustomDependencyVersionsButton = Button(
9184
keepCardAfterClick = true,
9285
waitMandatoryFormItems = true,
@@ -230,22 +223,6 @@ private val selectSkipTestsFlagFormItem = FormItem(
230223
)
231224
)
232225

233-
private val selectOneOrMultipleDiffsFlagFormItem = FormItem(
234-
id = CodeTransformFormItemId.SelectOneOrMultipleDiffsFlag.id,
235-
title = message("codemodernizer.chat.form.user_selection.item.choose_one_or_multiple_diffs_option"),
236-
mandatory = true,
237-
options = listOf(
238-
FormItemOption(
239-
label = message("codemodernizer.chat.message.one_or_multiple_diffs_form.one_diff"),
240-
value = message("codemodernizer.chat.message.one_or_multiple_diffs_form.one_diff"),
241-
),
242-
FormItemOption(
243-
label = message("codemodernizer.chat.message.one_or_multiple_diffs_form.multiple_diffs"),
244-
value = message("codemodernizer.chat.message.one_or_multiple_diffs_form.multiple_diffs"),
245-
)
246-
)
247-
)
248-
249226
private fun getUserLanguageUpgradeSelectionFormattedMarkdown(moduleName: String, targetJdkVersion: String): String = """
250227
### ${message("codemodernizer.chat.prompt.title.details")}
251228
-------------
@@ -338,32 +315,12 @@ fun buildUserInputSkipTestsFlagChatContent(): CodeTransformChatMessageContent =
338315
formItems = listOf(selectSkipTestsFlagFormItem),
339316
type = CodeTransformChatMessageType.FinalizedAnswer,
340317
)
341-
fun buildUserInputOneOrMultipleDiffsChatIntroContent(version: String): CodeTransformChatMessageContent =
342-
CodeTransformChatMessageContent(
343-
message = message("codemodernizer.chat.message.one_or_multiple_diffs", version.substring(4)), // extract "17" / "21" from "JDK_17" / "JDK_21"
344-
type = CodeTransformChatMessageType.FinalizedAnswer,
345-
)
346-
fun buildUserInputOneOrMultipleDiffsFlagChatContent(): CodeTransformChatMessageContent =
347-
CodeTransformChatMessageContent(
348-
message = message("codemodernizer.chat.form.user_selection.title"),
349-
buttons = listOf(
350-
confirmOneOrMultipleDiffsSelectionButton,
351-
cancelUserSelectionButton,
352-
),
353-
formItems = listOf(selectOneOrMultipleDiffsFlagFormItem),
354-
type = CodeTransformChatMessageType.FinalizedAnswer,
355-
)
356318

357319
fun buildUserSkipTestsFlagSelectionChatContent(skipTestsSelection: String) = CodeTransformChatMessageContent(
358320
type = CodeTransformChatMessageType.FinalizedAnswer,
359321
message = message("codemodernizer.chat.message.skip_tests_form.response", skipTestsSelection.lowercase())
360322
)
361323

362-
fun buildUserOneOrMultipleDiffsSelectionChatContent(oneOrMultipleDiffsSelection: String) = CodeTransformChatMessageContent(
363-
type = CodeTransformChatMessageType.FinalizedAnswer,
364-
message = message("codemodernizer.chat.message.one_or_multiple_diffs_form.response", oneOrMultipleDiffsSelection.lowercase())
365-
)
366-
367324
fun buildUserInputLanguageUpgradeChatContent(project: Project, validationResult: ValidationResult): CodeTransformChatMessageContent {
368325
val moduleBuildFiles = validationResult.validatedBuildFiles
369326

@@ -597,7 +554,7 @@ fun buildTransformResumingChatContent() = CodeTransformChatMessageContent(
597554
type = CodeTransformChatMessageType.PendingAnswer,
598555
)
599556

600-
fun buildTransformResultChatContent(result: CodeModernizerJobCompletedResult, totalPatchFiles: Int? = null): CodeTransformChatMessageContent {
557+
fun buildTransformResultChatContent(result: CodeModernizerJobCompletedResult): CodeTransformChatMessageContent {
601558
val resultMessage = when (result) {
602559
is CodeModernizerJobCompletedResult.JobAbortedZipTooLarge -> {
603560
"${message(
@@ -611,18 +568,10 @@ fun buildTransformResultChatContent(result: CodeModernizerJobCompletedResult, to
611568
buildZipUploadFailedChatMessage(result.failureReason)
612569
}
613570
is CodeModernizerJobCompletedResult.JobCompletedSuccessfully -> {
614-
if (totalPatchFiles == 1) {
615-
message("codemodernizer.chat.message.result.success")
616-
} else {
617-
message("codemodernizer.chat.message.result.success.multiple_diffs")
618-
}
571+
message("codemodernizer.chat.message.result.success")
619572
}
620573
is CodeModernizerJobCompletedResult.JobPartiallySucceeded -> {
621-
if (totalPatchFiles == 1) {
622-
message("codemodernizer.chat.message.result.partially_success")
623-
} else {
624-
message("codemodernizer.chat.message.result.partially_success.multiple_diffs")
625-
}
574+
message("codemodernizer.chat.message.result.partially_success")
626575
}
627576
is CodeModernizerJobCompletedResult.JobFailed -> {
628577
message("codemodernizer.chat.message.result.fail_with_known_reason", result.failureReason)
@@ -649,7 +598,7 @@ fun buildTransformResultChatContent(result: CodeModernizerJobCompletedResult, to
649598
type = CodeTransformChatMessageType.FinalizedAnswer,
650599
message = resultMessage,
651600
buttons = if (result is CodeModernizerJobCompletedResult.JobPartiallySucceeded || result is CodeModernizerJobCompletedResult.JobCompletedSuccessfully) {
652-
listOf(createViewDiffButton(if (totalPatchFiles == 1) "View diff" else "View diff 1/$totalPatchFiles"), viewSummaryButton)
601+
listOf(createViewDiffButton("View diff"), viewSummaryButton)
653602
} else if (result is CodeModernizerJobCompletedResult.JobFailedInitialBuild && result.hasBuildLog) {
654603
listOf(viewBuildLog)
655604
} else {

0 commit comments

Comments
 (0)