Skip to content

Commit 3d1a90a

Browse files
committed
Use Java SDK defined on JAVA_HOME by default on JetBrains IDEs
1 parent 47c64d4 commit 3d1a90a

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

components/ide/jetbrains/backend-plugin/src/main/kotlin/io/gitpod/jetbrains/remote/GitpodProjectManager.kt

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ import com.intellij.openapi.module.Module
1010
import com.intellij.openapi.module.ModuleManager
1111
import com.intellij.openapi.project.ModuleListener
1212
import com.intellij.openapi.project.Project
13-
import com.intellij.openapi.projectRoots.ProjectJdkTable
14-
import com.intellij.openapi.projectRoots.Sdk
13+
import com.intellij.openapi.projectRoots.*
14+
import com.intellij.openapi.projectRoots.impl.JavaHomeFinder
15+
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil
1516
import com.intellij.openapi.roots.ModuleRootModificationUtil
1617
import com.intellij.openapi.roots.ProjectRootManager
1718
import com.intellij.util.application
@@ -21,6 +22,7 @@ import kotlinx.coroutines.launch
2122
import java.util.concurrent.CompletableFuture
2223

2324

25+
@Suppress("UnstableApiUsage", "OPT_IN_USAGE")
2426
class GitpodProjectManager(
2527
private val project: Project
2628
) {
@@ -40,8 +42,11 @@ class GitpodProjectManager(
4042
application.invokeLaterOnWriteThread {
4143
application.runWriteAction {
4244
try {
43-
ProjectJdkTable.getInstance().preconfigure()
44-
pendingSdk.complete(ProjectJdkTable.getInstance().allJdks.firstOrNull())
45+
val jdkTable = ProjectJdkTable.getInstance()
46+
JavaHomeFinder.getFinder().findExistingJdks().forEach { javaHome ->
47+
SdkConfigurationUtil.createAndAddSDK(javaHome, SdkType.findByName(jdkTable.defaultSdkType.name)!!)
48+
}
49+
pendingSdk.complete(jdkTable.allJdks.firstOrNull())
4550
} catch (t: Throwable) {
4651
pendingSdk.completeExceptionally(t)
4752
}
@@ -58,24 +63,23 @@ class GitpodProjectManager(
5863
configureSdk(sdk)
5964
}
6065
}
61-
6266
private fun configureSdk(sdk: Sdk) {
6367
application.invokeLaterOnWriteThread {
6468
application.runWriteAction {
6569
val projectRootManager = ProjectRootManager.getInstance(project)
66-
if (projectRootManager.projectSdk == null) {
70+
if (projectRootManager.projectSdk != sdk) {
6771
projectRootManager.projectSdk = sdk
6872
thisLogger().warn("gitpod: '${project.name}' project: SDK was auto preconfigured: $sdk")
6973
}
7074
}
7175
}
7276
for (module in ModuleManager.getInstance(project).modules) {
7377
ModuleRootModificationUtil.updateModel(module) { m ->
74-
if (m.sdk == null) {
78+
if (m.sdk != sdk) {
7579
m.sdk = sdk
7680
thisLogger().warn("gitpod: '${module.name}' module: SDK was auto preconfigured: $sdk")
7781
}
7882
}
7983
}
8084
}
81-
}
85+
}

0 commit comments

Comments
 (0)