Introduce GetScriptingClassByClassLoader interface

It is needed to override default JVM behaviour
This commit is contained in:
Ilya Muradyan
2020-11-27 13:55:24 +03:00
committed by Ilya Chernikov
parent 65ce7cd0c2
commit 89bba93615
3 changed files with 160 additions and 4 deletions
@@ -45,7 +45,11 @@ val defaultJvmScriptingHostConfiguration
getScriptingClass(JvmGetScriptingClass())
}
class JvmGetScriptingClass : GetScriptingClass, Serializable {
interface GetScriptingClassByClassLoader : GetScriptingClass {
operator fun invoke(classType: KotlinType, contextClassLoader: ClassLoader?, hostConfiguration: ScriptingHostConfiguration): KClass<*>
}
class JvmGetScriptingClass : GetScriptingClassByClassLoader, Serializable {
@Transient
private var dependencies: List<ScriptDependency>? = null
@@ -64,7 +68,11 @@ class JvmGetScriptingClass : GetScriptingClass, Serializable {
invoke(classType, contextClass.java.classLoader, hostConfiguration)
@Synchronized
operator fun invoke(classType: KotlinType, contextClassLoader: ClassLoader?, hostConfiguration: ScriptingHostConfiguration): KClass<*> {
override operator fun invoke(
classType: KotlinType,
contextClassLoader: ClassLoader?,
hostConfiguration: ScriptingHostConfiguration
): KClass<*> {
// checking if class already loaded in the same context
val fromClass = classType.fromClass