mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-14 18:05:27 +07:00
IJPL-156058 Update JDK handling in warmup activity
This update refactors the JdkWarmupProjectActivity class, implementing a better check for existing JDKs. This change optimizes the way the class avoids creating unnecessary JDKs. GitOrigin-RevId: 930a98cc6ed03bbbbbf2f79b5d5d6bfe262ad950
This commit is contained in:
committed by
intellij-monorepo-bot
parent
93bb70ec15
commit
65b5af76bd
@@ -8,10 +8,10 @@ import com.intellij.openapi.components.serviceAsync
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.JavaSdk
|
||||
import com.intellij.openapi.projectRoots.ProjectJdkTable
|
||||
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil.createUniqueSdkName
|
||||
import com.intellij.openapi.roots.ProjectRootManager
|
||||
import com.intellij.openapi.startup.ProjectActivity
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import java.nio.file.Path
|
||||
|
||||
internal class JdkWarmupProjectActivity : ProjectActivity {
|
||||
override suspend fun execute(project: Project) {
|
||||
@@ -31,18 +31,14 @@ internal class JdkWarmupProjectActivity : ProjectActivity {
|
||||
return
|
||||
}
|
||||
|
||||
val configuredJdkPath = Path.of(configuredJdk)
|
||||
val jdkName = serviceAsync<EnvironmentService>().getEnvironmentValue(JvmEnvironmentKeyProvider.Keys.JDK_NAME, "warmup_jdk")
|
||||
val jdk = JavaSdk.getInstance().createJdk(jdkName, configuredJdkPath.toString())
|
||||
val projectJdkTable = ProjectJdkTable.getInstance()
|
||||
projectJdkTable.findJdk(jdkName, jdk.sdkType.name).let {
|
||||
if (it == null) writeAction {
|
||||
projectJdkTable.addJdk(jdk)
|
||||
}
|
||||
else if (it.homePath != jdk.homePath) writeAction {
|
||||
projectJdkTable.updateJdk(it, jdk)
|
||||
}
|
||||
val jdks = ProjectJdkTable.getInstance().allJdks
|
||||
val compatibleJdk = jdks.filter { it.homePath == configuredJdk }.run {
|
||||
find { it.name == jdkName } ?: firstOrNull()
|
||||
}
|
||||
|
||||
val jdk = compatibleJdk ?: JavaSdk.getInstance().createJdk(createUniqueSdkName(jdkName, jdks.toList()), configuredJdk)
|
||||
|
||||
writeAction {
|
||||
ProjectRootManager.getInstance(project).projectSdk = jdk
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user