package no.hal.scxml.emf.javascript;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.js4emf.ecore.JavascriptSupport;
import org.eclipse.emf.js4emf.ecore.JavascriptSupportFactory;
import no.hal.scxml.javascript.JavascriptContext;
public class EmfJavascriptContext extends JavascriptContext {
private JavascriptSupport javascriptSupport;
public EmfJavascriptContext(JavascriptContext parentScope, JavascriptSupport javascriptSupport) {
super(parentScope);
}
protected Object wrap(Object value) {
JavascriptSupport javascriptSupport = this.javascriptSupport;
if (javascriptSupport == null) {
if (value instanceof EObject) {
javascriptSupport = JavascriptSupportFactory.getInstance().getJavascriptSupport((EObject) value);
} else if (value instanceof Resource) {
javascriptSupport = JavascriptSupportFactory.getInstance().getJavascriptSupport((Resource) value);
} else if (value instanceof ResourceSet) {
javascriptSupport = JavascriptSupportFactory.getInstance().getJavascriptSupport((ResourceSet) value);
}
}
return (javascriptSupport != null ? javascriptSupport.getJsObject(value) : super.wrap(value));
}
}