Package org.one.stone.soup.core.javascript

Source Code of org.one.stone.soup.core.javascript.JavascriptEngine

package org.one.stone.soup.core.javascript;

import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

import com.sun.script.javascript.RhinoScriptEngine;

public class JavascriptEngine {

  private RhinoScriptEngine engine;
 
  public JavascriptEngine() {
    ScriptEngineManager factory = new ScriptEngineManager();
    engine = (RhinoScriptEngine)factory.getEngineByName("JavaScript");
  }
 
  public Object runScript(String script) throws ScriptException {
    return engine.eval(script);
  }
 
  public Object runScript(String script,String fileName) throws ScriptException {
    String currentFileName = (String) engine.get(ScriptEngine.FILENAME);
    try{
      engine.put(ScriptEngine.FILENAME,fileName);
      return engine.eval(script);
    } finally {
      engine.put(ScriptEngine.FILENAME,currentFileName);
    }
  }
 
  public void mount(String alias,Object api) {
    engine.put(alias, api);
  }
 
  public String[] getObjects() {
    Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
   
    return bindings.keySet().toArray(new String[]{});
  }
 
  public Object getObject(String key) {
    Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
   
    return bindings.get(key);
  }
 
  public String getObjectKey(Object object) {
    Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
    if( bindings.containsValue(object)==false ) {
      return null;
    }
    for(String key: bindings.keySet()) {
      if(bindings.get(key)==object) {
        return key;
      }
    }
    return null;
  }
}
TOP

Related Classes of org.one.stone.soup.core.javascript.JavascriptEngine

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.