Skip to content

Commit 2862689

Browse files
committed
Merge branch 'scala2.12-fixjavacp'
Closes #3. Many thanks to Keith Schulze for his work on this!
2 parents 8aa1815 + c109c32 commit 2862689

File tree

4 files changed

+43
-103
lines changed

4 files changed

+43
-103
lines changed

pom.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@
4545
<roles><role>founder</role></roles>
4646
<properties><id>dscho</id></properties>
4747
</contributor>
48+
<contributor>
49+
<name>Keith Schulze</name>
50+
<properties><id>keithschulze</id></properties>
51+
</contributor>
4852
</contributors>
4953

5054
<scm>
@@ -64,7 +68,7 @@
6468

6569
<properties>
6670
<scijava.jvm.version>1.8</scijava.jvm.version>
67-
<scala.version>2.12.0-M4</scala.version>
71+
<scala.version>2.12.0</scala.version>
6872
</properties>
6973

7074
<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: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,28 +30,60 @@
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

39+
import org.scijava.log.LogService;
40+
import org.scijava.plugin.Parameter;
3541
import org.scijava.plugin.Plugin;
3642
import org.scijava.script.AdaptedScriptLanguage;
3743
import org.scijava.script.ScriptLanguage;
3844

45+
import scala.tools.nsc.ConsoleWriter;
46+
import scala.tools.nsc.NewLinePrintWriter;
47+
import scala.tools.nsc.Settings;
48+
import scala.tools.nsc.interpreter.Scripted;
49+
3950
/**
4051
* An adapter of the Scala interpreter to the SciJava scripting interface.
4152
*
4253
* @author Curtis Rueden
54+
* @author Keith Schulze
4355
* @author Johannes Schindelin
4456
* @see ScriptEngine
4557
*/
4658
@Plugin(type = ScriptLanguage.class, name = "Scala")
4759
public class ScalaScriptLanguage extends AdaptedScriptLanguage {
4860

61+
@Parameter
62+
private LogService log;
63+
4964
public ScalaScriptLanguage() {
5065
super("scala");
5166
}
5267

5368
@Override
5469
public ScriptEngine getScriptEngine() {
55-
return new ScalaScriptEngine(super.getScriptEngine());
70+
final Settings settings = new Settings();
71+
settings.classpath().value_$eq(getClasspath());
72+
73+
return Scripted.apply(new Scripted.Factory(), settings,
74+
new NewLinePrintWriter(new ConsoleWriter(), true));
75+
}
76+
77+
/** Retrieves the current classpath as a string. */
78+
private String getClasspath() {
79+
final ClassLoader cl = ClassLoader.getSystemClassLoader();
80+
if (!(cl instanceof URLClassLoader)) {
81+
log.warn("Cannot retrieve classpath from class loader of type '" +
82+
cl.getClass().getName() + "'");
83+
return System.getProperty("java.class.path");
84+
}
85+
return Arrays.stream(((URLClassLoader) cl).getURLs()).map(//
86+
url -> url.getPath() //
87+
).collect(Collectors.joining(System.getProperty("path.separator")));
5688
}
5789
}

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)