@@ -13,6 +13,7 @@ import com.intellij.openapi.components.State
13
13
import com.intellij.openapi.components.Storage
14
14
import com.intellij.openapi.components.service
15
15
import com.intellij.openapi.project.Project
16
+ import com.intellij.openapi.projectRoots.JavaSdkVersion
16
17
import com.intellij.openapi.roots.ProjectRootManager
17
18
import com.intellij.openapi.util.Disposer
18
19
import com.intellij.openapi.vfs.VirtualFile
@@ -55,6 +56,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.toolwindow.CodeMo
55
56
import software.aws.toolkits.jetbrains.services.codemodernizer.ui.components.BuildErrorDialog
56
57
import software.aws.toolkits.jetbrains.services.codemodernizer.ui.components.PreCodeTransformUserDialog
57
58
import software.aws.toolkits.jetbrains.services.codemodernizer.ui.components.ValidationErrorDialog
59
+ import software.aws.toolkits.jetbrains.utils.actions.OpenBrowserAction
58
60
import software.aws.toolkits.jetbrains.utils.isRunningOnRemoteBackend
59
61
import software.aws.toolkits.jetbrains.utils.notifyError
60
62
import software.aws.toolkits.jetbrains.utils.notifyInfo
@@ -99,7 +101,10 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
99
101
field = session
100
102
}
101
103
private val artifactHandler = ArtifactHandler (project, GumbyClient .getInstance(project))
102
-
104
+ private val supportedJavaMappings = mapOf (
105
+ JavaSdkVersion .JDK_1_8 to setOf (JavaSdkVersion .JDK_17 ),
106
+ JavaSdkVersion .JDK_11 to setOf (JavaSdkVersion .JDK_17 ),
107
+ )
103
108
init {
104
109
CodeModernizerSessionState .getInstance(project).setDefaults()
105
110
}
@@ -134,7 +139,19 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
134
139
)
135
140
)
136
141
}
137
- val validatedBuildFiles = project.getSupportedBuildModules(supportedBuildFileNames)
142
+ val supportedModules = project.getSupportedModules(supportedJavaMappings).toSet()
143
+ val validProjectJdk = project.getSupportedJavaMappings(supportedJavaMappings).isNotEmpty()
144
+ if (supportedModules.isEmpty() && ! validProjectJdk) {
145
+ return ValidationResult (
146
+ false ,
147
+ message(" codemodernizer.notification.warn.invalid_project.description.reason.invalid_jdk_versions" , supportedJavaMappings.keys.joinToString()),
148
+ InvalidTelemetryReason (
149
+ CodeTransformPreValidationError .UnsupportedJavaVersion ,
150
+ project.tryGetJdk().toString()
151
+ )
152
+ )
153
+ }
154
+ val validatedBuildFiles = project.getSupportedBuildFilesWithSupportedJdk(supportedBuildFileNames, supportedJavaMappings)
138
155
return if (validatedBuildFiles.isNotEmpty()) {
139
156
ValidationResult (true , validatedBuildFiles = validatedBuildFiles)
140
157
} else {
@@ -255,6 +272,7 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
255
272
fun getCustomerSelection (validatedBuildFiles : List <VirtualFile >): CustomerSelection ? = PreCodeTransformUserDialog (
256
273
project,
257
274
validatedBuildFiles,
275
+ supportedJavaMappings,
258
276
).create()
259
277
260
278
private fun notifyJobFailure (failureReason : String? , retryable : Boolean ) {
@@ -383,6 +401,10 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
383
401
is CodeModernizerStartJobResult .Cancelled -> {
384
402
CodeModernizerJobCompletedResult .JobAbortedBeforeStarting
385
403
}
404
+
405
+ is CodeModernizerStartJobResult .CancelledMissingDependencies -> {
406
+ CodeModernizerJobCompletedResult .JobAbortedMissingDependencies
407
+ }
386
408
}
387
409
}
388
410
@@ -507,6 +529,11 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
507
529
artifactHandler.displayDiffAction(jobId)
508
530
}
509
531
532
+ private fun openTroubleshootingGuideNotificationAction () = OpenBrowserAction (
533
+ message(" codemodernizer.notification.info.view_troubleshooting_guide" ),
534
+ url = " https://docs.aws.amazon.com/amazonq/latest/aws-builder-use-ug/code-transformation.html#transform-issues"
535
+ )
536
+
510
537
private fun displaySummaryNotificationAction (jobId : JobId ) =
511
538
NotificationAction .createSimple(message(" codemodernizer.notification.info.modernize_complete.view_summary" )) {
512
539
artifactHandler.showTransformationSummary(jobId)
@@ -558,6 +585,12 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
558
585
559
586
is CodeModernizerJobCompletedResult .ManagerDisposed -> LOG .warn { " Manager disposed" }
560
587
is CodeModernizerJobCompletedResult .JobAbortedBeforeStarting -> LOG .warn { " Job was aborted" }
588
+ is CodeModernizerJobCompletedResult .JobAbortedMissingDependencies -> notifyStickyInfo(
589
+ message(" codemodernizer.notification.warn.maven_failed.title" ),
590
+ message(" codemodernizer.notification.warn.maven_failed.content" ),
591
+ project,
592
+ listOf (openTroubleshootingGuideNotificationAction()),
593
+ )
561
594
}
562
595
}
563
596
0 commit comments