Avoid using reflected types in the scripting API
since it causes numerous classloading issues. Using the wrapping types and reload them in the proper context when needed. Note: this version supports only classes, but the wrapping type could be extended to support other types in the future. + numerous fixes related to proper loading and handling of the templates.
This commit is contained in:
+6
-3
@@ -236,10 +236,13 @@ internal class BridgeScriptDefinition(
|
||||
scriptCompilerConfiguration: ScriptCompileConfiguration,
|
||||
scriptConfigurator: ScriptCompilationConfigurator?,
|
||||
updateClasspath: (List<File>) -> Unit
|
||||
) : KotlinScriptDefinition(scriptCompilerConfiguration[ScriptingEnvironmentProperties.baseClass] as KClass<out Any>) {
|
||||
override val acceptedAnnotations =
|
||||
scriptCompilerConfiguration.getOrNull(ScriptCompileConfigurationProperties.refineConfigurationOnAnnotations)?.toList()
|
||||
) : KotlinScriptDefinition(scriptCompilerConfiguration.getScriptBaseClass(BridgeScriptDefinition::class)) {
|
||||
override val acceptedAnnotations = run {
|
||||
val cl = this::class.java.classLoader
|
||||
scriptCompilerConfiguration.getOrNull(ScriptCompileConfigurationProperties.refineConfigurationOnAnnotations)
|
||||
?.map { (cl.loadClass(it.typeName) as Class<out Annotation>).kotlin }
|
||||
?: emptyList()
|
||||
}
|
||||
|
||||
override val dependencyResolver: DependenciesResolver =
|
||||
BridgeDependenciesResolver(scriptConfigurator, scriptCompilerConfiguration, updateClasspath)
|
||||
|
||||
Reference in New Issue
Block a user