Introducing transient properties in scripting API
This commit is contained in:
@@ -8,7 +8,10 @@
|
||||
package kotlin.script.experimental.jvm
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.api.EvaluationResult
|
||||
import kotlin.script.experimental.api.ScriptEvaluationConfiguration
|
||||
import kotlin.script.experimental.api.ScriptEvaluationConfigurationKeys
|
||||
import kotlin.script.experimental.api.hostConfiguration
|
||||
import kotlin.script.experimental.host.ScriptingHostConfiguration
|
||||
import kotlin.script.experimental.util.PropertiesCollection
|
||||
|
||||
@@ -22,10 +25,13 @@ open class JvmScriptEvaluationConfigurationBuilder : PropertiesCollection.Builde
|
||||
/**
|
||||
* The base classloader to use for script classes loading
|
||||
*/
|
||||
val JvmScriptEvaluationConfigurationKeys.baseClassLoader by PropertiesCollection.key<ClassLoader?> {
|
||||
get(ScriptEvaluationConfiguration.hostConfiguration)?.get(ScriptingHostConfiguration.jvm.baseClassLoader)
|
||||
?: Thread.currentThread().contextClassLoader
|
||||
}
|
||||
val JvmScriptEvaluationConfigurationKeys.baseClassLoader by PropertiesCollection.key<ClassLoader?>(
|
||||
{
|
||||
get(ScriptEvaluationConfiguration.hostConfiguration)?.get(ScriptingHostConfiguration.jvm.baseClassLoader)
|
||||
?: Thread.currentThread().contextClassLoader
|
||||
},
|
||||
isTransient = true
|
||||
)
|
||||
|
||||
/**
|
||||
* Load script dependencies before evaluation, true by default
|
||||
@@ -38,8 +44,10 @@ val JvmScriptEvaluationConfigurationKeys.loadDependencies by PropertiesCollectio
|
||||
*/
|
||||
val JvmScriptEvaluationConfigurationKeys.mainArguments by PropertiesCollection.key<Array<out String>>()
|
||||
|
||||
internal val JvmScriptEvaluationConfigurationKeys.actualClassLoader by PropertiesCollection.key<ClassLoader?>()
|
||||
internal val JvmScriptEvaluationConfigurationKeys.actualClassLoader by PropertiesCollection.key<ClassLoader?>(isTransient = true)
|
||||
|
||||
internal val JvmScriptEvaluationConfigurationKeys.scriptsInstancesSharingMap by PropertiesCollection.key<MutableMap<KClass<*>, EvaluationResult>>()
|
||||
internal val JvmScriptEvaluationConfigurationKeys.scriptsInstancesSharingMap by PropertiesCollection.key<MutableMap<KClass<*>, EvaluationResult>>(
|
||||
isTransient = true
|
||||
)
|
||||
|
||||
val ScriptEvaluationConfigurationKeys.jvm get() = JvmScriptEvaluationConfigurationBuilder()
|
||||
|
||||
+10
-6
@@ -9,7 +9,8 @@ import java.io.File
|
||||
import java.io.Serializable
|
||||
import java.net.URLClassLoader
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.script.experimental.api.*
|
||||
import kotlin.script.experimental.api.KotlinType
|
||||
import kotlin.script.experimental.api.ScriptDependency
|
||||
import kotlin.script.experimental.host.*
|
||||
import kotlin.script.experimental.jvm.impl.toClassPathOrEmpty
|
||||
import kotlin.script.experimental.util.PropertiesCollection
|
||||
@@ -26,11 +27,14 @@ val JvmScriptingHostConfigurationKeys.javaHome by PropertiesCollection.key<File>
|
||||
|
||||
val JvmScriptingHostConfigurationKeys.jdkHome by PropertiesCollection.key<File>()
|
||||
|
||||
val JvmScriptingHostConfigurationKeys.baseClassLoader by PropertiesCollection.key<ClassLoader> {
|
||||
get(ScriptingHostConfiguration.configurationDependencies)?.let {
|
||||
URLClassLoader(it.toClassPathOrEmpty().map { f -> f.toURI().toURL() }.toTypedArray())
|
||||
}
|
||||
}
|
||||
val JvmScriptingHostConfigurationKeys.baseClassLoader by PropertiesCollection.key<ClassLoader>(
|
||||
{
|
||||
get(ScriptingHostConfiguration.configurationDependencies)?.let {
|
||||
URLClassLoader(it.toClassPathOrEmpty().map { f -> f.toURI().toURL() }.toTypedArray())
|
||||
}
|
||||
},
|
||||
isTransient = true
|
||||
)
|
||||
|
||||
@Suppress("unused")
|
||||
val ScriptingHostConfigurationKeys.jvm
|
||||
|
||||
Reference in New Issue
Block a user