Fixed deprecation of ConcurrentFactoryMap()
#KT-24892 Fixed
This commit is contained in:
@@ -31,22 +31,21 @@ import java.nio.file.Path
|
|||||||
|
|
||||||
// There's JrtFileSystem in idea-full which we can't use in the compiler because it depends on NewVirtualFileSystem, absent in intellij-core
|
// There's JrtFileSystem in idea-full which we can't use in the compiler because it depends on NewVirtualFileSystem, absent in intellij-core
|
||||||
class CoreJrtFileSystem : DeprecatedVirtualFileSystem() {
|
class CoreJrtFileSystem : DeprecatedVirtualFileSystem() {
|
||||||
private val handlers = object : ConcurrentFactoryMap<String, CoreJrtHandler?>() {
|
private val handlers =
|
||||||
override fun create(jdkHomePath: String): CoreJrtHandler? {
|
ConcurrentFactoryMap.createMap<String, CoreJrtHandler?> { jdkHomePath ->
|
||||||
val jdkHome = File(jdkHomePath)
|
val jdkHome = File(jdkHomePath)
|
||||||
val rootUri = URI.create(StandardFileSystems.JRT_PROTOCOL + ":/")
|
val rootUri = URI.create(StandardFileSystems.JRT_PROTOCOL + ":/")
|
||||||
val jrtFsJar = loadJrtFsJar(jdkHome) ?: return null
|
val jrtFsJar = loadJrtFsJar(jdkHome) ?: return@createMap null
|
||||||
val fileSystem =
|
val fileSystem =
|
||||||
if (SystemInfo.isJavaVersionAtLeast("9")) {
|
if (SystemInfo.isJavaVersionAtLeast(9, 0, 0)) {
|
||||||
FileSystems.newFileSystem(rootUri, mapOf("java.home" to jdkHome.absolutePath))
|
FileSystems.newFileSystem(rootUri, mapOf("java.home" to jdkHome.absolutePath))
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
val classLoader = URLClassLoader(arrayOf(jrtFsJar.toURI().toURL()), null)
|
val classLoader = URLClassLoader(arrayOf(jrtFsJar.toURI().toURL()), null)
|
||||||
FileSystems.newFileSystem(rootUri, emptyMap<String, Nothing>(), classLoader)
|
FileSystems.newFileSystem(rootUri, emptyMap<String, Nothing>(), classLoader)
|
||||||
}
|
}
|
||||||
return CoreJrtHandler(this@CoreJrtFileSystem, jdkHomePath, fileSystem.getPath(""))
|
CoreJrtHandler(this, jdkHomePath, fileSystem.getPath(""))
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
internal class CoreJrtHandler(
|
internal class CoreJrtHandler(
|
||||||
val virtualFileSystem: CoreJrtFileSystem,
|
val virtualFileSystem: CoreJrtFileSystem,
|
||||||
|
|||||||
+3
-5
@@ -36,11 +36,9 @@ class KotlinScriptDependenciesClassFinder(project: Project,
|
|||||||
) : NonClasspathClassFinder(project), KotlinSafeClassFinder {
|
) : NonClasspathClassFinder(project), KotlinSafeClassFinder {
|
||||||
|
|
||||||
private val myCaches by lazy {
|
private val myCaches by lazy {
|
||||||
object : ConcurrentFactoryMap<VirtualFile, PackageDirectoryCache>() {
|
ConcurrentFactoryMap.createMap<VirtualFile, PackageDirectoryCache> { file ->
|
||||||
override fun create(file: VirtualFile): PackageDirectoryCache? {
|
val scriptClasspath = scriptDependenciesManager.getScriptClasspath(file)
|
||||||
val scriptClasspath = scriptDependenciesManager.getScriptClasspath(file)
|
createCache(scriptClasspath)
|
||||||
return createCache(scriptClasspath)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user