mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
[Workspace Model] Correctly serialize and deserialize arrays with classes from plugins
GitOrigin-RevId: d6658f355e40a8e2a7948c4e05b13f21c4dabe52
This commit is contained in:
committed by
intellij-monorepo-bot
parent
df29621b2c
commit
dd3f8fc6a9
@@ -166,7 +166,13 @@ class WorkspaceModelCacheImpl(private val project: Project, parentDisposable: Di
|
||||
}
|
||||
|
||||
object PluginAwareEntityTypesResolver : EntityTypesResolver {
|
||||
override fun getPluginId(clazz: Class<*>): String? = PluginManager.getInstance().getPluginOrPlatformByClassName(clazz.name)?.idString
|
||||
override fun getPluginId(clazz: Class<*>): String? {
|
||||
val className = clazz.name
|
||||
if (className.startsWith("[")) {
|
||||
return PluginManager.getInstance().getPluginOrPlatformByClassName(clazz.componentType.name)?.idString
|
||||
}
|
||||
return PluginManager.getInstance().getPluginOrPlatformByClassName(className)?.idString
|
||||
}
|
||||
|
||||
override fun resolveClass(name: String, pluginId: String?): Class<*> {
|
||||
val id = pluginId?.let { PluginId.getId(it) }
|
||||
@@ -178,7 +184,7 @@ class WorkspaceModelCacheImpl(private val project: Project, parentDisposable: Di
|
||||
plugin.pluginClassLoader ?: ApplicationManager::class.java.classLoader
|
||||
}
|
||||
|
||||
if (name.startsWith("[")) return Class.forName(name)
|
||||
if (name.startsWith("[")) return Class.forName(name, true, classloader)
|
||||
return classloader.loadClass(name)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user