package jsr223.nativeshell.executable;
import jsr223.nativeshell.NativeShellRunner;
import jsr223.nativeshell.NativeShellScriptEngine;
import jsr223.nativeshell.cmd.Cmd;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static java.util.Arrays.asList;
public class ExecutableScriptEngineFactory implements ScriptEngineFactory {
private static final String NAME = "exec";
private static final String ENGINE = "Executable launcher";
private static final String ENGINE_VERSION = "1.0";
private static final String LANGUAGE = "exec";
private static final String LANGUAGE_VERSION = "1.0";
private static final Map<String, Object> parameters = new HashMap<String, Object>();
static {
parameters.put(ScriptEngine.NAME, NAME);
parameters.put(ScriptEngine.ENGINE, ENGINE);
parameters.put(ScriptEngine.ENGINE_VERSION, ENGINE_VERSION);
parameters.put(ScriptEngine.LANGUAGE, LANGUAGE);
parameters.put(ScriptEngine.LANGUAGE_VERSION, LANGUAGE_VERSION);
}
@Override
public String getEngineName() {
return NAME;
}
@Override
public String getEngineVersion() {
return ENGINE_VERSION;
}
@Override
public List<String> getExtensions() {
return asList("bat");
}
@Override
public List<String> getMimeTypes() {
return asList("application/x-exe");
}
@Override
public List<String> getNames() {
return asList("exec", "native", "cli", "commandline");
}
@Override
public String getLanguageName() {
return LANGUAGE;
}
@Override
public String getLanguageVersion() {
return LANGUAGE_VERSION;
}
@Override
public Object getParameter(String key) {
return parameters.get(key);
}
@Override
public String getMethodCallSyntax(String obj, String m, String... args) {
String methodCall = m + " ";
for (String arg : args) {
methodCall += arg + " ";
}
return methodCall;
}
@Override
public String getOutputStatement(String toDisplay) {
return toDisplay;
}
@Override
public String getProgram(String... statements) {
return statements[0];
}
@Override
public ScriptEngine getScriptEngine() {
return new ExecutableScriptEngine();
}
}