From 21c80c4fbc6803fe459236b71a1bcb8c61620f07 Mon Sep 17 00:00:00 2001 From: Nikita Katkov Date: Thu, 14 Nov 2024 15:54:08 +0100 Subject: [PATCH] [json] IJPL-166426 Cache root schema object's file url because it is accessed in the equals & hashcode methods frequently enough (cherry picked from commit 3af3524fb8d7d044da4508090911d8bc97aeda83) IJ-CR-149952 GitOrigin-RevId: e9b81f32abe75d1a48c5ece1c351d6ba209481ee --- .../impl/light/nodes/RootJsonSchemaObjectBackedByJackson.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/json/src/com/jetbrains/jsonSchema/impl/light/nodes/RootJsonSchemaObjectBackedByJackson.kt b/json/src/com/jetbrains/jsonSchema/impl/light/nodes/RootJsonSchemaObjectBackedByJackson.kt index 78ea15905f5f..3e86427d9d43 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/light/nodes/RootJsonSchemaObjectBackedByJackson.kt +++ b/json/src/com/jetbrains/jsonSchema/impl/light/nodes/RootJsonSchemaObjectBackedByJackson.kt @@ -17,6 +17,7 @@ private val IDS_MAP_KEY = Key>("ids") private val DYNAMIC_ANCHORS_MAP_KEY = Key>("dynamicAnchors") private val INJECTIONS_MAP_KEY = Key("injections") private val DEPRECATIONS_MAP_KEY = Key("deprecations") +private val FILE_URL_MAP_KEY = Key("fileUrl") @ApiStatus.Internal class RootJsonSchemaObjectBackedByJackson(rootNode: JsonNode, val schemaFile: VirtualFile?) @@ -57,7 +58,9 @@ class RootJsonSchemaObjectBackedByJackson(rootNode: JsonNode, val schemaFile: Vi } override fun getFileUrl(): String? { - return schemaFile?.url + return getOrComputeValue(FILE_URL_MAP_KEY) { + schemaFile?.url.orEmpty() + }.takeIf { it.isNotEmpty() } } override fun getRawFile(): VirtualFile? {