Skip to content

Commit 0429617

Browse files
committed
added in forms for one or multiple diffs and made manifest changes accordingly
1 parent 853b40c commit 0429617

File tree

16 files changed

+141
-39
lines changed

16 files changed

+141
-39
lines changed

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

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ val patchDescriptions: Map<String, String> = mapOf(
8080
"Popular Enterprise Specifications and Application Frameworks" to "This diff patch covers the set of upgrades for Jakarta EE 10, Hibernate 6.2, and Micronaut 3.",
8181
"HTTP Client Utilities, Apache Commons Utilities, and Web Frameworks" to "This diff patch covers the set of upgrades for Apache HTTP Client 5, Apache Commons utilities (Collections, IO, Lang, Math), Struts 6.0.",
8282
"Testing Tools and Frameworks" to "This diff patch covers the set of upgrades for ArchUnit, Mockito, TestContainers, Cucumber, and additionally, Jenkins plugins and the Maven Wrapper.",
83-
"Miscellaneous Processing Documentation" to "This diff patch covers a diverse set of upgrades spanning ORMs, XML processing, API documentation, and more."
83+
"Miscellaneous Processing Documentation" to "This diff patch covers a diverse set of upgrades spanning ORMs, XML processing, API documentation, and more.",
84+
"Updated dependencies to latest version" to "",
85+
"Upgrade Deprecated API" to ""
8486
)
8587

8688
class ArtifactHandler(private val project: Project, private val clientAdaptor: GumbyClient, private val codeTransformChatHelper: CodeTransformChatHelper? = null) {
@@ -99,8 +101,6 @@ class ArtifactHandler(private val project: Project, private val clientAdaptor: G
99101
when (val result = downloadArtifact(job, TransformationDownloadArtifactType.CLIENT_INSTRUCTIONS)) {
100102
is DownloadArtifactResult.Success -> {
101103
if (result.artifact !is CodeModernizerArtifact) return notifyUnableToApplyPatch("")
102-
// notifyStickyInfo("chosen diff", result.artifact.patches[getCurrentPatchIndex()].name)
103-
// notifyStickyInfo("chosen description", result.artifact.description[getCurrentPatchIndex()].name)
104104
totalPatchFiles = result.artifact.patches.size
105105
if (result.artifact.description == null){
106106
displayDiffUsingPatch(result.artifact.patches.first(), totalPatchFiles, null, job, source)
@@ -203,23 +203,23 @@ class ArtifactHandler(private val project: Project, private val clientAdaptor: G
203203
if (artifactType == TransformationDownloadArtifactType.CLIENT_INSTRUCTIONS) {
204204
notifyDownloadStart()
205205
}
206-
// val downloadResultsResponse = if (artifactType == TransformationDownloadArtifactType.LOGS) {
207-
// clientAdaptor.downloadExportResultArchive(job, null, TransformationDownloadArtifactType.LOGS)
208-
// } else {
209-
// clientAdaptor.downloadExportResultArchive(job)
210-
// }
206+
val downloadResultsResponse = if (artifactType == TransformationDownloadArtifactType.LOGS) {
207+
clientAdaptor.downloadExportResultArchive(job, null, TransformationDownloadArtifactType.LOGS)
208+
} else {
209+
clientAdaptor.downloadExportResultArchive(job)
210+
}
211211

212212
// 3. Convert to zip
213213
LOG.info { "Downloaded the export result archive, about to transform to zip" }
214214
val path: Path
215215
val totalDownloadBytes: Int
216216
val zipPath: String
217217
try {
218-
// val result = unzipToPath(downloadResultsResponse)
219-
// path = result.first
220-
// totalDownloadBytes = result.second
221-
// zipPath = path.toAbsolutePath().toString()
222-
zipPath = "/Users/ntarakad/Desktop/SampleArtifactOneDiffNoJson.zip"
218+
val result = unzipToPath(downloadResultsResponse)
219+
path = result.first
220+
totalDownloadBytes = result.second
221+
zipPath = path.toAbsolutePath().toString()
222+
// zipPath = "/Users/ntarakad/Desktop/SampleArtifactOneDiffNoJson.zip"
223223
LOG.info { "Successfully converted the download to a zip at $zipPath." }
224224
} catch (e: Exception) {
225225
LOG.error { e.message.toString() }
@@ -234,19 +234,19 @@ class ArtifactHandler(private val project: Project, private val clientAdaptor: G
234234
} else {
235235
DownloadArtifactResult.Success(CodeModernizerArtifact.create(zipPath), zipPath)
236236
}
237-
// if (artifactType == TransformationDownloadArtifactType.LOGS) {
238-
// downloadedBuildLogPath[job] = path
239-
// } else {
240-
// downloadedArtifacts[job] = path
241-
// }
237+
if (artifactType == TransformationDownloadArtifactType.LOGS) {
238+
downloadedBuildLogPath[job] = path
239+
} else {
240+
downloadedArtifacts[job] = path
241+
}
242242
output
243243
} catch (e: RuntimeException) {
244244
LOG.error { e.message.toString() }
245245
LOG.error { "Unable to find patch for file: $zipPath" }
246246
telemetryErrorMessage = "Unexpected error when downloading result ${e.localizedMessage}"
247247
DownloadArtifactResult.ParseZipFailure(ParseZipFailureReason(artifactType, e.message.orEmpty()))
248248
} finally {
249-
// telemetry.downloadArtifact(mapArtifactTypes(artifactType), downloadStartTime, job, totalDownloadBytes, telemetryErrorMessage)
249+
telemetry.downloadArtifact(mapArtifactTypes(artifactType), downloadStartTime, job, totalDownloadBytes, telemetryErrorMessage)
250250
}
251251
} catch (e: Exception) {
252252
if (isPreFetch) return DownloadArtifactResult.Skipped

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ const val UPLOAD_ZIP_MANIFEST_VERSION = 1.0F
6969
const val MAX_ZIP_SIZE = 2000000000 // 2GB
7070
const val HIL_1P_UPGRADE_CAPABILITY = "HIL_1pDependency_VersionUpgrade"
7171
const val EXPLAINABILITY_V1 = "EXPLAINABILITY_V1"
72+
const val SELECTIVE_TRANSFORMATION_V1 = "SELECTIVE_TRANSFORMATION_V1"
7273

7374
// constants for handling SDKClientException
7475
const val CONNECTION_REFUSED_ERROR: String = "Connection refused"
@@ -212,7 +213,7 @@ class CodeModernizerSession(
212213
telemetryErrorMessage = "Cancelled when about to upload project"
213214
return CodeModernizerStartJobResult.Cancelled
214215
}
215-
// uploadId = payload?.let { uploadPayload(it) }.toString()
216+
uploadId = payload?.let { uploadPayload(it) }.toString()
216217
} catch (e: AlreadyDisposedException) {
217218
LOG.warn { e.localizedMessage }
218219
telemetryErrorMessage = "Disposed when about to upload zip"
@@ -273,9 +274,9 @@ class CodeModernizerSession(
273274
return CodeModernizerStartJobResult.ZipUploadFailed(UploadFailureReason.OTHER(e.localizedMessage))
274275
} finally {
275276
telemetry.uploadProject(payloadSize, startTime, true, telemetryErrorMessage)
276-
if (payload != null) {
277-
deleteUploadArtifact(payload)
278-
}
277+
// if (payload != null) {
278+
// deleteUploadArtifact(payload)
279+
// }
279280
}
280281

281282
// Send upload completion message to chat (only if successful)
@@ -286,8 +287,8 @@ class CodeModernizerSession(
286287
LOG.warn { "Job was cancelled by user before start job was called" }
287288
return CodeModernizerStartJobResult.Cancelled
288289
}
289-
// val startJobResponse = startJob(uploadId)
290-
val startJobResponse = StartTransformationResponse.builder().transformationJobId("123").build()
290+
val startJobResponse = startJob(uploadId)
291+
// val startJobResponse = StartTransformationResponse.builder().transformationJobId("123").build()
291292
state.putJobHistory(sessionContext, TransformationStatus.STARTED, startJobResponse.transformationJobId())
292293
state.currentJobStatus = TransformationStatus.STARTED
293294
telemetry.jobStart(startTime, JobId(startJobResponse.transformationJobId()))
@@ -426,7 +427,7 @@ class CodeModernizerSession(
426427
): CodeModernizerJobCompletedResult {
427428
try {
428429
state.currentJobId = jobId
429-
return CodeModernizerJobCompletedResult.JobCompletedSuccessfully(jobId)
430+
// return CodeModernizerJobCompletedResult.JobCompletedSuccessfully(jobId)
430431

431432
// add delay to avoid the throttling error
432433
delay(1000)

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ private enum class CodeTransformMessageTypes(val type: String) {
3636
CodeTransformStop("codetransform-stop"),
3737
CodeTransformCancel("codetransform-cancel"),
3838
CodeTransformConfirmSkipTests("codetransform-confirm-skip-tests"),
39+
CodeTransformConfirmOneOrMultipleDiffs("codetransform-confirm-one-or-multiple-diffs"),
3940
CodeTransformNew("codetransform-new"),
4041
CodeTransformOpenTransformHub("codetransform-open-transform-hub"),
4142
CodeTransformOpenMvnBuild("codetransform-open-mvn-build"),
@@ -66,6 +67,7 @@ class CodeTransformChatApp : AmazonQApp {
6667
CodeTransformMessageTypes.CodeTransformStop.type to IncomingCodeTransformMessage.CodeTransformStop::class,
6768
CodeTransformMessageTypes.CodeTransformCancel.type to IncomingCodeTransformMessage.CodeTransformCancel::class,
6869
CodeTransformMessageTypes.CodeTransformConfirmSkipTests.type to IncomingCodeTransformMessage.CodeTransformConfirmSkipTests::class,
70+
CodeTransformMessageTypes.CodeTransformConfirmOneOrMultipleDiffs.type to IncomingCodeTransformMessage.CodeTransformConfirmOneOrMultipleDiffs::class,
6971
CodeTransformMessageTypes.CodeTransformNew.type to IncomingCodeTransformMessage.CodeTransformNew::class,
7072
CodeTransformMessageTypes.CodeTransformOpenTransformHub.type to IncomingCodeTransformMessage.CodeTransformOpenTransformHub::class,
7173
CodeTransformMessageTypes.CodeTransformOpenMvnBuild.type to IncomingCodeTransformMessage.CodeTransformOpenMvnBuild::class,
@@ -156,6 +158,7 @@ class CodeTransformChatApp : AmazonQApp {
156158
is IncomingCodeTransformMessage.CodeTransformCancel -> inboundAppMessagesHandler.processCodeTransformCancelAction(message)
157159
is IncomingCodeTransformMessage.CodeTransformStop -> inboundAppMessagesHandler.processCodeTransformStopAction(message.tabId)
158160
is IncomingCodeTransformMessage.CodeTransformConfirmSkipTests -> inboundAppMessagesHandler.processCodeTransformConfirmSkipTests(message)
161+
is IncomingCodeTransformMessage.CodeTransformConfirmOneOrMultipleDiffs -> inboundAppMessagesHandler.processCodeTransformOneOrMultipleDiffs(message)
159162
is IncomingCodeTransformMessage.CodeTransformNew -> inboundAppMessagesHandler.processCodeTransformNewAction(message)
160163
is IncomingCodeTransformMessage.CodeTransformOpenTransformHub -> inboundAppMessagesHandler.processCodeTransformOpenTransformHub(message)
161164
is IncomingCodeTransformMessage.CodeTransformOpenMvnBuild -> inboundAppMessagesHandler.processCodeTransformOpenMvnBuild(message)

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

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

1818
suspend fun processCodeTransformConfirmSkipTests(message: IncomingCodeTransformMessage.CodeTransformConfirmSkipTests)
1919

20+
suspend fun processCodeTransformOneOrMultipleDiffs(message: IncomingCodeTransformMessage.CodeTransformConfirmOneOrMultipleDiffs)
21+
2022
suspend fun processCodeTransformOpenTransformHub(message: IncomingCodeTransformMessage.CodeTransformOpenTransformHub)
2123

2224
suspend fun processCodeTransformOpenMvnBuild(message: IncomingCodeTransformMessage.CodeTransformOpenMvnBuild)

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

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,13 @@ private val confirmSkipTestsSelectionButton = Button(
5555
id = CodeTransformButtonId.ConfirmSkipTests.id,
5656
)
5757

58+
private val confirmOneOrMultipleDiffsSelectionButton = Button(
59+
keepCardAfterClick = false,
60+
waitMandatoryFormItems = true,
61+
text = message("codemodernizer.chat.message.button.confirm"),
62+
id = CodeTransformButtonId.ConfirmOneOrMultipleDiffs.id,
63+
)
64+
5865
private val openMvnBuildButton = Button(
5966
id = CodeTransformButtonId.OpenMvnBuild.id,
6067
text = message("codemodernizer.chat.message.button.view_build"),
@@ -165,6 +172,22 @@ private val selectSkipTestsFlagFormItem = FormItem(
165172
)
166173
)
167174

175+
private val selectOneOrMultipleDiffsFlagFormItem = FormItem(
176+
id = CodeTransformFormItemId.SelectOneOrMultipleDiffsFlag.id,
177+
title = message("codemodernizer.chat.form.user_selection.item.choose_one_or_multiple_diffs_option"),
178+
mandatory = true,
179+
options = listOf(
180+
FormItemOption(
181+
label = message("codemodernizer.chat.message.one_or_multiple_diffs_form.one_diff"),
182+
value = message("codemodernizer.chat.message.one_or_multiple_diffs_form.one_diff"),
183+
),
184+
FormItemOption(
185+
label = message("codemodernizer.chat.message.one_or_multiple_diffs_form.multiple_diffs"),
186+
value = message("codemodernizer.chat.message.one_or_multiple_diffs_form.multiple_diffs"),
187+
)
188+
)
189+
)
190+
168191
private fun getUserSelectionFormattedMarkdown(moduleName: String): String = """
169192
### ${message("codemodernizer.chat.prompt.title.details")}
170193
-------------
@@ -231,12 +254,32 @@ fun buildUserInputSkipTestsFlagChatContent(): CodeTransformChatMessageContent =
231254
formItems = listOf(selectSkipTestsFlagFormItem),
232255
type = CodeTransformChatMessageType.FinalizedAnswer,
233256
)
257+
fun buildUserInputOneOrMultipleDiffsChatIntroContent(): CodeTransformChatMessageContent =
258+
CodeTransformChatMessageContent(
259+
message = message("codemodernizer.chat.message.one_or_multiple_diffs"),
260+
type = CodeTransformChatMessageType.FinalizedAnswer,
261+
)
262+
fun buildUserInputOneOrMultipleDiffsFlagChatContent(): CodeTransformChatMessageContent =
263+
CodeTransformChatMessageContent(
264+
message = message("codemodernizer.chat.form.user_selection.title"),
265+
buttons = listOf(
266+
confirmOneOrMultipleDiffsSelectionButton,
267+
cancelUserSelectionButton,
268+
),
269+
formItems = listOf(selectOneOrMultipleDiffsFlagFormItem),
270+
type = CodeTransformChatMessageType.FinalizedAnswer,
271+
)
234272

235273
fun buildUserSkipTestsFlagSelectionChatContent(skipTestsSelection: String) = CodeTransformChatMessageContent(
236274
type = CodeTransformChatMessageType.FinalizedAnswer,
237275
message = message("codemodernizer.chat.message.skip_tests_form.response", skipTestsSelection.lowercase())
238276
)
239277

278+
fun buildUserOneOrMultipleDiffsSelectionChatContent(oneOrMultipleDiffsSelection: String) = CodeTransformChatMessageContent(
279+
type = CodeTransformChatMessageType.FinalizedAnswer,
280+
message = message("codemodernizer.chat.message.one_or_multiple_diffs_form.response", oneOrMultipleDiffsSelection.lowercase())
281+
)
282+
240283
fun buildUserInputChatContent(project: Project, validationResult: ValidationResult): CodeTransformChatMessageContent {
241284
val moduleBuildFiles = validationResult.validatedBuildFiles
242285

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ import software.aws.toolkits.jetbrains.services.amazonq.auth.AuthFollowUpType
2222
import software.aws.toolkits.jetbrains.services.codemodernizer.ArtifactHandler
2323
import software.aws.toolkits.jetbrains.services.codemodernizer.CodeModernizerManager
2424
import software.aws.toolkits.jetbrains.services.codemodernizer.CodeTransformTelemetryManager
25+
import software.aws.toolkits.jetbrains.services.codemodernizer.EXPLAINABILITY_V1
2526
import software.aws.toolkits.jetbrains.services.codemodernizer.HilTelemetryMetaData
2627
import software.aws.toolkits.jetbrains.services.codemodernizer.InboundAppMessagesHandler
28+
import software.aws.toolkits.jetbrains.services.codemodernizer.SELECTIVE_TRANSFORMATION_V1
2729
import software.aws.toolkits.jetbrains.services.codemodernizer.client.GumbyClient
2830
import software.aws.toolkits.jetbrains.services.codemodernizer.commands.CodeTransformActionMessage
2931
import software.aws.toolkits.jetbrains.services.codemodernizer.commands.CodeTransformCommand
@@ -58,8 +60,11 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildTr
5860
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserCancelledChatContent
5961
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserHilSelection
6062
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserInputChatContent
63+
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserInputOneOrMultipleDiffsChatIntroContent
64+
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserInputOneOrMultipleDiffsFlagChatContent
6165
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserInputSkipTestsFlagChatContent
6266
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserInputSkipTestsFlagChatIntroContent
67+
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserOneOrMultipleDiffsSelectionChatContent
6368
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserSelectionSummaryChatContent
6469
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserSkipTestsFlagSelectionChatContent
6570
import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildUserStopTransformChatContent
@@ -251,9 +256,28 @@ class CodeTransformChatController(
251256
else -> MAVEN_BUILD_RUN_UNIT_TESTS
252257
}
253258
codeTransformChatHelper.addNewMessage(buildUserSkipTestsFlagSelectionChatContent(message.skipTestsSelection))
254-
codeTransformChatHelper.addNewMessage(buildCompileLocalInProgressChatContent())
259+
// codeTransformChatHelper.addNewMessage(buildCompileLocalInProgressChatContent())
255260
codeModernizerManager.codeTransformationSession?.let {
256261
it.sessionContext.customBuildCommand = customBuildCommand
262+
// codeModernizerManager.runLocalMavenBuild(context.project, it)
263+
}
264+
codeTransformChatHelper.run {
265+
addNewMessage(buildUserInputOneOrMultipleDiffsChatIntroContent())
266+
addNewMessage(buildUserInputOneOrMultipleDiffsFlagChatContent())
267+
}
268+
}
269+
270+
override suspend fun processCodeTransformOneOrMultipleDiffs(message: IncomingCodeTransformMessage.CodeTransformConfirmOneOrMultipleDiffs) {
271+
val transformCapabilities = when (message.oneOrMultipleDiffsSelection) {
272+
message("codemodernizer.chat.message.one_or_multiple_diffs_form.multiple_diffs") -> listOf(
273+
EXPLAINABILITY_V1, SELECTIVE_TRANSFORMATION_V1)
274+
else -> listOf(
275+
EXPLAINABILITY_V1)
276+
}
277+
codeTransformChatHelper.addNewMessage(buildUserOneOrMultipleDiffsSelectionChatContent(message.oneOrMultipleDiffsSelection))
278+
codeTransformChatHelper.addNewMessage(buildCompileLocalInProgressChatContent())
279+
codeModernizerManager.codeTransformationSession?.let {
280+
it.sessionContext.transformCapabilities = transformCapabilities
257281
codeModernizerManager.runLocalMavenBuild(context.project, it)
258282
}
259283
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, log
6363
val telemetry = CodeTransformTelemetryManager.getInstance(project)
6464
var telemetryErrorMessage = ""
6565
var telemetryLocalBuildResult = Result.Succeeded
66-
return MavenCopyCommandsResult.Success(destinationDir.toFile())
66+
// return MavenCopyCommandsResult.Success(destinationDir.toFile())
6767

6868
logger.info { "Executing IntelliJ bundled Maven" }
6969
try {

0 commit comments

Comments
 (0)