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(); } }