mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
store soft ref to the schema
GitOrigin-RevId: 74debda71c1612954124a461a62388e698be0128
This commit is contained in:
committed by
intellij-monorepo-bot
parent
7a4c0621c3
commit
2c9efdd5c7
@@ -11,9 +11,9 @@ import com.intellij.openapi.diagnostic.logger
|
||||
import com.intellij.openapi.project.DumbAware
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.openapi.util.UserDataHolderBase
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.reference.SoftReference
|
||||
import com.intellij.testFramework.LightVirtualFile
|
||||
import com.intellij.util.SystemProperties
|
||||
import com.jetbrains.jsonSchema.extension.JsonSchemaFileProvider
|
||||
@@ -25,7 +25,7 @@ import org.jetbrains.io.json
|
||||
|
||||
internal val LOG = logger<IntellijConfigurationJsonSchemaProviderFactory>()
|
||||
|
||||
private val PROVIDER_KEY = Key.create<List<JsonSchemaFileProvider>>("IntellijConfigurationJsonSchemaProvider")
|
||||
private val PROVIDER_KEY = Key.create<SoftReference<List<JsonSchemaFileProvider>>>("IntellijConfigurationJsonSchemaProvider")
|
||||
|
||||
internal class IntellijConfigurationJsonSchemaProviderFactory : JsonSchemaProviderFactory, DumbAware {
|
||||
private val schemeContent by lazy {
|
||||
@@ -33,7 +33,7 @@ internal class IntellijConfigurationJsonSchemaProviderFactory : JsonSchemaProvid
|
||||
}
|
||||
|
||||
override fun getProviders(project: Project): List<JsonSchemaFileProvider> {
|
||||
var result = PROVIDER_KEY.get(project)
|
||||
var result = PROVIDER_KEY.get(project)?.get()
|
||||
if (result != null) {
|
||||
return result
|
||||
}
|
||||
@@ -42,7 +42,8 @@ internal class IntellijConfigurationJsonSchemaProviderFactory : JsonSchemaProvid
|
||||
// LightVirtualFile cannot be cached per application, must be stored per project.
|
||||
// Yes, it is hack, but for now decided to not fix this issue on platform level.
|
||||
result = listOf(MyJsonSchemaFileProvider())
|
||||
return (project as UserDataHolderBase).putUserDataIfAbsent(PROVIDER_KEY, result)
|
||||
project.putUserData(PROVIDER_KEY, SoftReference<List<JsonSchemaFileProvider>>(result))
|
||||
return result
|
||||
}
|
||||
|
||||
inner class MyJsonSchemaFileProvider : JsonSchemaFileProvider, DumbAware {
|
||||
|
||||
Reference in New Issue
Block a user