package org.zstack.core.groovy; import groovy.lang.Binding; import groovy.util.GroovyScriptEngine; import org.zstack.header.exception.CloudRuntimeException; import org.zstack.utils.path.PathUtil; import java.io.File; import java.util.Map; /** */ public class GroovyFacadeImpl implements GroovyFacade { @Override public void executeScriptByName(String scriptName, Map<Object, Object> context) { File script = PathUtil.findFileOnClassPath(scriptName, true); executeScriptByPath(script.getAbsolutePath(), context); } @Override public void executeScriptByPath(String scriptPath, Map<Object, Object> context) { try { String scriptName = PathUtil.fileName(scriptPath); String scriptDir = PathUtil.parentFolder(scriptPath); GroovyScriptEngine gse = new GroovyScriptEngine(scriptDir); Binding binding = new Binding(context); gse.run(scriptName, binding); } catch (Exception e) { throw new CloudRuntimeException(e); } } }