package org.jopendocument.dom.template.engine;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
public class RhinoTemplateScriptEngine extends DataModel {
private Context cx;
private Scriptable scope;
public RhinoTemplateScriptEngine() {
cx = ContextFactory.getGlobal().enterContext();
scope = cx.initStandardObjects();
}
@Override
protected Object _eval(String script) {
return Context.jsToJava(cx.evaluateString(scope, script, "", 1, null), Object.class);
}
@Override
public void put(String key, Object value) {
Object jsObj = Context.javaToJS(value, scope);
ScriptableObject.putProperty(scope, key, jsObj);
}
@Override
public DataModel copy() {
throw new UnsupportedOperationException();
}
}