Skip to content

Commit 728a6f2

Browse files
author
David Hasani
committed
feat(amazonq): support Java 21
1 parent 5abfb19 commit 728a6f2

File tree

13 files changed

+45
-21
lines changed

13 files changed

+45
-21
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+
}

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ mockitoKotlin = "5.4.0"
2727
mockk = "1.13.10"
2828
nimbus-jose-jwt = "9.40"
2929
node-gradle = "7.0.2"
30-
telemetryGenerator = "1.0.284"
30+
telemetryGenerator = "1.0.291"
3131
testLogger = "4.0.0"
3232
testRetry = "1.5.10"
3333
# test-only; platform provides slf4j transitively at runtime

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,10 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
122122
}
123123
private val artifactHandler = ArtifactHandler(project, GumbyClient.getInstance(project))
124124
private val supportedJavaMappings = mapOf(
125-
JavaSdkVersion.JDK_1_8 to setOf(JavaSdkVersion.JDK_17),
126-
JavaSdkVersion.JDK_11 to setOf(JavaSdkVersion.JDK_17),
127-
JavaSdkVersion.JDK_17 to setOf(JavaSdkVersion.JDK_17),
125+
JavaSdkVersion.JDK_1_8 to setOf(JavaSdkVersion.JDK_17, JavaSdkVersion.JDK_21),
126+
JavaSdkVersion.JDK_11 to setOf(JavaSdkVersion.JDK_17, JavaSdkVersion.JDK_21),
127+
JavaSdkVersion.JDK_17 to setOf(JavaSdkVersion.JDK_17, JavaSdkVersion.JDK_21),
128+
JavaSdkVersion.JDK_21 to setOf(JavaSdkVersion.JDK_21),
128129
)
129130

130131
init {

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.utils.isValidCode
5353
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.pollTransformationStatusAndPlan
5454
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.toTransformationLanguage
5555
import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.CodeWhispererCodeScanSession
56+
import software.aws.toolkits.jetbrains.utils.notifyStickyInfo
5657
import software.aws.toolkits.resources.message
5758
import java.io.File
5859
import java.io.FileInputStream
@@ -308,6 +309,8 @@ class CodeModernizerSession(
308309
}
309310

310311
private fun startJob(uploadId: String): StartTransformationResponse {
312+
notifyStickyInfo("sourceLanguage", sessionContext.sourceJavaVersion.name)
313+
notifyStickyInfo("targetLanguage", sessionContext.targetJavaVersion.name)
311314
val sourceLanguage = sessionContext.sourceJavaVersion.name.toTransformationLanguage()
312315
val targetLanguage = sessionContext.targetJavaVersion.name.toTransformationLanguage()
313316
if (sourceLanguage == TransformationLanguage.UNKNOWN_TO_SDK_VERSION) {

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import software.aws.toolkits.telemetry.CodeTransformJavaTargetVersionsAllowed
2626
import software.aws.toolkits.telemetry.CodeTransformPreValidationError
2727
import software.aws.toolkits.telemetry.CodeTransformVCSViewerSrcComponents
2828
import software.aws.toolkits.telemetry.CodetransformTelemetry
29+
import software.aws.toolkits.telemetry.MetricResult
2930
import software.aws.toolkits.telemetry.Result
3031
import java.time.Instant
3132
import java.util.Base64
@@ -196,12 +197,12 @@ class CodeTransformTelemetryManager(private val project: Project) {
196197

197198
fun logHil(jobId: String, metaData: HilTelemetryMetaData, success: Boolean, reason: String) {
198199
CodetransformTelemetry.humanInTheLoop(
199-
project,
200-
jobId,
201-
metaData.toString(),
202-
sessionId,
203-
reason,
204-
success,
200+
project = project,
201+
codeTransformJobId = jobId,
202+
codeTransformMetadata = metaData.toString(),
203+
codeTransformSessionId = sessionId,
204+
reason = reason,
205+
result = if (success) MetricResult.Succeeded else MetricResult.Failed,
205206
)
206207
}
207208

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,12 @@ private val selectTargetVersionFormItem = FormItem(
176176
mandatory = true,
177177
options = listOf(
178178
FormItemOption(
179-
label = "JDK17",
179+
label = "17",
180180
value = "17",
181+
),
182+
FormItemOption(
183+
label = "21",
184+
value = "21",
181185
)
182186
)
183187
)
@@ -226,14 +230,14 @@ private val selectOneOrMultipleDiffsFlagFormItem = FormItem(
226230
)
227231
)
228232

229-
private fun getUserLanguageUpgradeSelectionFormattedMarkdown(moduleName: String): String = """
233+
private fun getUserLanguageUpgradeSelectionFormattedMarkdown(moduleName: String, targetJdkVersion: String): String = """
230234
### ${message("codemodernizer.chat.prompt.title.details")}
231235
-------------
232236
233237
| | |
234238
| :------------------- | -------: |
235239
| **${message("codemodernizer.chat.prompt.label.module")}** | $moduleName |
236-
| **${message("codemodernizer.chat.prompt.label.target_version")}** | JDK17 |
240+
| **${message("codemodernizer.chat.prompt.label.target_version")}** | $targetJdkVersion |
237241
""".trimIndent()
238242

239243
private fun getUserSQLConversionSelectionFormattedMarkdown(moduleName: String, schema: String) = """
@@ -286,6 +290,7 @@ fun buildProjectInvalidChatContent(validationResult: ValidationResult): CodeTran
286290
CodeTransformPreValidationError.EmptyProject -> message("codemodernizer.notification.warn.invalid_project.description.reason.missing_content_roots")
287291
CodeTransformPreValidationError.UnsupportedBuildSystem -> message("codemodernizer.chat.message.validation.error.no_pom")
288292
CodeTransformPreValidationError.NoJavaProject -> message("codemodernizer.chat.message.validation.error.no_java_project")
293+
CodeTransformPreValidationError.JavaDowngradeAttempt -> message("codemodernizer.chat.message.validation.error.downgrade_attempt")
289294
else -> message("codemodernizer.chat.message.validation.error.other")
290295
}
291296

@@ -441,9 +446,9 @@ fun buildUserSQLConversionSelectionSummaryChatContent(moduleName: String, schema
441446
message = getUserSQLConversionSelectionFormattedMarkdown(moduleName, schema)
442447
)
443448

444-
fun buildUserLanguageUpgradeSelectionSummaryChatContent(moduleName: String) = CodeTransformChatMessageContent(
449+
fun buildUserLanguageUpgradeSelectionSummaryChatContent(moduleName: String, targetJdkVersion: String) = CodeTransformChatMessageContent(
445450
type = CodeTransformChatMessageType.Prompt,
446-
message = getUserLanguageUpgradeSelectionFormattedMarkdown(moduleName)
451+
message = getUserLanguageUpgradeSelectionFormattedMarkdown(moduleName, targetJdkVersion)
447452
)
448453

449454
fun buildCompileLocalInProgressChatContent() = CodeTransformChatMessageContent(

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.model.CodeTransfo
9393
import software.aws.toolkits.jetbrains.services.codemodernizer.model.CustomerSelection
9494
import software.aws.toolkits.jetbrains.services.codemodernizer.model.DownloadArtifactResult
9595
import software.aws.toolkits.jetbrains.services.codemodernizer.model.DownloadFailureReason
96+
import software.aws.toolkits.jetbrains.services.codemodernizer.model.InvalidTelemetryReason
9697
import software.aws.toolkits.jetbrains.services.codemodernizer.model.JobId
9798
import software.aws.toolkits.jetbrains.services.codemodernizer.model.MAVEN_BUILD_RUN_UNIT_TESTS
9899
import software.aws.toolkits.jetbrains.services.codemodernizer.model.MAVEN_BUILD_SKIP_UNIT_TESTS
@@ -113,6 +114,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.utils.unzipFile
113114
import software.aws.toolkits.jetbrains.services.codemodernizer.utils.validateSctMetadata
114115
import software.aws.toolkits.jetbrains.services.cwc.messages.ChatMessageType
115116
import software.aws.toolkits.resources.message
117+
import software.aws.toolkits.telemetry.CodeTransformPreValidationError
116118
import software.aws.toolkits.telemetry.CodeTransformVCSViewerSrcComponents
117119

118120
class CodeTransformChatController(
@@ -297,14 +299,19 @@ class CodeTransformChatController(
297299
val moduleVirtualFile: VirtualFile = modulePath.toVirtualFile() as VirtualFile
298300
val moduleName = context.project.getModuleOrProjectNameForFile(moduleVirtualFile)
299301

300-
codeTransformChatHelper.addNewMessage(buildUserLanguageUpgradeSelectionSummaryChatContent(moduleName))
302+
codeTransformChatHelper.addNewMessage(buildUserLanguageUpgradeSelectionSummaryChatContent(moduleName, targetVersion))
301303

302304
val sourceJdk = getSourceJdk(moduleVirtualFile)
303305

306+
if (sourceJdk == JavaSdkVersion.JDK_21 && targetVersion == "17") {
307+
codeTransformChatHelper.addNewMessage(buildProjectInvalidChatContent(ValidationResult(false, InvalidTelemetryReason(CodeTransformPreValidationError.JavaDowngradeAttempt))))
308+
return
309+
}
310+
304311
val selection = CustomerSelection(
305312
configurationFile = moduleVirtualFile,
306313
sourceJavaVersion = sourceJdk,
307-
targetJavaVersion = JavaSdkVersion.JDK_17,
314+
targetJavaVersion = if (targetVersion == "17") JavaSdkVersion.JDK_17 else JavaSdkVersion.JDK_21,
308315
)
309316

310317
// Create and set a session

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ data class CodeModernizerSessionContext(
6363
val project: Project,
6464
var configurationFile: VirtualFile? = null, // used to ZIP module
6565
val sourceJavaVersion: JavaSdkVersion, // always needed for startJob API
66-
val targetJavaVersion: JavaSdkVersion = JavaSdkVersion.JDK_17, // only one supported
66+
val targetJavaVersion: JavaSdkVersion, // 17 or 21
6767
var transformCapabilities: List<String> = listOf(EXPLAINABILITY_V1),
6868
var customBuildCommand: String = MAVEN_BUILD_RUN_UNIT_TESTS, // run unit tests by default
6969
val sourceVendor: String = ORACLE_DB, // only one supported

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import java.io.File
1010
data class CustomerSelection(
1111
val configurationFile: VirtualFile? = null, // used to ZIP module
1212
val sourceJavaVersion: JavaSdkVersion, // always needed, use default of JDK_8 for SQL conversions for startJob API call
13-
val targetJavaVersion: JavaSdkVersion = JavaSdkVersion.JDK_17,
13+
val targetJavaVersion: JavaSdkVersion, // 17 or 21
1414
val sourceVendor: String = ORACLE_DB, // only one supported
1515
val targetVendor: String? = null,
1616
val sourceServerName: String? = null,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,5 +80,6 @@ fun String.toTransformationLanguage() = when (this) {
8080
"JDK_1_8" -> TransformationLanguage.JAVA_8
8181
"JDK_11" -> TransformationLanguage.JAVA_11
8282
"JDK_17" -> TransformationLanguage.JAVA_17
83+
"JDK_21" -> TransformationLanguage.JAVA_21
8384
else -> TransformationLanguage.UNKNOWN_TO_SDK_VERSION
8485
}

0 commit comments

Comments
 (0)