欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Boilerplate: 脚本 API Facade,boilerplatefacade,/** * This d

来源: javaer 分享于  点击 27205 次 点评:12

Boilerplate: 脚本 API Facade,boilerplatefacade,/** * This d


/** * This default implementation tries to create and use a JavaScript script(ing) engine. * * @author Octavian Theodor NITA * @version 1.0, Feb 27, 2012 */public class ScriptEngineFacade {    private static final Logger logger = Logger.getLogger(ScriptEngineFacade.class);    private final ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("JavaScript");    public void put(String name, Object value) {        scriptEngine.put(name, value);    }    public void eval(String scriptName) throws IOException, ScriptException {        InputStream script = getClass().getClassLoader().getResourceAsStream(scriptName);        if (script == null) { // cannot find the script in the classpath... try in the file system            script = new FileInputStream(scriptName);        }        try {            scriptEngine.eval(new InputStreamReader(script));        } finally {            try {                script.close();            } catch (IOException e) {                logger.warn("cannot close stream for script " + scriptName + "; ignoring...", e);            }        }    }    public <T> T value(String expr, Class<T> klass) {        if (klass == null) {            throw new IllegalArgumentException("cannot cast the value of " + expr + " using a null class name");        }        if (expr == null) {            return null;        }        try {            return klass.cast(scriptEngine.eval(expr));        } catch (NullPointerException e) {            logger.error("cannot get the value of " + expr + ": a null or undefined reference was encountered", e);            return null;        } catch (ClassCastException e) {            logger.error("cannot get the value of " + expr + ": expected value type for is " + klass.getName(), e);            return null;        } catch (ScriptException e) {            logger.error("cannot get the value of " + expr + ": cannot evaluate expression", e);            return null;        }    }}
相关栏目:

用户点评