Skip to content

Commit 8456faa

Browse files
author
David Hasani
committed
feat(amazonq): support Java 21
1 parent 4465d16 commit 8456faa

File tree

8 files changed

+31
-1
lines changed

8 files changed

+31
-1
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: support transformations to Java 21"
4+
}

packages/core/src/amazonqGumby/chat/controller/controller.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,11 @@ export class GumbyController {
491491
message.tabID
492492
)
493493

494+
if (fromJDKVersion === JDKVersion.JDK21 && toJDKVersion === JDKVersion.JDK17) {
495+
this.messenger.sendUnrecoverableErrorResponse('invalid-from-to-jdk', message.tabID)
496+
return
497+
}
498+
494499
await processLanguageUpgradeTransformFormInput(pathToProject, fromJDKVersion, toJDKVersion)
495500
await this.messenger.sendSkipTestsPrompt(message.tabID)
496501
})

packages/core/src/amazonqGumby/chat/controller/messenger/messenger.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ export type UnrecoverableErrorType =
5151
| 'unsupported-target-db'
5252
| 'error-parsing-sct-file'
5353
| 'invalid-zip-no-sct-file'
54+
| 'invalid-from-to-jdk'
5455

5556
export enum GumbyNamedMessages {
5657
COMPILATION_PROGRESS_MESSAGE = 'gumbyProjectCompilationMessage',
@@ -233,6 +234,10 @@ export class Messenger {
233234
value: JDKVersion.JDK17,
234235
label: JDKVersion.JDK17,
235236
},
237+
{
238+
value: JDKVersion.JDK21,
239+
label: JDKVersion.JDK21,
240+
},
236241
],
237242
})
238243

@@ -246,6 +251,10 @@ export class Messenger {
246251
value: JDKVersion.JDK17,
247252
label: JDKVersion.JDK17,
248253
},
254+
{
255+
value: JDKVersion.JDK21,
256+
label: JDKVersion.JDK21,
257+
},
249258
],
250259
})
251260

@@ -481,6 +490,10 @@ export class Messenger {
481490
case 'invalid-zip-no-sct-file':
482491
message = CodeWhispererConstants.invalidMetadataFileNoSctFile
483492
break
493+
case 'invalid-from-to-jdk':
494+
// TO-DO: get this String reviewed
495+
message = 'I cannot transform a project from Java 21 to Java 17.'
496+
break
484497
}
485498

486499
this.sendJobFinishedMessage(tabID, message)

packages/core/src/amazonqGumby/chat/controller/messenger/messengerUtils.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ export default class MessengerUtils {
5252
javaHomePrompt += ` ${CodeWhispererConstants.macJavaVersionHomeHelpChatMessage(11)}`
5353
} else if (jdkVersion === JDKVersion.JDK17) {
5454
javaHomePrompt += ` ${CodeWhispererConstants.macJavaVersionHomeHelpChatMessage(17)}`
55+
} else if (jdkVersion === JDKVersion.JDK21) {
56+
javaHomePrompt += ` ${CodeWhispererConstants.macJavaVersionHomeHelpChatMessage(21)}`
5557
}
5658
} else {
5759
javaHomePrompt += ` ${CodeWhispererConstants.linuxJavaHomeHelpChatMessage}`

packages/core/src/codewhisperer/commands/startTransformByQ.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ async function validateJavaHome(): Promise<boolean> {
119119
javaVersionUsedByMaven = JDKVersion.JDK11
120120
} else if (javaVersionUsedByMaven === '17.') {
121121
javaVersionUsedByMaven = JDKVersion.JDK17
122+
} else if (javaVersionUsedByMaven === '21.') {
123+
javaVersionUsedByMaven = JDKVersion.JDK21
122124
}
123125
}
124126
if (javaVersionUsedByMaven !== transformByQState.getSourceJDKVersion()) {

packages/core/src/codewhisperer/models/constants.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const AWSTemplateKeyWords = ['AWSTemplateFormatVersion', 'Resources', 'AW
2222

2323
export const AWSTemplateCaseInsensitiveKeyWords = ['cloudformation', 'cfn', 'template', 'description']
2424

25+
// TO-DO: update this for Java 21 support?
2526
const patchDescriptions: { [key: string]: string } = {
2627
'Prepare minimal upgrade to Java 17':
2728
'This diff patch covers the set of upgrades for Springboot, JUnit, and PowerMockito frameworks.',
@@ -501,10 +502,12 @@ export const codeTransformLocThreshold = 100000
501502
export const jobStartedChatMessage =
502503
'I am starting to transform your code. It can take 10 to 30 minutes to upgrade your code, depending on the size of your project. To monitor progress, go to the Transformation Hub. If I run into any issues, I might pause the transformation to get input from you on how to proceed.'
503504

505+
// TO-DO: update for Java 21 support
504506
export const chooseTransformationObjective = `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".`
505507

506508
export const chooseTransformationObjectivePlaceholder = 'Enter "language upgrade" or "sql conversion"'
507509

510+
// TO-DO: update for Java 21 support
508511
export const userPatchDescriptionChatMessage = `
509512
If you'd like to update and test your code with fewer changes at a time, I can divide the transformation results into separate diff patches. If applicable to your application, I can split up the diffs up into the following groups of upgrades. Here are the upgrades included in each diff:
510513

packages/core/src/codewhisperer/models/model.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,7 @@ export enum JDKVersion {
601601
JDK8 = '8',
602602
JDK11 = '11',
603603
JDK17 = '17',
604+
JDK21 = '21',
604605
UNSUPPORTED = 'UNSUPPORTED',
605606
}
606607

packages/core/src/codewhisperer/service/transformByQ/transformApiHandler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ export async function startJob(uploadId: string) {
444444
transformationSpec: {
445445
transformationType: CodeWhispererConstants.transformationType, // shared b/w language upgrades & sql conversions for now
446446
source: { language: sourceLanguageVersion }, // dummy value of JDK8 used for SQL conversions just so that this API can be called
447-
target: { language: targetLanguageVersion }, // always JDK17
447+
target: { language: targetLanguageVersion }, // JAVA_17 or JAVA_21
448448
},
449449
})
450450
if (response.$response.requestId) {

0 commit comments

Comments
 (0)