From c9a079f908a6fc77f20711d5e20ed1c84aa8388c Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Tue, 24 May 2022 10:22:57 +0200 Subject: [PATCH] [kpm] serializationUtil.kt: Implement custom ClassLoaderObjectInputStream Previously used the Gradle implementation, which had an undesirable fallback for the case of missing classes in the given class loader. For our tests, we want to ensure that only the specified class loader is used. --- .../gradle/kpm/idea/testFixtures/serializationUtil.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/testFixtures/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/testFixtures/serializationUtil.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/testFixtures/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/testFixtures/serializationUtil.kt index a6e82087e29..51f6420bcaf 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/testFixtures/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/testFixtures/serializationUtil.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/testFixtures/kotlin/org/jetbrains/kotlin/gradle/kpm/idea/testFixtures/serializationUtil.kt @@ -1,6 +1,5 @@ package org.jetbrains.kotlin.gradle.kpm.idea.testFixtures -import org.gradle.internal.io.ClassLoaderObjectInputStream import java.io.* /* @@ -26,3 +25,10 @@ fun ByteArray.deserialize(classLoader: ClassLoader): Any { val objectInputStream = ClassLoaderObjectInputStream(inputStream, classLoader) return objectInputStream.use { it.readObject() } } + +class ClassLoaderObjectInputStream(stream: InputStream?, private val classLoader: ClassLoader) : ObjectInputStream(stream) { + @Throws(IOException::class, ClassNotFoundException::class) + override fun resolveClass(desc: ObjectStreamClass): Class<*> { + return Class.forName(desc.name, false, classLoader) + } +}