package org.springframework.scripting.js; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.scripting.ScriptCompilationException; import org.springframework.scripting.ScriptFactory; import org.springframework.scripting.ScriptSource; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import java.io.IOException; /** * @author Tomasz Nurkiewicz * @since 2010-08-24, 22:58:28 */ public class JavaScriptScriptFactory implements ScriptFactory { private String scriptSourceLocator; private Class[] scriptInterfaces; public JavaScriptScriptFactory(String scriptSourceLocator, Class[] scriptInterfaces) { this.scriptSourceLocator = scriptSourceLocator; this.scriptInterfaces = scriptInterfaces; } public String getScriptSourceLocator() { return scriptSourceLocator; } public Class[] getScriptInterfaces() { return scriptInterfaces; } public boolean requiresConfigInterface() { return true; } public Object getScriptedObject(ScriptSource scriptSource, Class[] actualInterfaces) throws IOException, ScriptCompilationException { try { return JavaScriptScriptUtils.createJavaScriptObject(scriptSource, actualInterfaces); } catch (ScriptException e) { throw new ScriptCompilationException(scriptSource, e); } } public Class getScriptedObjectType(ScriptSource scriptSource) throws IOException, ScriptCompilationException { return null; } public boolean requiresScriptedObjectRefresh(ScriptSource scriptSource) { return scriptSource.isModified(); } }