diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt index 0ad4e9edfd9..32901ee609d 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt @@ -8,13 +8,12 @@ package org.jetbrains.kotlin.idea.caches.project import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.Project -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.roots.JdkOrderEntry import com.intellij.openapi.roots.LibraryOrderEntry import com.intellij.openapi.roots.ModuleRootManager import org.jetbrains.kotlin.caches.project.cacheInvalidatingOnRootModifications -import org.jetbrains.kotlin.idea.util.application.runReadAction +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.isCommon import org.jetbrains.kotlin.types.typeUtil.closure @@ -93,6 +92,4 @@ private fun mergePlatformModules( return rest + platformModules } -internal fun getAllProjectSdks(): Array = runReadAction { - ProjectJdkTable.getInstance().allJdks -} +internal fun getAllProjectSdks(): Array = getProjectJdkTableSafe().allJdks diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ijPlatformUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ijPlatformUtil.kt new file mode 100644 index 00000000000..1970072e5f0 --- /dev/null +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ijPlatformUtil.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ +@file:JvmName("IjPlatformUtil") + +package org.jetbrains.kotlin.idea.util + + +import com.intellij.openapi.projectRoots.ProjectJdkTable +import org.jetbrains.kotlin.idea.util.application.runReadAction + +fun getProjectJdkTableSafe(): ProjectJdkTable = runReadAction { ProjectJdkTable.getInstance() } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt index 4efb84700f2..bba86813982 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDefinitionsManager.kt @@ -19,7 +19,6 @@ import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.fileTypes.FileTypeManager import com.intellij.openapi.project.Project import com.intellij.openapi.projectRoots.JavaSdk -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.ex.PathUtilEx import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.vfs.VfsUtil @@ -29,6 +28,7 @@ import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.caches.project.SdkInfo import org.jetbrains.kotlin.idea.caches.project.getScriptRelatedModuleInfo import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.script.ScriptTemplatesProvider import org.jetbrains.kotlin.scripting.definitions.* import org.jetbrains.kotlin.utils.PathUtil @@ -343,7 +343,7 @@ class BundledKotlinScriptDependenciesResolver(private val project: Project) : De } val jdk = ProjectRootManager.getInstance(project).projectSdk - ?: ProjectJdkTable.getInstance().allJdks.firstOrNull { sdk -> sdk.sdkType is JavaSdk } + ?: getProjectJdkTableSafe().allJdks.firstOrNull { sdk -> sdk.sdkType is JavaSdk } ?: PathUtilEx.getAnyJdk(project) return jdk?.homePath } diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/AbstractGradleMultiplatformWizardTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/AbstractGradleMultiplatformWizardTest.kt index 894512e9775..33d896a1075 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/AbstractGradleMultiplatformWizardTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/gradle/AbstractGradleMultiplatformWizardTest.kt @@ -26,7 +26,6 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemUtil import com.intellij.openapi.fileTypes.FileTypeManager import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.Project -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.SimpleJavaSdkType import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.roots.ProjectRootManager @@ -46,6 +45,7 @@ import junit.framework.TestCase import org.jetbrains.kotlin.idea.codeInsight.gradle.ExternalSystemImportingTestCase.LATEST_STABLE_GRADLE_PLUGIN_VERSION import org.jetbrains.kotlin.idea.codeInsight.gradle.GradleImportingTestCase import org.jetbrains.kotlin.idea.configuration.KotlinGradleAbstractMultiplatformModuleBuilder +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper import org.jetbrains.plugins.gradle.settings.DistributionType import org.jetbrains.plugins.gradle.settings.GradleExecutionSettings @@ -250,7 +250,7 @@ abstract class AbstractGradleMultiplatformWizardTest : ProjectWizardTestCase() { override fun run(result: Result) { val jdk = JavaSdk.getInstance().createJdk("myJDK", "my/path/to/jdk") - ProjectJdkTable.getInstance().addJdk(jdk) + getProjectJdkTableSafe().addJdk(jdk) } }.execute() @@ -777,7 +777,7 @@ class GradleFacetImportTest : GradleImportingTestCase() { } finally { object : WriteAction() { override fun run(result: Result) { - val jdkTable = ProjectJdkTable.getInstance() + val jdkTable = getProjectJdkTableSafe() jdkTable.removeJdk(jdkTable.findJdk("myJDK")!!) } }.execute() diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt index 44361a8b80d..2cf141c5114 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleImportingTestCase.kt @@ -28,7 +28,6 @@ import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.fileEditor.impl.LoadTextUtil import com.intellij.openapi.fileTypes.FileTypeManager import com.intellij.openapi.projectRoots.JavaSdk -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil import com.intellij.openapi.ui.Messages import com.intellij.openapi.ui.TestDialog @@ -45,6 +44,7 @@ import org.intellij.lang.annotations.Language import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.idea.test.KotlinSdkCreationChecker import org.jetbrains.kotlin.idea.test.PluginTestCaseBase +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.test.JUnitParameterizedWithIdeaConfigurationRunner import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.plugins.gradle.settings.DistributionType @@ -110,13 +110,14 @@ abstract class GradleImportingTestCase : ExternalSystemImportingTestCase() { assumeTrue(isApplicableTest()) assumeThat(gradleVersion, versionMatcherRule.matcher) runWrite { - ProjectJdkTable.getInstance().findJdk(GRADLE_JDK_NAME)?.let { - ProjectJdkTable.getInstance().removeJdk(it) + val jdkTable = getProjectJdkTableSafe() + jdkTable.findJdk(GRADLE_JDK_NAME)?.let { + jdkTable.removeJdk(it) } val jdkHomeDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(File(myJdkHome))!! val jdk = SdkConfigurationUtil.setupSdk(arrayOfNulls(0), jdkHomeDir, JavaSdk.getInstance(), true, null, GRADLE_JDK_NAME) TestCase.assertNotNull("Cannot create JDK for $myJdkHome", jdk) - ProjectJdkTable.getInstance().addJdk(jdk!!) + jdkTable.addJdk(jdk!!) FileTypeManager.getInstance().associateExtension(GroovyFileType.GROOVY_FILE_TYPE, "gradle") } @@ -135,7 +136,7 @@ abstract class GradleImportingTestCase : ExternalSystemImportingTestCase() { override fun tearDown() { try { runWrite { - val old = ProjectJdkTable.getInstance().findJdk(GRADLE_JDK_NAME) + val old = getProjectJdkTableSafe().findJdk(GRADLE_JDK_NAME) if (old != null) { SdkConfigurationUtil.removeSdk(old) } diff --git a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt index 7f23a1ea2fd..96027766e35 100644 --- a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt +++ b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt @@ -20,7 +20,6 @@ import com.intellij.application.options.CodeStyle import com.intellij.openapi.application.Result import com.intellij.openapi.application.WriteAction import com.intellij.openapi.projectRoots.JavaSdk -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.roots.CompilerModuleExtension import com.intellij.openapi.roots.LibraryOrderEntry import com.intellij.openapi.roots.ModuleRootManager @@ -45,6 +44,7 @@ import org.jetbrains.kotlin.idea.framework.CommonLibraryKind import org.jetbrains.kotlin.idea.framework.JSLibraryKind import org.jetbrains.kotlin.idea.framework.KotlinSdkType import org.jetbrains.kotlin.idea.project.languageVersionSettings +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner import org.jetbrains.kotlin.platform.CommonPlatforms @@ -2540,7 +2540,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() { object : WriteAction() { override fun run(result: Result) { val jdk = JavaSdk.getInstance().createJdk("myJDK", "my/path/to/jdk") - ProjectJdkTable.getInstance().addJdk(jdk) + getProjectJdkTableSafe().addJdk(jdk) } }.execute() @@ -2597,7 +2597,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() { } finally { object : WriteAction() { override fun run(result: Result) { - val jdkTable = ProjectJdkTable.getInstance() + val jdkTable = getProjectJdkTableSafe() jdkTable.removeJdk(jdkTable.findJdk("myJDK")!!) } }.execute() diff --git a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.kt b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.kt index d6a75065bb8..0edb1032d4a 100644 --- a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.kt +++ b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/ConfigLibraryUtil.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.test import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.module.Module -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.roots.LibraryOrderEntry import com.intellij.openapi.roots.ModifiableRootModel @@ -33,6 +32,7 @@ import com.intellij.openapi.vfs.VfsUtil import org.jetbrains.kotlin.idea.framework.CommonLibraryKind import org.jetbrains.kotlin.idea.framework.JSLibraryKind import org.jetbrains.kotlin.idea.util.application.runWriteAction +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.utils.PathUtil import java.io.File @@ -109,7 +109,7 @@ object ConfigLibraryUtil { val rootModel = rootManager.modifiableModel assertNotNull( - ProjectJdkTable.getInstance().findJdk(sdk.name), + getProjectJdkTableSafe().findJdk(sdk.name), "Cannot find sdk in ProjectJdkTable. This may cause sdk leak.\n" + "You can use ProjectPluginTestBase.addJdk(Disposable ...) to register sdk in ProjectJdkTable.\n" + "Then sdk will be removed in tearDown" diff --git a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinSdkCreationChecker.kt b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinSdkCreationChecker.kt index 4749db62a85..74866047c34 100644 --- a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinSdkCreationChecker.kt +++ b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinSdkCreationChecker.kt @@ -7,23 +7,23 @@ package org.jetbrains.kotlin.idea.test import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.runWriteAction -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.Sdk import org.jetbrains.kotlin.idea.framework.KotlinSdkType +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe class KotlinSdkCreationChecker { - private val sdksBefore: Array = ProjectJdkTable.getInstance().allJdks + private val sdksBefore: Array = getProjectJdkTableSafe().allJdks - fun getKotlinSdks() = ProjectJdkTable.getInstance().allJdks.filter { it.sdkType is KotlinSdkType } + fun getKotlinSdks() = getProjectJdkTableSafe().allJdks.filter { it.sdkType is KotlinSdkType } private fun getCreatedKotlinSdks() = - ProjectJdkTable.getInstance().allJdks.filter { !sdksBefore.contains(it) && it.sdkType is KotlinSdkType } + getProjectJdkTableSafe().allJdks.filter { !sdksBefore.contains(it) && it.sdkType is KotlinSdkType } fun isKotlinSdkCreated() = getCreatedKotlinSdks().isNotEmpty() fun removeNewKotlinSdk() { - val jdkTable = ProjectJdkTable.getInstance() + val jdkTable = getProjectJdkTableSafe() ApplicationManager.getApplication().invokeAndWait { runWriteAction { getCreatedKotlinSdks().forEach { jdkTable.removeJdk(it) } diff --git a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/PluginTestCaseBase.java b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/PluginTestCaseBase.java index 0d31995a2be..6a5c0d9e375 100644 --- a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/PluginTestCaseBase.java +++ b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/PluginTestCaseBase.java @@ -28,6 +28,7 @@ import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess; import kotlin.jvm.functions.Function0; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.TestOnly; +import org.jetbrains.kotlin.idea.util.IjPlatformUtil; import org.jetbrains.kotlin.test.KotlinTestUtils; import org.jetbrains.kotlin.test.TestJdkKind; @@ -53,7 +54,7 @@ public class PluginTestCaseBase { @NotNull private static Sdk getSdk(String sdkHome, String name) { - ProjectJdkTable table = ProjectJdkTable.getInstance(); + ProjectJdkTable table = IjPlatformUtil.getProjectJdkTableSafe(); Sdk existing = table.findJdk(name); if (existing != null) { return existing; @@ -93,7 +94,7 @@ public class PluginTestCaseBase { @NotNull public static Sdk addJdk(@NotNull Disposable disposable, @NotNull Function0 getJdk) { Sdk jdk = getJdk.invoke(); - ApplicationManager.getApplication().runWriteAction(() -> ProjectJdkTable.getInstance().addJdk(jdk, disposable)); + ApplicationManager.getApplication().runWriteAction(() -> IjPlatformUtil.getProjectJdkTableSafe().addJdk(jdk, disposable)); return jdk; } @@ -120,7 +121,7 @@ public class PluginTestCaseBase { @TestOnly public static void clearSdkTable(@NotNull Disposable disposable) { Disposer.register(disposable, () -> ApplicationManager.getApplication().runWriteAction(() -> { - ProjectJdkTable jdkTable = ProjectJdkTable.getInstance(); + ProjectJdkTable jdkTable = IjPlatformUtil.getProjectJdkTableSafe(); for (Sdk sdk : jdkTable.getAllJdks()) { jdkTable.removeJdk(sdk); } diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt index 4b41e9123d9..9e3ab1b4d78 100644 --- a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt +++ b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt @@ -28,7 +28,6 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.project.ex.ProjectManagerEx import com.intellij.openapi.project.impl.ProjectImpl import com.intellij.openapi.projectRoots.JavaSdk -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl import com.intellij.openapi.roots.ProjectRootManager @@ -59,6 +58,7 @@ import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.cleanupCaches import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.isAKotlinScriptFile import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.openFileInEditor import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.openFixture +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import java.io.File import java.nio.file.Paths @@ -89,7 +89,7 @@ abstract class AbstractPerformanceProjectsTest : UsefulTestCase() { jdk18 = javaSdk.createJdk("1.8", homePath) val internal = javaSdk.createJdk("IDEA jdk", homePath) - val jdkTable = ProjectJdkTable.getInstance() + val jdkTable = getProjectJdkTableSafe() jdkTable.addJdk(jdk18, testRootDisposable) jdkTable.addJdk(internal, testRootDisposable) KotlinSdkType.setUpIfNeeded() diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectPerformanceTest.kt b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectPerformanceTest.kt index 1a78539108a..475447b346c 100644 --- a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectPerformanceTest.kt +++ b/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectPerformanceTest.kt @@ -20,7 +20,6 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ex.ApplicationEx import com.intellij.openapi.application.runWriteAction import com.intellij.openapi.projectRoots.JavaSdk -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiElement @@ -32,6 +31,7 @@ import com.intellij.xml.XmlSchemaProvider import org.jetbrains.kotlin.idea.framework.KotlinSdkType import org.jetbrains.kotlin.idea.perf.Stats.Companion.tcSuite import org.jetbrains.kotlin.idea.perf.Stats.Companion.tcTest +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import java.io.* abstract class WholeProjectPerformanceTest : DaemonAnalyzerTestCase(), WholeProjectFileProvider { @@ -57,7 +57,7 @@ abstract class WholeProjectPerformanceTest : DaemonAnalyzerTestCase(), WholeProj val javaSdk = JavaSdk.getInstance() val j8 = javaSdk.createJdk("1.8", homePath) - val jdkTable = ProjectJdkTable.getInstance() + val jdkTable = getProjectJdkTableSafe() jdkTable.addJdk(j8, testRootDisposable) KotlinSdkType.setUpIfNeeded() } diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt index 97cf9f349c4..64f41674c1f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt @@ -20,7 +20,6 @@ import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsPr import com.intellij.openapi.module.Module import com.intellij.openapi.projectRoots.JavaSdk import com.intellij.openapi.projectRoots.JavaSdkVersion -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.roots.ExternalProjectSystemRegistry import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.roots.ModuleRootModel @@ -39,6 +38,7 @@ import org.jetbrains.kotlin.idea.core.isAndroidModule import org.jetbrains.kotlin.idea.framework.KotlinSdkType import org.jetbrains.kotlin.idea.platform.tooling import org.jetbrains.kotlin.idea.util.application.runWriteAction +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.platform.* import org.jetbrains.kotlin.platform.compat.toNewPlatform import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind @@ -279,7 +279,7 @@ private fun Module.configureSdkIfPossible(compilerArguments: CommonCompilerArgum val projectSdk = ProjectRootManager.getInstance(project).projectSdk KotlinSdkType.setUpIfNeeded() - val allSdks = ProjectJdkTable.getInstance().allJdks + val allSdks = getProjectJdkTableSafe().allJdks val sdk = if (compilerArguments is K2JVMCompilerArguments) { val jdkHome = compilerArguments.jdkHome when { diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfoTest.kt b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfoTest.kt index d4718c1ded3..3fa4c6177ea 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfoTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfoTest.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.idea.caches.resolve import com.intellij.openapi.module.Module import com.intellij.openapi.module.StdModuleTypes -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.roots.DependencyScope import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.roots.ModuleRootModificationUtil @@ -28,6 +27,7 @@ import org.jetbrains.kotlin.idea.framework.CommonLibraryKind import org.jetbrains.kotlin.idea.framework.JSLibraryKind import org.jetbrains.kotlin.idea.test.PluginTestCaseBase.* import org.jetbrains.kotlin.idea.util.application.runWriteAction +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.util.addDependency @@ -347,13 +347,15 @@ class IdeaModuleInfoTest : ModuleTestCase() { fun testSdkForScript() { // The first known jdk will be used for scripting if there is no jdk in the project runWriteAction { - ProjectJdkTable.getInstance().addJdk(mockJdk6()) - ProjectJdkTable.getInstance().addJdk(mockJdk9()) + val jdkTable = getProjectJdkTableSafe() + + jdkTable.addJdk(mockJdk6()) + jdkTable.addJdk(mockJdk9()) ProjectRootManager.getInstance(project).projectSdk = null } - val firstSDK = ProjectJdkTable.getInstance().allJdks.first() + val firstSDK = getProjectJdkTableSafe().allJdks.first() with(createFileInProject("script.kts").moduleInfo) { dependencies().filterIsInstance().single { it.sdk == firstSDK } @@ -362,8 +364,10 @@ class IdeaModuleInfoTest : ModuleTestCase() { fun testSdkForScriptProjectSdk() { runWriteAction { - ProjectJdkTable.getInstance().addJdk(mockJdk6()) - ProjectJdkTable.getInstance().addJdk(mockJdk9()) + val jdkTable = getProjectJdkTableSafe() + + jdkTable.addJdk(mockJdk6()) + jdkTable.addJdk(mockJdk9()) ProjectRootManager.getInstance(project).projectSdk = mockJdk9() } @@ -377,8 +381,10 @@ class IdeaModuleInfoTest : ModuleTestCase() { val a = module("a") runWriteAction { - ProjectJdkTable.getInstance().addJdk(mockJdk6()) - ProjectJdkTable.getInstance().addJdk(mockJdk9()) + val jdkTable = getProjectJdkTableSafe() + + jdkTable.addJdk(mockJdk6()) + jdkTable.addJdk(mockJdk9()) ProjectRootManager.getInstance(project).projectSdk = mockJdk6() with(ModuleRootManager.getInstance(a).modifiableModel) { diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt b/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt index 7c0106e7fd5..b0e12523cc8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/AbstractConfigureKotlinTest.kt @@ -10,7 +10,6 @@ import com.intellij.openapi.application.PathMacros import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.project.Project -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.util.io.FileUtil @@ -22,6 +21,7 @@ import junit.framework.TestCase import org.jetbrains.kotlin.idea.configuration.KotlinWithLibraryConfigurator.FileState import org.jetbrains.kotlin.idea.framework.KotlinSdkType import org.jetbrains.kotlin.idea.test.PluginTestCaseBase +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.utils.PathUtil import java.io.File @@ -49,9 +49,11 @@ abstract class AbstractConfigureKotlinTest : PlatformTestCase() { KotlinSdkType.setUpIfNeeded() ApplicationManager.getApplication().runWriteAction { - ProjectJdkTable.getInstance().addJdk(PluginTestCaseBase.mockJdk6()) - ProjectJdkTable.getInstance().addJdk(PluginTestCaseBase.mockJdk8()) - ProjectJdkTable.getInstance().addJdk(PluginTestCaseBase.mockJdk9()) + val jdkTable = getProjectJdkTableSafe() + + jdkTable.addJdk(PluginTestCaseBase.mockJdk6()) + jdkTable.addJdk(PluginTestCaseBase.mockJdk8()) + jdkTable.addJdk(PluginTestCaseBase.mockJdk9()) } PluginTestCaseBase.clearSdkTable(testRootDisposable) diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/AutoConfigureKotlinSdkOnStartupTest.kt b/idea/tests/org/jetbrains/kotlin/idea/configuration/AutoConfigureKotlinSdkOnStartupTest.kt index ed11f723034..863e7dd989a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/configuration/AutoConfigureKotlinSdkOnStartupTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/AutoConfigureKotlinSdkOnStartupTest.kt @@ -5,8 +5,8 @@ package org.jetbrains.kotlin.idea.configuration -import com.intellij.openapi.projectRoots.ProjectJdkTable import org.jetbrains.kotlin.idea.framework.KotlinSdkType +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner import org.junit.Assert import org.junit.runner.RunWith @@ -15,6 +15,6 @@ import org.junit.runner.RunWith @RunWith(JUnit3WithIdeaConfigurationRunner::class) class AutoConfigureKotlinSdkOnStartupTest : AbstractConfigureKotlinInTempDirTest() { fun testKotlinSdkAdded() { - Assert.assertTrue(ProjectJdkTable.getInstance().allJdks.any { it.sdkType is KotlinSdkType }) + Assert.assertTrue(getProjectJdkTableSafe().allJdks.any { it.sdkType is KotlinSdkType }) } } \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt index 33512f6b80f..54e67e43774 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationTest.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.idea.script import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.module.JavaModuleType import com.intellij.openapi.module.Module -import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.roots.ModuleRootModificationUtil import com.intellij.openapi.roots.ProjectRootManager @@ -30,6 +29,7 @@ import org.jetbrains.kotlin.idea.core.script.isScriptChangesNotifierDisabled import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingUtil import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.idea.util.application.runWriteAction +import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition import org.jetbrains.kotlin.test.KotlinTestUtils @@ -78,7 +78,7 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() { private val sdk by lazy { val jdk = PluginTestCaseBase.jdk(TestJdkKind.MOCK_JDK) runWriteAction { - ProjectJdkTable.getInstance().addJdk(jdk, testRootDisposable) + getProjectJdkTableSafe().addJdk(jdk, testRootDisposable) ProjectRootManager.getInstance(project).projectSdk = jdk } jdk @@ -208,7 +208,7 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() { } runWriteAction { val jdk = PluginTestCaseBase.jdk(jdkKind) - ProjectJdkTable.getInstance().addJdk(jdk, testRootDisposable) + getProjectJdkTableSafe().addJdk(jdk, testRootDisposable) env["javaHome"] = File(jdk.homePath) }