fun validate()

in jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/wizard/SamInitSelectionPanel.kt [183:216]


    fun validate(): ValidationInfo? {
        val samExecutable = ExecutableManager.getInstance().getExecutableIfPresent(getExecutable(SamExecutable::class.java))
        if (samExecutable is BadExecutable) {
            return ValidationInfo(samExecutable.validationError, samExecutableField)
        }

        val samVersion = SemVer.parseFromText(samExecutable.version)
            ?: throw IllegalStateException("SemVer is invalid even with valid SAM executable")

        if (packageType() == PackageType.IMAGE && samVersion < SamCommon.minImageVersion) {
            return ValidationInfo(message("lambda.image.sam_version_too_low", samVersion, SamCommon.minImageVersion))
        }

        val selectedRuntime = runtimes.selected ?: return templateComboBox.validationInfo(message("sam.init.error.no.runtime.selected"))

        val minRuntimeSamVersion = selectedRuntime.minSamInitVersion()
        if (samVersion < minRuntimeSamVersion) {
            return ValidationInfo(message("sam.executable.minimum_too_low_runtime", selectedRuntime, minRuntimeSamVersion), runtimeComboBox)
        }

        val selectedArchitecture = architectures.selected ?: return templateComboBox.validationInfo(message("sam.init.error.no.architecture.selected"))
        val minArchitectureSamVersion = selectedArchitecture.minSamVersion()
        if (samVersion < minArchitectureSamVersion) {
            return ValidationInfo(message("sam.executable.minimum_too_low_architecture", selectedArchitecture, minArchitectureSamVersion), runtimeComboBox)
        }

        val samProjectTemplate = templateComboBox.selectedItem as? SamProjectTemplate
            ?: return templateComboBox.validationInfo(message("sam.init.error.no.template.selected"))

        return wizardFragments.keys
            .filter { it.isApplicable(samProjectTemplate) }
            .mapNotNull { it.validateFragment() }
            .firstOrNull()
    }