@@ -10,8 +10,9 @@ import com.intellij.openapi.module.Module
10
10
import com.intellij.openapi.module.ModuleManager
11
11
import com.intellij.openapi.project.ModuleListener
12
12
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
15
16
import com.intellij.openapi.roots.ModuleRootModificationUtil
16
17
import com.intellij.openapi.roots.ProjectRootManager
17
18
import com.intellij.util.application
@@ -21,6 +22,7 @@ import kotlinx.coroutines.launch
21
22
import java.util.concurrent.CompletableFuture
22
23
23
24
25
+ @Suppress(" UnstableApiUsage" , " OPT_IN_USAGE" )
24
26
class GitpodProjectManager (
25
27
private val project : Project
26
28
) {
@@ -40,8 +42,11 @@ class GitpodProjectManager(
40
42
application.invokeLaterOnWriteThread {
41
43
application.runWriteAction {
42
44
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())
45
50
} catch (t: Throwable ) {
46
51
pendingSdk.completeExceptionally(t)
47
52
}
@@ -58,24 +63,23 @@ class GitpodProjectManager(
58
63
configureSdk(sdk)
59
64
}
60
65
}
61
-
62
66
private fun configureSdk (sdk : Sdk ) {
63
67
application.invokeLaterOnWriteThread {
64
68
application.runWriteAction {
65
69
val projectRootManager = ProjectRootManager .getInstance(project)
66
- if (projectRootManager.projectSdk == null ) {
70
+ if (projectRootManager.projectSdk != sdk ) {
67
71
projectRootManager.projectSdk = sdk
68
72
thisLogger().warn(" gitpod: '${project.name} ' project: SDK was auto preconfigured: $sdk " )
69
73
}
70
74
}
71
75
}
72
76
for (module in ModuleManager .getInstance(project).modules) {
73
77
ModuleRootModificationUtil .updateModel(module) { m ->
74
- if (m.sdk == null ) {
78
+ if (m.sdk != sdk ) {
75
79
m.sdk = sdk
76
80
thisLogger().warn(" gitpod: '${module.name} ' module: SDK was auto preconfigured: $sdk " )
77
81
}
78
82
}
79
83
}
80
84
}
81
- }
85
+ }
0 commit comments