Skip to content

Commit af74e45

Browse files
ctruedenhinerm
andcommitted
Use the provided BshScriptEngine
We tried this once before (f17c2fd), but it didn't take due to a bug in the engine surrounding nulls. But this version of BeanShell, 2.1.0, no longer suffers from that issue. Thanks to @subes for bringing it to attention. Closes #2. Co-authored-by: Mark Hiner <hinerm@gmail.com>
1 parent 4cb2224 commit af74e45

5 files changed

Lines changed: 18 additions & 308 deletions

File tree

‎pom.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</parent>
1111

1212
<artifactId>scripting-beanshell</artifactId>
13-
<version>0.3.5-SNAPSHOT</version>
13+
<version>0.4.0-SNAPSHOT</version>
1414

1515
<name>SciJava Scripting: BeanShell</name>
1616
<description>JSR-223-compliant BeanShell scripting language plugin.</description>

‎src/main/java/org/scijava/plugins/scripting/beanshell/BeanshellBindings.java‎

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

‎src/main/java/org/scijava/plugins/scripting/beanshell/BeanshellScriptEngine.java‎

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

‎src/main/java/org/scijava/plugins/scripting/beanshell/BeanshellScriptLanguage.java‎

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,34 +31,27 @@
3131

3232
package org.scijava.plugins.scripting.beanshell;
3333

34-
import bsh.Primitive;
35-
36-
import java.util.Arrays;
37-
import java.util.List;
38-
3934
import javax.script.ScriptEngine;
4035

4136
import org.scijava.plugin.Plugin;
42-
import org.scijava.script.AbstractScriptLanguage;
37+
import org.scijava.script.AdaptedScriptLanguage;
4338
import org.scijava.script.ScriptLanguage;
4439

40+
import bsh.BshScriptEngineFactory;
41+
import bsh.Primitive;
42+
4543
/**
46-
* An adapter of the BeanShell interpreter to the SciJava scripting interface.
44+
* An adapter of the {@link BshScriptEngineFactory} to the SciJava scripting interface.
4745
*
46+
* @author Mark Hiner
4847
* @author Johannes Schindelin
4948
* @see ScriptEngine
5049
*/
5150
@Plugin(type = ScriptLanguage.class, name = "BeanShell")
52-
public class BeanshellScriptLanguage extends AbstractScriptLanguage {
51+
public class BeanshellScriptLanguage extends AdaptedScriptLanguage {
5352

54-
@Override
55-
public List<String> getExtensions() {
56-
return Arrays.asList("bsh", "bs");
57-
}
58-
59-
@Override
60-
public ScriptEngine getScriptEngine() {
61-
return new BeanshellScriptEngine();
53+
public BeanshellScriptLanguage() {
54+
super(new BshScriptEngineFactory());
6255
}
6356

6457
@Override

‎src/test/java/org/scijava/plugins/scripting/beanshell/BeanshellTest.java‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@
4848
import org.scijava.script.ScriptModule;
4949
import org.scijava.script.ScriptService;
5050

51+
import bsh.BshScriptEngine;
52+
5153
/**
5254
* Unit tests for the Beanshell support.
5355
*
@@ -80,14 +82,14 @@ public void testLocals() throws ScriptException {
8082

8183
final ScriptLanguage language = scriptService.getLanguageByExtension("bsh");
8284
final ScriptEngine engine = language.getScriptEngine();
83-
assertEquals(BeanshellScriptEngine.class, engine.getClass());
85+
assertEquals(BshScriptEngine.class, engine.getClass());
8486
engine.put("hello", 17);
8587
assertEquals("17", engine.eval("hello").toString());
8688
assertEquals("17", engine.get("hello").toString());
8789

8890
final Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
8991
bindings.clear();
90-
assertEquals("void", engine.get("hello").toString());
92+
assertEquals(null, engine.get("hello"));
9193
}
9294

9395
@Test
@@ -98,14 +100,14 @@ public void testParameters() throws InterruptedException, ExecutionException,
98100
final ScriptService scriptService = context.getService(ScriptService.class);
99101

100102
final String script = "" + //
101-
"// @ScriptService ss\n" + //
102-
"// @OUTPUT String language\n" + //
103-
"language = ss.getLanguageByName(\"Beanshell\").getLanguageName();\n";
103+
"#@ ScriptService ss\n" + //
104+
"#@output String language\n" + //
105+
"language = ss.getLanguageByName(\"BeanShell\").getLanguageName();\n";
104106
final ScriptModule m = scriptService.run("hello.bsh", script, true).get();
105107

106108
final Object actual = m.getOutput("language");
107109
final String expected =
108-
scriptService.getLanguageByName("Beanshell").getLanguageName();
110+
scriptService.getLanguageByName("BeanShell").getLanguageName();
109111
assertEquals(expected, actual);
110112

111113
final Object result = m.getReturnValue();

0 commit comments

Comments
 (0)