Skip to content

Commit 32d4c5f

Browse files
committed
Fixed: Internal ServiceConfigurationError when Script Engine is created #8
1 parent 80d25ae commit 32d4c5f

File tree

2 files changed

+76
-16
lines changed

2 files changed

+76
-16
lines changed

src/main/java/org/scijava/plugins/scripting/scala/ScalaScriptLanguage.java

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
* %%
77
* Redistribution and use in source and binary forms, with or without
88
* modification, are permitted provided that the following conditions are met:
9-
*
9+
*
1010
* 1. Redistributions of source code must retain the above copyright notice,
1111
* this list of conditions and the following disclaimer.
1212
* 2. Redistributions in binary form must reproduce the above copyright notice,
1313
* this list of conditions and the following disclaimer in the documentation
1414
* and/or other materials provided with the distribution.
15-
*
15+
*
1616
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
1717
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1818
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -29,17 +29,17 @@
2929

3030
package org.scijava.plugins.scripting.scala;
3131

32-
import javax.script.ScriptEngine;
33-
3432
import org.scijava.log.LogService;
3533
import org.scijava.plugin.Parameter;
3634
import org.scijava.plugin.Plugin;
3735
import org.scijava.script.AdaptedScriptLanguage;
3836
import org.scijava.script.ScriptLanguage;
3937

38+
import javax.script.ScriptEngine;
39+
4040
/**
4141
* An adapter of the Scala interpreter to the SciJava scripting interface.
42-
*
42+
*
4343
* @author Curtis Rueden
4444
* @author Keith Schulze
4545
* @author Johannes Schindelin
@@ -49,16 +49,10 @@
4949
@Plugin(type = ScriptLanguage.class, name = "Scala")
5050
public class ScalaScriptLanguage extends AdaptedScriptLanguage {
5151

52-
@Parameter
53-
private LogService log;
54-
55-
public ScalaScriptLanguage() {
56-
super("scala");
57-
}
52+
@Parameter
53+
private LogService log;
5854

59-
@Override
60-
public ScriptEngine getScriptEngine() {
61-
final ScriptEngine eng = new dotty.tools.repl.ScriptEngine();
62-
return new ScalaAdaptedScriptEngine(eng);
63-
}
55+
public ScalaScriptLanguage() {
56+
super(new ScalaAdaptedScriptEngineFactory());
57+
}
6458
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/*
2+
* #%L
3+
* JSR-223-compliant Scala scripting language plugin.
4+
* %%
5+
* Copyright (C) 2013 - 2023 SciJava developers.
6+
* %%
7+
* Redistribution and use in source and binary forms, with or without
8+
* modification, are permitted provided that the following conditions are met:
9+
*
10+
* 1. Redistributions of source code must retain the above copyright notice,
11+
* this list of conditions and the following disclaimer.
12+
* 2. Redistributions in binary form must reproduce the above copyright notice,
13+
* this list of conditions and the following disclaimer in the documentation
14+
* and/or other materials provided with the distribution.
15+
*
16+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
20+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26+
* POSSIBILITY OF SUCH DAMAGE.
27+
* #L%
28+
*/
29+
30+
package org.scijava.plugins.scripting.scala
31+
32+
import org.scijava.plugins.scripting.scala.ScalaAdaptedScriptEngine
33+
34+
import java.util
35+
import javax.script.{ScriptEngine, ScriptEngineFactory}
36+
37+
/**
38+
* A factory for ScalaAdaptedScriptEngine.
39+
*
40+
* @author Jarek Sacha
41+
* @see ScriptEngineFactory
42+
*/
43+
class ScalaAdaptedScriptEngineFactory extends ScriptEngineFactory:
44+
45+
private val factory = new dotty.tools.repl.ScriptEngine.Factory
46+
47+
/**
48+
* Returns an instance of the `ScalaAdaptedScriptEngine`.
49+
* A new instance is returned.
50+
*
51+
* @return A new `ScalaAdaptedScriptEngine` instance.
52+
*/
53+
override def getScriptEngine = new ScalaAdaptedScriptEngine(factory.getScriptEngine)
54+
55+
override def getEngineName: String = factory.getEngineName
56+
override def getEngineVersion: String = factory.getEngineVersion
57+
override def getExtensions: util.List[String] = factory.getExtensions
58+
override def getLanguageName: String = factory.getLanguageName
59+
override def getLanguageVersion: String = factory.getLanguageVersion
60+
override def getMimeTypes: util.List[String] = factory.getMimeTypes
61+
override def getNames: util.List[String] = factory.getNames
62+
override def getOutputStatement(toDisplay: String): String = factory.getOutputStatement(toDisplay)
63+
override def getParameter(key: String): AnyRef = factory.getParameter(key)
64+
override def getMethodCallSyntax(obj: String, m: String, args: String*): String =
65+
factory.getMethodCallSyntax(obj, m, args*)
66+
override def getProgram(statements: String*): String = factory.getProgram(statements*)

0 commit comments

Comments
 (0)