Skip to content

Commit e852907

Browse files
committed
Try instantiating engine directly
1 parent 29c1941 commit e852907

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ Wisconsin-Madison.</license.copyrightOwners>
124124
<artifactId>kotlin-scripting-jsr223</artifactId>
125125
<version>${kotlin.version}</version>
126126
</dependency>
127+
<dependency>
128+
<groupId>org.jetbrains.kotlin</groupId>
129+
<artifactId>kotlin-script-util</artifactId>
130+
<version>${kotlin.version}</version>
131+
</dependency>
127132

128133
<!-- Test dependencies -->
129134
<dependency>

src/main/kotlin/org/scijava/plugins/scripting/kotlin/KotlinScriptLanguage.kt

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,22 @@
2929
*/
3030
package org.scijava.plugins.scripting.kotlin
3131

32-
import org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineFactoryBase
32+
import org.jetbrains.kotlin.cli.common.repl.*
33+
import org.jetbrains.kotlin.com.intellij.openapi.util.Disposer
34+
import org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmDaemonCompileScriptEngine
35+
import org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmLocalScriptEngine
36+
import org.jetbrains.kotlin.script.jsr223.KotlinStandardJsr223ScriptTemplate
3337
import org.scijava.plugin.Plugin
3438
import org.scijava.script.AdaptedScriptLanguage
3539
import org.scijava.script.ScriptLanguage
3640
import java.io.Reader
41+
import java.lang.Exception
42+
import java.util.concurrent.atomic.AtomicInteger
43+
import java.util.concurrent.locks.ReentrantReadWriteLock
3744
import javax.script.*
45+
import kotlin.script.experimental.jvm.util.KotlinJars
46+
import kotlin.script.experimental.jvm.util.scriptCompilationClasspathFromContext
47+
import kotlin.system.exitProcess
3848

3949
/**
4050
* A SciJava [ScriptLanguage] for Kotlin.
@@ -53,7 +63,22 @@ class KotlinScriptLanguage : AdaptedScriptLanguage(Factory()) {
5363

5464
class Factory : KotlinJsr223JvmScriptEngineFactoryBase() {
5565
override fun getScriptEngine(): ScriptEngine {
56-
return SynchronizedScriptEngine(ScriptEngineManager().getEngineByExtension("kts"))
66+
return SynchronizedScriptEngine(
67+
// KotlinJsr223JvmDaemonCompileScriptEngine(
68+
// this,
69+
// KotlinJars.compilerWithScriptingClasspath,
70+
// scriptCompilationClasspathFromContext("kotlin-script-util.jar", wholeClasspath = true),
71+
// KotlinStandardJsr223ScriptTemplate::class.qualifiedName!!,
72+
// { ctx, types -> ScriptArgsWithTypes(arrayOf(ctx.getBindings(ScriptContext.ENGINE_SCOPE)), types ?: emptyArray()) },
73+
// arrayOf(Bindings::class)
74+
// )
75+
KotlinJsr223JvmLocalScriptEngine(
76+
this,
77+
scriptCompilationClasspathFromContext("kotlin-script-util.jar", wholeClasspath = true),
78+
KotlinStandardJsr223ScriptTemplate::class.qualifiedName!!,
79+
{ ctx, types -> ScriptArgsWithTypes(arrayOf(ctx.getBindings(ScriptContext.ENGINE_SCOPE)), types ?: emptyArray()) },
80+
arrayOf(Bindings::class))
81+
)
5782
}
5883
}
5984

0 commit comments

Comments
 (0)