Fixed deprecation of ConcurrentFactoryMap()

#KT-24892 Fixed
This commit is contained in:
Alexander Podkhalyuzin
2018-06-13 15:35:16 +03:00
parent 6dc36055b8
commit 571fda0f45
2 changed files with 14 additions and 17 deletions
@@ -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,
@@ -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)
}
} }
} }