package com.googlecode.aviator.script; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; import com.googlecode.aviator.AviatorEvaluator; /** * * @author libinsong1204@gmail.com * @author dennis * @date 2011-1-18 上午11:03:34 * @version */ public class AviatorScriptEngineFactory implements ScriptEngineFactory { private static final List<String> extensions = Collections.unmodifiableList(Arrays.asList(new String[] {})); private static final List<String> mimeTypes = Collections.unmodifiableList(Arrays.asList(new String[] { "text/aviator" })); private static final List<String> names = Collections.unmodifiableList(Arrays.asList(new String[] { "Aviator", "aviator" })); private static final Map<String, String> parameterMap = new HashMap<String, String>(); static { parameterMap.put(ScriptEngine.ENGINE, "Aviator"); parameterMap.put(ScriptEngine.ENGINE_VERSION, AviatorEvaluator.VERSION); parameterMap.put(ScriptEngine.LANGUAGE, "A high performance expression evaluator for java"); parameterMap.put(ScriptEngine.LANGUAGE_VERSION, AviatorEvaluator.VERSION); } public String getEngineName() { return parameterMap.get(ScriptEngine.ENGINE); } public String getEngineVersion() { return parameterMap.get(ScriptEngine.ENGINE_VERSION); } public List<String> getExtensions() { return extensions; } public String getLanguageName() { return parameterMap.get(ScriptEngine.LANGUAGE); } public String getLanguageVersion() { return parameterMap.get(ScriptEngine.LANGUAGE_VERSION); } public String getMethodCallSyntax(String obj, String m, String... args) { StringBuilder sb = new StringBuilder(m); sb.append("(").append(obj); if (args != null) { for (String s : args) { sb.append(",").append(s); } } sb.append(")"); return sb.toString(); } public List<String> getMimeTypes() { return mimeTypes; } public List<String> getNames() { return names; } public String getOutputStatement(String toDisplay) { return "print(+" + toDisplay + ")"; } public Object getParameter(String key) { return parameterMap.get(key); } public String getProgram(String... statements) { return null; } public ScriptEngine getScriptEngine() { return new AviatorScriptEngine(this); } }