diff --git a/.changes/next-release/bugfix-8a4575bc-0263-45cb-bf85-04620e306a8f.json b/.changes/next-release/bugfix-8a4575bc-0263-45cb-bf85-04620e306a8f.json new file mode 100644 index 00000000000..ed8e37a07c2 --- /dev/null +++ b/.changes/next-release/bugfix-8a4575bc-0263-45cb-bf85-04620e306a8f.json @@ -0,0 +1,4 @@ +{ + "type" : "bugfix", + "description" : "Amazon Q Code Transformation: show build logs when server-side build fails" +} \ No newline at end of file diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerManager.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerManager.kt index 4552cde1037..0bb99381108 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerManager.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerManager.kt @@ -84,7 +84,6 @@ import software.aws.toolkits.resources.message import software.aws.toolkits.telemetry.CodeTransformBuildSystem import software.aws.toolkits.telemetry.CodeTransformCancelSrcComponents import software.aws.toolkits.telemetry.CodeTransformPreValidationError -import software.aws.toolkits.telemetry.CodeTransformVCSViewerSrcComponents import java.io.File import java.nio.file.Path import java.time.Instant @@ -630,7 +629,7 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo is CodeModernizerJobCompletedResult.JobPartiallySucceeded -> { notifyStickyInfo( message("codemodernizer.notification.info.modernize_partial_complete.title"), - message("codemodernizer.notification.info.modernize_partial_complete.content", result.targetJavaVersion.description), + message("codemodernizer.notification.info.modernize_partial_complete.content"), project, listOf(displaySummaryNotificationAction(result.jobId), displayFeedbackNotificationAction()), ) @@ -770,12 +769,6 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo codeTransformationSession?.tryOpenTransformationPlanEditor() } - fun showDiff() { - val job = codeTransformationSession?.getActiveJobId() ?: return - // Use "TreeViewHeader" for Hub - artifactHandler.displayDiffAction(job, CodeTransformVCSViewerSrcComponents.TreeViewHeader) - } - fun handleCredentialsChanged() { codeTransformationSession?.dispose() codeModernizerBottomWindowPanelManager.reset() diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt index 0e9d3b1ebc2..e791f298a98 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerSession.kt @@ -493,10 +493,7 @@ class CodeModernizerSession( message("codemodernizer.notification.warn.unknown_status_response") ) - result.state == TransformationStatus.PARTIALLY_COMPLETED -> CodeModernizerJobCompletedResult.JobPartiallySucceeded( - jobId, - sessionContext.targetJavaVersion - ) + result.state == TransformationStatus.PARTIALLY_COMPLETED -> CodeModernizerJobCompletedResult.JobPartiallySucceeded(jobId) result.state == TransformationStatus.FAILED -> { if (!passedStart) { diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/constants/CodeTransformChatItems.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/constants/CodeTransformChatItems.kt index 8a8358c41b6..667f806888b 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/constants/CodeTransformChatItems.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/constants/CodeTransformChatItems.kt @@ -431,6 +431,11 @@ fun buildTransformStoppedChatContent() = CodeTransformChatMessageContent( type = CodeTransformChatMessageType.FinalizedAnswer, ) +fun buildTransformFailedChatContent(failureReason: String) = CodeTransformChatMessageContent( + message = message("codemodernizer.chat.message.transform_failed", failureReason), + type = CodeTransformChatMessageType.FinalizedAnswer, +) + fun buildUserSQLConversionSelectionSummaryChatContent(moduleName: String, schema: String) = CodeTransformChatMessageContent( type = CodeTransformChatMessageType.Prompt, message = getUserSQLConversionSelectionFormattedMarkdown(moduleName, schema) @@ -537,7 +542,7 @@ fun buildTransformResumingChatContent() = CodeTransformChatMessageContent( type = CodeTransformChatMessageType.PendingAnswer, ) -fun buildTransformResultChatContent(result: CodeModernizerJobCompletedResult, totalPatchFiles: Int): CodeTransformChatMessageContent { +fun buildTransformResultChatContent(result: CodeModernizerJobCompletedResult, totalPatchFiles: Int? = null): CodeTransformChatMessageContent { val resultMessage = when (result) { is CodeModernizerJobCompletedResult.JobAbortedZipTooLarge -> { "${message( diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt index a31615d4e2d..d226e0ec2e5 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/controller/CodeTransformChatController.kt @@ -61,6 +61,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildSt import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildTransformAwaitUserInputChatContent import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildTransformBeginChatContent import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildTransformDependencyErrorChatContent +import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildTransformFailedChatContent import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildTransformFindingLocalAlternativeDependencyChatContent import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildTransformInProgressChatContent import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildTransformResultChatContent @@ -183,7 +184,7 @@ class CodeTransformChatController( private suspend fun getUserObjective(tabId: String) { codeTransformChatHelper.addNewMessage(buildChooseTransformationObjectiveChatContent()) codeTransformChatHelper.sendChatInputEnabledMessage(tabId, true) - codeTransformChatHelper.sendUpdatePlaceholderMessage(tabId, message("codemodernizer.chat.message.choose_objective")) + codeTransformChatHelper.sendUpdatePlaceholderMessage(tabId, message("codemodernizer.chat.message.choose_objective_placeholder")) } private suspend fun validateAndReplyOnError(transformationType: CodeTransformType): ValidationResult? { @@ -665,9 +666,21 @@ class CodeTransformChatController( codeTransformChatHelper.addNewMessage(buildStartNewTransformFollowup()) } + private suspend fun handleCodeTransformJobFailed(failureReason: String) { + codeTransformChatHelper.updateLastPendingMessage(buildTransformFailedChatContent(failureReason)) + codeTransformChatHelper.addNewMessage(buildStartNewTransformFollowup()) + } + + private suspend fun handleCodeTransformJobFailedPreBuild(result: CodeModernizerJobCompletedResult.JobFailedInitialBuild) = + codeTransformChatHelper.addNewMessage( + buildTransformResultChatContent(result) + ) + private suspend fun handleCodeTransformResult(result: CodeModernizerJobCompletedResult) { when (result) { is CodeModernizerJobCompletedResult.Stopped, CodeModernizerJobCompletedResult.JobAbortedBeforeStarting -> handleCodeTransformStoppedByUser() + is CodeModernizerJobCompletedResult.JobFailed -> handleCodeTransformJobFailed(result.failureReason) + is CodeModernizerJobCompletedResult.JobFailedInitialBuild -> handleCodeTransformJobFailedPreBuild(result) else -> { if (result is CodeModernizerJobCompletedResult.ZipUploadFailed && result.failureReason is UploadFailureReason.CREDENTIALS_EXPIRED) { return diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/CodeModernizerJobCompletedResult.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/CodeModernizerJobCompletedResult.kt index 8bb51b37777..516594d3ecf 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/CodeModernizerJobCompletedResult.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/model/CodeModernizerJobCompletedResult.kt @@ -3,15 +3,13 @@ package software.aws.toolkits.jetbrains.services.codemodernizer.model -import com.intellij.openapi.projectRoots.JavaSdkVersion - sealed class CodeModernizerJobCompletedResult { data class RetryableFailure(val jobId: JobId, val failureReason: String) : CodeModernizerJobCompletedResult() data class UnableToCreateJob(val failureReason: String, val retryable: Boolean = false) : CodeModernizerJobCompletedResult() data class JobFailed(val jobId: JobId, val failureReason: String) : CodeModernizerJobCompletedResult() data class ZipUploadFailed(val failureReason: UploadFailureReason) : CodeModernizerJobCompletedResult() data class JobCompletedSuccessfully(val jobId: JobId) : CodeModernizerJobCompletedResult() - data class JobPartiallySucceeded(val jobId: JobId, val targetJavaVersion: JavaSdkVersion) : CodeModernizerJobCompletedResult() + data class JobPartiallySucceeded(val jobId: JobId) : CodeModernizerJobCompletedResult() data class JobPaused(val jobId: JobId, val downloadArtifactId: String) : CodeModernizerJobCompletedResult() diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/panels/CodeModernizerBanner.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/panels/CodeModernizerBanner.kt index 0d96887f16a..8afe80e61e7 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/panels/CodeModernizerBanner.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/panels/CodeModernizerBanner.kt @@ -5,7 +5,6 @@ package software.aws.toolkits.jetbrains.services.codemodernizer.panels import com.intellij.icons.AllIcons import com.intellij.openapi.project.Project -import com.intellij.serviceContainer.AlreadyDisposedException import com.intellij.ui.JBColor import com.intellij.ui.border.CustomLineBorder import com.intellij.ui.components.ActionLink @@ -13,9 +12,8 @@ import com.intellij.ui.components.JBLabel import com.intellij.util.ui.JBInsets import com.intellij.util.ui.JBUI import icons.AwsIcons -import software.aws.toolkits.core.utils.getLogger -import software.aws.toolkits.core.utils.warn import software.aws.toolkits.jetbrains.services.codemodernizer.CodeModernizerManager +import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId import software.aws.toolkits.jetbrains.services.codewhisperer.layout.CodeWhispererLayoutConfig import software.aws.toolkits.jetbrains.services.codewhisperer.layout.CodeWhispererLayoutConfig.addHorizontalGlue import software.aws.toolkits.jetbrains.ui.feedback.CodeTransformFeedbackDialog @@ -42,11 +40,13 @@ class CodeModernizerBanner(val project: Project) : JPanel(BorderLayout()) { border = BorderFactory.createEmptyBorder(0, 5, 0, 0) } + private val infoLabelJobId = JBLabel().apply { + foreground = JBColor.GRAY + border = BorderFactory.createEmptyBorder(0, 5, 0, 0) + } + private val infoPanel = JPanel(GridBagLayout()) - val showDiffAction = ActionLink(message("codemodernizer.toolwindow.banner.action.diff")) { - CodeModernizerManager.getInstance(project).showDiff() - } val showPlanAction = ActionLink(message("codemodernizer.toolwindow.banner.action.plan")) { CodeModernizerManager.getInstance(project).showTransformationPlan() } @@ -84,6 +84,7 @@ class CodeModernizerBanner(val project: Project) : JPanel(BorderLayout()) { ) } add(infoLabelRunningTime, CodeWhispererLayoutConfig.kebabMenuConstraints) + add(infoLabelJobId, CodeWhispererLayoutConfig.kebabMenuConstraints) } infoPanel.revalidate() infoPanel.repaint() @@ -114,19 +115,18 @@ class CodeModernizerBanner(val project: Project) : JPanel(BorderLayout()) { } fun updateRunningTime(runTime: Duration?) { - try { - if (runTime == null) { - infoLabelRunningTime.text = "" - } else { - val timeTaken = runTime.toKotlinDuration().inWholeSeconds.seconds.toString() - infoLabelRunningTime.text = message( - "codemodernizer.toolwindow.transformation.progress.running_time", - timeTaken - ) - } - } catch (exception: AlreadyDisposedException) { - LOG.warn { "Disposed when about to create the loading panel" } - return + infoLabelRunningTime.text = if (runTime != null) { + message("codemodernizer.toolwindow.transformation.progress.running_time", runTime.toKotlinDuration().inWholeSeconds.seconds.toString()) + } else { + "" + } + } + + fun updateJobId(jobId: JobId?) { + infoLabelJobId.text = if (jobId != null) { + message("codemodernizer.toolwindow.transformation.progress.job_id", jobId.id) + } else { + "" } } @@ -134,8 +134,4 @@ class CodeModernizerBanner(val project: Project) : JPanel(BorderLayout()) { currentlyShownOptions.clear() buildContent() } - - companion object { - private val LOG = getLogger() - } } diff --git a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManager.kt b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManager.kt index 52460512c97..4d73038a303 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManager.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManager.kt @@ -88,6 +88,16 @@ class CodeModernizerBottomWindowPanelManager(private val project: Project) : JPa } } + private fun updateJobId() { + try { + val jobId = CodeModernizerSessionState.getInstance(project).currentJobId + banner.updateJobId(jobId) + } catch (e: AlreadyDisposedException) { + LOG.warn { "Disposed when about to update the jobId" } + return + } + } + fun setJobStartingUI() = setUI { add(BorderLayout.CENTER, fullSizeLoadingPanel) banner.clearActions() @@ -123,6 +133,7 @@ class CodeModernizerBottomWindowPanelManager(private val project: Project) : JPa fun setJobRunningUI() = setUI { add(BorderLayout.CENTER, buildProgressSplitterPanelManager) banner.updateContent(message("codemodernizer.toolwindow.banner.job_is_running"), AllIcons.General.BalloonInformation) + updateJobId() buildProgressSplitterPanelManager.apply { reset() statusTreePanel.setDefaultUI() diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformChatTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformChatTest.kt new file mode 100644 index 00000000000..e1eed07547e --- /dev/null +++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeTransformChatTest.kt @@ -0,0 +1,60 @@ +// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +package software.aws.toolkits.jetbrains.services.codemodernizer + +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotNull +import org.junit.Assert.assertNull +import org.junit.Assert.fail +import org.junit.Test +import software.aws.toolkits.jetbrains.services.codemodernizer.constants.buildTransformResultChatContent +import software.aws.toolkits.jetbrains.services.codemodernizer.messages.CodeTransformButtonId +import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeModernizerJobCompletedResult +import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId +import software.aws.toolkits.resources.message + +class CodeTransformChatTest { + + @Test + fun `test that transform result chat item includes view build log button and message when pre-build fails`() { + val result = CodeModernizerJobCompletedResult.JobFailedInitialBuild(JobId("dummy-job-id-123"), "Build failed in Java 8 sandbox", true) + val chatItem = buildTransformResultChatContent(result) + assertEquals(chatItem.message, message("codemodernizer.chat.message.result.fail_initial_build")) + assertNotNull(chatItem.buttons) + assertEquals(chatItem.buttons?.size ?: fail("buttons is null"), 1) + assertEquals(chatItem.buttons?.get(0)?.id ?: fail("buttons is null"), CodeTransformButtonId.ViewBuildLog.id) + } + + @Test + fun `test that transform result chat item includes view summary button and view diff button with correct label when job fully succeeded with 5 patch files`() { + val result = CodeModernizerJobCompletedResult.JobCompletedSuccessfully(JobId("dummy-job-id-123")) + val chatItem = buildTransformResultChatContent(result, 5) + assertEquals(chatItem.message, message("codemodernizer.chat.message.result.success.multiple_diffs")) + assertNotNull(chatItem.buttons) + assertEquals(chatItem.buttons?.size ?: fail("buttons is null"), 2) + assertEquals(chatItem.buttons?.get(0)?.id ?: fail("buttons is null"), CodeTransformButtonId.ViewDiff.id) + assertEquals(chatItem.buttons?.get(0)?.text ?: fail("buttons is null"), "View diff 1/5") + assertEquals(chatItem.buttons?.get(1)?.id ?: fail("buttons is null"), CodeTransformButtonId.ViewSummary.id) + } + + @Test + fun `test that transform result chat item includes view summary button and view diff button with correct label when job partially succeeded with 1 patch file`() { + val result = CodeModernizerJobCompletedResult.JobPartiallySucceeded(JobId("dummy-job-id-123")) + val chatItem = buildTransformResultChatContent(result, 1) + assertEquals(chatItem.message, message("codemodernizer.chat.message.result.partially_success")) + assertNotNull(chatItem.buttons) + assertEquals(chatItem.buttons?.size ?: fail("buttons is null"), 2) + assertEquals(chatItem.buttons?.get(0)?.id ?: fail("buttons is null"), CodeTransformButtonId.ViewDiff.id) + assertEquals(chatItem.buttons?.get(0)?.text ?: fail("buttons is null"), "View diff") + assertEquals(chatItem.buttons?.get(1)?.id ?: fail("buttons is null"), CodeTransformButtonId.ViewSummary.id) + } + + @Test + fun `test that transform result chat item does not include any buttons when job failed with known reason`() { + val result = CodeModernizerJobCompletedResult.JobFailed(JobId("dummy-job-id-123"), message("codemodernizer.file.invalid_pom_version")) + val chatItem = buildTransformResultChatContent(result) + assertEquals(chatItem.message, message("codemodernizer.chat.message.result.fail_with_known_reason", result.failureReason)) + assertNull(chatItem.buttons) + } +} diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt index f50e5e9c737..a05fb0f6124 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/CodeWhispererCodeModernizerSessionTest.kt @@ -532,7 +532,7 @@ class CodeWhispererCodeModernizerSessionTest : CodeWhispererCodeModernizerTestBa doNothing().whenever(testSessionStateSpy).updateJobHistory(any(), any(), any()) val result = testSessionSpy.pollUntilJobCompletion(CodeTransformType.LANGUAGE_UPGRADE, jobId) { _, _ -> } - assertEquals(CodeModernizerJobCompletedResult.JobPartiallySucceeded(jobId, testSessionContextSpy.targetJavaVersion), result) + assertEquals(CodeModernizerJobCompletedResult.JobPartiallySucceeded(jobId), result) verify(clientAdaptorSpy, times(4)).getCodeModernizationJob(any()) verify(clientAdaptorSpy, atLeastOnce()).getCodeModernizationPlan(any()) } diff --git a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManagerTest.kt b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManagerTest.kt index 7b37fd3016f..960d0dea352 100644 --- a/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManagerTest.kt +++ b/plugins/amazonq/codetransform/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codemodernizer/panels/managers/CodeModernizerBottomWindowPanelManagerTest.kt @@ -32,6 +32,7 @@ class CodeModernizerBottomWindowPanelManagerTest : PanelTestBase() { val layout = codeModernizerBottomWindowPanelManagerMock.layout as BorderLayout assertThat(codeModernizerBottomWindowPanelManagerMock.toolbar.component.isVisible).isTrue() assertThat(codeModernizerBottomWindowPanelManagerMock.fullSizeLoadingPanel.isVisible).isTrue() + assertThat(codeModernizerBottomWindowPanelManagerMock.banner.isVisible).isTrue() assertThat(BorderLayout.WEST).isEqualTo(layout.getConstraints(codeModernizerBottomWindowPanelManagerMock.toolbar.component)) assertThat(BorderLayout.NORTH).isEqualTo(layout.getConstraints(codeModernizerBottomWindowPanelManagerMock.banner)) assertThat(layout.getLayoutComponent(BorderLayout.EAST)).isNull() diff --git a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties index 0ebc55ab1eb..9d683cac640 100644 --- a/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties +++ b/plugins/core/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties @@ -617,6 +617,7 @@ codemodernizer.chat.message.button.view_failure_build_log=View Failure Build Log codemodernizer.chat.message.button.view_summary=View summary codemodernizer.chat.message.changes_applied=I applied the changes to your project. codemodernizer.chat.message.choose_objective=I can help you with the following tasks:\n- Upgrade your Java 8 and Java 11 codebases to Java 17, or upgrade Java 17 code with up to date libraries and other dependencies.\n- Convert embedded SQL code for Oracle to PostgreSQL database migrations in AWS DMS.\n\nWhat would you like to do? You can enter "language upgrade" or "sql conversion". +codemodernizer.chat.message.choose_objective_placeholder=Enter "language upgrade" or "sql conversion" codemodernizer.chat.message.download_failed_client_instructions_expired=Your transformation is not available anymore. Your code and transformation summary are deleted 24 hours after the transformation completes. Please try starting the transformation again. codemodernizer.chat.message.download_failed_invalid_artifact=Sorry, I was unable to find your {0}. Artifacts are deleted after 24 hours. Please try starting the transformation again. codemodernizer.chat.message.download_failed_other=Sorry, I ran into an issue while trying to download your {0}. Please try again. {1} @@ -667,6 +668,7 @@ codemodernizer.chat.message.sql_metadata_success=I found the following source da codemodernizer.chat.message.sql_module_schema_prompt=To continue, choose the module and schema for this transformation. codemodernizer.chat.message.transform_begin=I'm starting to transform your code. It can take 10 to 30 minutes to upgrade your code, depending on the size of your module. To monitor progress, go to the Transformation Hub. codemodernizer.chat.message.transform_cancelled_by_user=I cancelled your transformation. If you want to start another transformation, choose **Start a new transformation**. +codemodernizer.chat.message.transform_failed=I could not complete the transformation. {0} codemodernizer.chat.message.transform_in_progress=If I run into any issues, I might pause the transformation to get input from you on how to proceed. codemodernizer.chat.message.transform_stopped_by_user=I stopped your transformation. If you want to start another transformation, choose **Start a new transformation**. codemodernizer.chat.message.transform_stopping=I'm stopping your transformation... @@ -734,7 +736,6 @@ codemodernizer.notification.info.download.started.content=Downloading the update codemodernizer.notification.info.download.started.title=Download Started codemodernizer.notification.info.modernize_complete.content=Amazon Q finished the transformation. You can review the diff to see the proposed changes and accept or reject them. The transformation summary has details about the files that were updated. codemodernizer.notification.info.modernize_complete.title=Transform Complete -codemodernizer.notification.info.modernize_complete.view_diff=View diff codemodernizer.notification.info.modernize_complete.view_summary=View transformation summary codemodernizer.notification.info.modernize_failed.connection_failed=Amazon Q could not complete the transformation. Try starting the transformation again. {0} codemodernizer.notification.info.modernize_failed.title=Transformation failed @@ -760,9 +761,7 @@ codemodernizer.notification.warn.download_failed_other.content=Amazon Q ran into codemodernizer.notification.warn.download_failed_ssl.content=Please make sure all your certificates for your proxy client have been set up correctly for your IDE. codemodernizer.notification.warn.download_failed_wildcard.content=Check your IDE proxy settings and remove any wildcard (*) references, and then try viewing the diff again. codemodernizer.notification.warn.expired_credentials.title=Your connection to Q has expired -codemodernizer.notification.warn.invalid_project.description.reason.invalid_jdk_versions=None of your open modules are supported for code transformation with Amazon Q. Amazon Q can upgrade Java 8, Java 11, and Java 17 projects built on Maven. codemodernizer.notification.warn.invalid_project.description.reason.missing_content_roots=None of your open modules are supported for code transformation with Amazon Q. Amazon Q can upgrade Java 8, Java 11, and Java 17 projects built on Maven, with content roots configured. -codemodernizer.notification.warn.invalid_project.description.reason.no_valid_files=None of your open modules are supported for code transformation with Amazon Q. A pom.xml is required for transformation. Amazon Q can upgrade Java 8, Java 11, and Java 17 projects built on Maven. codemodernizer.notification.warn.invalid_project.description.reason.not_logged_in=Amazon Q cannot start the transformation as you are not logged in with Identity Center or Builder ID. Also ensure that you are not using IntelliJ version 232.8660.185 and that you are not developing on a remote host (uncommon). codemodernizer.notification.warn.invalid_project.description.reason.remote_backend=None of your open modules are supported for code transformation with Amazon Q. Amazon Q cannot transform projects running on a remote host. codemodernizer.notification.warn.maven_failed.content=Amazon Q could not run the Maven clean install command to build your module. @@ -786,7 +785,6 @@ codemodernizer.notification.warn.zip_creation_failed=Amazon Q could not zip the codemodernizer.notification.warn.zip_creation_failed.reasons.unknown=An unexpected error occurred codemodernizer.notification.warn.zip_too_large.content=Sorry, your project size exceeds the Amazon Q Code Transformation upload limit of 2GB. codemodernizer.notification.warn.zip_too_large.title=Project size exceeds limit -codemodernizer.toolwindow.banner.action.diff=View diff codemodernizer.toolwindow.banner.action.feedback=Provide Feedback codemodernizer.toolwindow.banner.action.plan=View transformation plan codemodernizer.toolwindow.banner.action.summary=View transformation summary @@ -818,11 +816,12 @@ codemodernizer.toolwindow.scan_in_progress.stopping=Stopping the job... codemodernizer.toolwindow.scan_in_progress.transforming=Amazon Q is transforming your code. codemodernizer.toolwindow.stop_scan=Stop job codemodernizer.toolwindow.table.header.date=Date -codemodernizer.toolwindow.table.header.job_id=Job Id +codemodernizer.toolwindow.table.header.job_id=Job ID codemodernizer.toolwindow.table.header.module_name=Module name codemodernizer.toolwindow.table.header.run_length=Job running time codemodernizer.toolwindow.table.header.status=Status codemodernizer.toolwindow.transformation.progress.header=Transformation progress +codemodernizer.toolwindow.transformation.progress.job_id=Job ID: {0} codemodernizer.toolwindow.transformation.progress.running_time=Running time: {0} codescan.chat.message.button.fileScan=Review active file codescan.chat.message.button.openIssues=View in Code Issues Panel