Skip to content

Commit 99f68f9

Browse files
keithschulzectrueden
authored andcommitted
Update to Scala 2.12.0
This updates to Scala 2.12.0. Script engine support has been refactored since the last scripting-scala release. See this commit: scala/scala@3cddeaa No longer requires binding of attribute names with type (e.g. name: Type) to get typed values. Thus we no longer need to override ScriptEngine methods. Signed-off-by: Curtis Rueden <ctrueden@wisc.edu>
1 parent 8aa1815 commit 99f68f9

File tree

4 files changed

+30
-103
lines changed

4 files changed

+30
-103
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464

6565
<properties>
6666
<scijava.jvm.version>1.8</scijava.jvm.version>
67-
<scala.version>2.12.0-M4</scala.version>
67+
<scala.version>2.12.0</scala.version>
6868
</properties>
6969

7070
<dependencies>

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

Lines changed: 0 additions & 98 deletions
This file was deleted.

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

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,21 @@
3030

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

33+
import java.net.URLClassLoader;
34+
import java.util.Arrays;
35+
import java.util.stream.Collectors;
36+
3337
import javax.script.ScriptEngine;
3438

3539
import org.scijava.plugin.Plugin;
3640
import org.scijava.script.AdaptedScriptLanguage;
3741
import org.scijava.script.ScriptLanguage;
3842

43+
import scala.tools.nsc.ConsoleWriter;
44+
import scala.tools.nsc.NewLinePrintWriter;
45+
import scala.tools.nsc.Settings;
46+
import scala.tools.nsc.interpreter.Scripted;
47+
3948
/**
4049
* An adapter of the Scala interpreter to the SciJava scripting interface.
4150
*
@@ -52,6 +61,20 @@ public ScalaScriptLanguage() {
5261

5362
@Override
5463
public ScriptEngine getScriptEngine() {
55-
return new ScalaScriptEngine(super.getScriptEngine());
64+
final Settings settings = new Settings();
65+
settings.classpath().value_$eq(getClasspath());
66+
67+
return Scripted.apply(new Scripted.Factory(), settings,
68+
new NewLinePrintWriter(new ConsoleWriter(), true));
69+
}
70+
71+
/**
72+
* Uses ClassLoader to generate a string of the current classpath separated by
73+
* OS specific separator.
74+
*/
75+
private static String getClasspath() {
76+
return Arrays.stream(((URLClassLoader) ClassLoader.getSystemClassLoader())
77+
.getURLs()).map(url -> url.getPath()).collect(Collectors.joining(System
78+
.getProperty("path.separator")));
5679
}
5780
}

src/test/java/org/scijava/plugins/scripting/scala/ScalaTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import java.io.StringWriter;
3636

3737
import javax.script.ScriptEngine;
38+
import javax.script.SimpleScriptContext;
3839

3940
import org.junit.Test;
4041
import org.scijava.Context;
@@ -57,11 +58,12 @@ public void testBasic() throws Exception {
5758
scriptService.getLanguageByExtension("scala");
5859
final ScriptEngine engine = language.getScriptEngine();
5960

61+
final SimpleScriptContext ssc = new SimpleScriptContext();
6062
final StringWriter writer = new StringWriter();
61-
engine.put("writer", writer);
63+
ssc.setWriter(writer);
6264

63-
final String script = "writer.write(\"3\");";
64-
engine.eval(script);
65+
final String script = "print(\"3\");";
66+
engine.eval(script, ssc);
6567
assertEquals("3", writer.toString());
6668
}
6769
}

0 commit comments

Comments
 (0)