From 3629583942b5ea5f727afdee04cbdad344f34c2e Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Mon, 23 Jul 2018 10:52:37 +0200 Subject: [PATCH] Add overridable method "setup" for defining properties --- .../kotlin/script/examples/jvm/resolve/maven/scriptDef.kt | 2 +- .../common/src/kotlin/script/experimental/api/propertiesDsl.kt | 2 ++ .../script/experimental/definitions/definitionFromAnnotation.kt | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/examples/scripting/jvm-maven-deps/script/src/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/scriptDef.kt b/libraries/examples/scripting/jvm-maven-deps/script/src/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/scriptDef.kt index b08b49750a6..473756ab8ed 100644 --- a/libraries/examples/scripting/jvm-maven-deps/script/src/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/scriptDef.kt +++ b/libraries/examples/scripting/jvm-maven-deps/script/src/org/jetbrains/kotlin/script/examples/jvm/resolve/maven/scriptDef.kt @@ -25,7 +25,7 @@ abstract class MyScriptWithMavenDeps { } object MyScriptProperties : ScriptingProperties() { - init { + override fun setup() { include(jvmJavaHomeScriptingProperties) scriptDefinition { defaultImports() diff --git a/libraries/scripting/common/src/kotlin/script/experimental/api/propertiesDsl.kt b/libraries/scripting/common/src/kotlin/script/experimental/api/propertiesDsl.kt index 672b25ced1c..660f0fe2b3d 100644 --- a/libraries/scripting/common/src/kotlin/script/experimental/api/propertiesDsl.kt +++ b/libraries/scripting/common/src/kotlin/script/experimental/api/propertiesDsl.kt @@ -33,6 +33,8 @@ open class ScriptingProperties(body: ScriptingProperties.() -> Unit = {}) { body() } + open fun setup() {} + internal fun makePropertyBag(): ChainedPropertyBag = ChainedPropertyBag.createOptimized(parentPropertiesBag ?: parentPropertiesBuilder?.makePropertyBag(), data) diff --git a/libraries/scripting/common/src/kotlin/script/experimental/definitions/definitionFromAnnotation.kt b/libraries/scripting/common/src/kotlin/script/experimental/definitions/definitionFromAnnotation.kt index 98a52adb037..60b63db0428 100644 --- a/libraries/scripting/common/src/kotlin/script/experimental/definitions/definitionFromAnnotation.kt +++ b/libraries/scripting/common/src/kotlin/script/experimental/definitions/definitionFromAnnotation.kt @@ -61,7 +61,7 @@ fun createScriptDefinitionFromAnnotatedBaseClass( } fun scriptingPropsInstance(kclass: KClass): ScriptingProperties = try { - kclass.objectInstance ?: kclass.createInstance() + kclass.objectInstance ?: kclass.createInstance().also { it.setup() } } catch (e: Throwable) { throw IllegalArgumentException(ILLEGAL_CONFIG_ANN_ARG, e) }