Skip to content

Commit fb65228

Browse files
committed
Use JRuby's built-in JSR-223 implementation
We had our own, but it is no longer necessary, because JRuby now provides its own, which will assuredly be better maintained than ours. This avoids and fixes many problems with JRuby scripting support.
1 parent b96d319 commit fb65228

File tree

4 files changed

+9
-294
lines changed

4 files changed

+9
-294
lines changed

src/main/java/org/scijava/plugins/scripting/jruby/JRubyBindings.java

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

src/main/java/org/scijava/plugins/scripting/jruby/JRubyScriptEngine.java

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

src/main/java/org/scijava/plugins/scripting/jruby/JRubyScriptLanguage.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
/**
4141
* An adapter of the JRuby interpreter to the SciJava scripting interface.
4242
*
43-
* @author Johannes Schindelin
43+
* @author Curtis Rueden
4444
* @see ScriptEngine
4545
*/
4646
@Plugin(type = ScriptLanguage.class, name = "Ruby")
@@ -50,10 +50,4 @@ public JRubyScriptLanguage() {
5050
super("jruby");
5151
}
5252

53-
@Override
54-
public ScriptEngine getScriptEngine() {
55-
// TODO: Consider adapting the wrapped ScriptEngineFactory's ScriptEngine.
56-
return new JRubyScriptEngine();
57-
}
58-
5953
}

src/test/java/org/scijava/plugins/scripting/jruby/JRubyTest.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343

4444
import org.junit.Test;
4545
import org.scijava.Context;
46-
import org.scijava.plugins.scripting.jruby.JRubyScriptEngine;
4746
import org.scijava.script.ScriptLanguage;
4847
import org.scijava.script.ScriptModule;
4948
import org.scijava.script.ScriptService;
@@ -63,10 +62,8 @@ public void testBasic() throws InterruptedException, ExecutionException,
6362
final ScriptService scriptService = context.getService(ScriptService.class);
6463
final String script = "$x = 1 + 2;";
6564
final ScriptModule m = scriptService.run("add.rb", script, true).get();
66-
final ScriptEngine engine = (ScriptEngine) m.getReturnValue();
67-
final Object result = engine.get("$x");
68-
// NB: Result is of type org.jruby.RubyFixnum.
69-
assertEquals("3", result.toString());
65+
final Object result = m.getReturnValue();
66+
assertEquals(3L, result);
7067
}
7168

7269
@Test
@@ -76,14 +73,15 @@ public void testLocals() throws ScriptException {
7673

7774
final ScriptLanguage language = scriptService.getLanguageByExtension("rb");
7875
final ScriptEngine engine = language.getScriptEngine();
79-
assertEquals(JRubyScriptEngine.class, engine.getClass());
80-
engine.put("$hello", 17);
81-
assertEquals("17", engine.eval("$hello").toString());
82-
assertEquals("17", engine.get("$hello").toString());
76+
final String engineClassName = engine.getClass().getName();
77+
assertEquals("org.jruby.embed.jsr223.JRubyEngine", engineClassName);
78+
engine.put("hello", 17);
79+
assertEquals("17", engine.eval("hello").toString());
80+
assertEquals("17", engine.get("hello").toString());
8381

8482
final Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
8583
bindings.clear();
86-
assertEquals("", engine.get("$hello").toString());
84+
assertEquals("", engine.get("hello").toString());
8785
}
8886

8987
// FIXME: This test currently fails due to input injection failure.

0 commit comments

Comments
 (0)