mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-207762 better diagnostics for missing serializer
GitOrigin-RevId: 9221a07c88f070151b32e845473167512b8f2efe
This commit is contained in:
committed by
intellij-monorepo-bot
parent
8fb9931220
commit
abe3598180
+10
-4
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.codeInsight.serialization
|
||||
|
||||
import com.intellij.openapi.components.ComponentManager
|
||||
@@ -150,9 +150,15 @@ class ExtensionPointSerializerBean : BaseKeyedLazyInstance<SerializationHelper<A
|
||||
componentManager: ComponentManager,
|
||||
pluginDescriptor: PluginDescriptor,
|
||||
): KSerializer<Any> {
|
||||
val serializableClass = componentManager.loadClass<Any>(fqn, pluginDescriptor)
|
||||
val serializer = SerializerSearcher.findSerializer(serializableClass)
|
||||
return serializer ?: error("Cannot find serializer in $fqn class")
|
||||
try {
|
||||
val serializableClass = componentManager.loadClass<Any>(fqn, pluginDescriptor)
|
||||
|
||||
val serializer = SerializerSearcher.findSerializer(serializableClass)
|
||||
return serializer ?: error("Cannot find serializer in $fqn class")
|
||||
}
|
||||
catch (e: ReflectiveOperationException) {
|
||||
throw IllegalStateException("Cannot find serializer in $fqn class", e)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getKey(): String = implementationClass!!
|
||||
|
||||
+2
-2
@@ -6,8 +6,8 @@ import java.lang.reflect.Modifier
|
||||
|
||||
internal object SerializerSearcher {
|
||||
fun findSerializer(serializableClass: Class<Any>): KSerializer<Any>? =
|
||||
findSerializerInObjectClass(serializableClass) ?:
|
||||
findSerializerInCompanionClass(serializableClass)
|
||||
findSerializerInObjectClass(serializableClass)
|
||||
?: findSerializerInCompanionClass(serializableClass)
|
||||
|
||||
private fun findSerializerInObjectClass(objectClass: Class<*>): KSerializer<Any>? {
|
||||
val instanceField = objectClass.fields.firstOrNull {
|
||||
|
||||
Reference in New Issue
Block a user