Skip to content

Commit 894f014

Browse files
committed
ScriptLanguage: move default method impls to iface
1 parent 2497340 commit 894f014

File tree

2 files changed

+76
-85
lines changed

2 files changed

+76
-85
lines changed

src/main/java/org/scijava/script/AbstractScriptLanguage.java

Lines changed: 0 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,10 @@
3131

3232
package org.scijava.script;
3333

34-
import java.util.Collections;
35-
import java.util.List;
36-
37-
import javax.script.ScriptEngine;
3834
import javax.script.ScriptEngineFactory;
3935

4036
import org.scijava.plugin.AbstractRichPlugin;
4137
import org.scijava.plugin.PluginInfo;
42-
import org.scijava.util.VersionUtils;
4338

4439
/**
4540
* Abstract superclass for {@link ScriptLanguage} implementations.
@@ -61,45 +56,8 @@ public String toString() {
6156
return getLanguageName();
6257
}
6358

64-
// -- ScriptLanguage methods --
65-
66-
@Override
67-
public boolean isCompiledLanguage() {
68-
return false;
69-
}
70-
71-
@Override
72-
public Object decode(final Object object) {
73-
// NB: No decoding by default.
74-
return object;
75-
}
76-
77-
// -- (Possibly) unsupported operations --
78-
79-
@Override
80-
public String getMethodCallSyntax(final String obj, final String m,
81-
final String... args)
82-
{
83-
throw new UnsupportedOperationException();
84-
}
85-
86-
@Override
87-
public String getOutputStatement(final String toDisplay) {
88-
throw new UnsupportedOperationException();
89-
}
90-
91-
@Override
92-
public String getProgram(final String... statements) {
93-
throw new UnsupportedOperationException();
94-
}
95-
9659
// -- Default implementations --
9760

98-
@Override
99-
public List<String> getExtensions() {
100-
return Collections.<String> emptyList();
101-
}
102-
10361
@Override
10462
public String getEngineName() {
10563
return inferNameFromClassName();
@@ -113,47 +71,6 @@ public String getLanguageName() {
11371
return name != null && !name.isEmpty() ? name : inferNameFromClassName();
11472
}
11573

116-
@Override
117-
public List<String> getNames() {
118-
return Collections.<String> singletonList(getEngineName());
119-
}
120-
121-
@Override
122-
public String getLanguageVersion() {
123-
return VersionUtils.getVersion(getClass());
124-
}
125-
126-
@Override
127-
public List<String> getMimeTypes() {
128-
return Collections.<String> emptyList();
129-
}
130-
131-
@Override
132-
public Object getParameter(final String key) {
133-
if (key.equals(ScriptEngine.ENGINE)) {
134-
return getEngineName();
135-
}
136-
else if (key.equals(ScriptEngine.ENGINE_VERSION)) {
137-
return getEngineVersion();
138-
}
139-
else if (key.equals(ScriptEngine.NAME)) {
140-
final List<String> list = getNames();
141-
return list.size() > 0 ? list.get(0) : null;
142-
}
143-
else if (key.equals(ScriptEngine.LANGUAGE)) {
144-
return getLanguageName();
145-
}
146-
else if (key.equals(ScriptEngine.LANGUAGE_VERSION)) {
147-
return getLanguageVersion();
148-
}
149-
return null;
150-
}
151-
152-
@Override
153-
public String getEngineVersion() {
154-
return "0.0";
155-
}
156-
15774
// -- Helper methods --
15875

15976
private String inferNameFromClassName() {

src/main/java/org/scijava/script/ScriptLanguage.java

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,17 @@
3131

3232
package org.scijava.script;
3333

34+
import java.util.Collections;
35+
import java.util.List;
36+
3437
import javax.script.ScriptEngine;
3538
import javax.script.ScriptEngineFactory;
3639

3740
import org.scijava.module.Module;
3841
import org.scijava.plugin.Plugin;
3942
import org.scijava.plugin.RichPlugin;
4043
import org.scijava.plugin.SingletonPlugin;
44+
import org.scijava.util.VersionUtils;
4145

4246
/**
4347
* The base interface for scripting language adapters.
@@ -67,14 +71,84 @@ public interface ScriptLanguage extends ScriptEngineFactory, RichPlugin,
6771
{
6872

6973
/** True iff this language requires a compilation step. */
70-
boolean isCompiledLanguage();
74+
default boolean isCompiledLanguage() {
75+
return false;
76+
}
7177

7278
/**
7379
* Performs any necessary conversion of an encoded object retrieved from the
7480
* language's script engine.
7581
*
7682
* @see ScriptEngine#get(String)
7783
*/
78-
Object decode(Object object);
84+
default Object decode(final Object object) {
85+
// NB: No decoding by default.
86+
return object;
87+
}
88+
89+
// -- ScriptEngineFactory methods --
90+
91+
@Override
92+
default String getMethodCallSyntax(final String obj, final String m,
93+
final String... args)
94+
{
95+
throw new UnsupportedOperationException();
96+
}
97+
98+
@Override
99+
default String getOutputStatement(final String toDisplay) {
100+
throw new UnsupportedOperationException();
101+
}
102+
103+
@Override
104+
default String getProgram(final String... statements) {
105+
throw new UnsupportedOperationException();
106+
}
107+
108+
@Override
109+
default List<String> getExtensions() {
110+
return Collections.<String> emptyList();
111+
}
112+
113+
@Override
114+
default List<String> getNames() {
115+
return Collections.<String> singletonList(getEngineName());
116+
}
117+
118+
@Override
119+
default String getLanguageVersion() {
120+
return VersionUtils.getVersion(getClass());
121+
}
122+
123+
@Override
124+
default List<String> getMimeTypes() {
125+
return Collections.<String> emptyList();
126+
}
127+
128+
@Override
129+
default Object getParameter(final String key) {
130+
if (key.equals(ScriptEngine.ENGINE)) {
131+
return getEngineName();
132+
}
133+
else if (key.equals(ScriptEngine.ENGINE_VERSION)) {
134+
return getEngineVersion();
135+
}
136+
else if (key.equals(ScriptEngine.NAME)) {
137+
final List<String> list = getNames();
138+
return list.size() > 0 ? list.get(0) : null;
139+
}
140+
else if (key.equals(ScriptEngine.LANGUAGE)) {
141+
return getLanguageName();
142+
}
143+
else if (key.equals(ScriptEngine.LANGUAGE_VERSION)) {
144+
return getLanguageVersion();
145+
}
146+
return null;
147+
}
148+
149+
@Override
150+
default String getEngineVersion() {
151+
return "0.0";
152+
}
79153

80154
}

0 commit comments

Comments
 (0)