use of groovy.lang.Script in project ratpack by ratpack.
the class RatpackDslScriptCapture method apply.
public RatpackDslClosures apply(Path file, String scriptContent) throws Exception {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
ScriptEngine<Script> scriptEngine = new ScriptEngine<>(classLoader, compileStatic, Script.class);
return RatpackDslClosures.capture(function, file, () -> {
Script script = scriptEngine.create(file.getFileName().toString(), file, scriptContent);
script.setBinding(new Binding(args));
script.run();
});
}
use of groovy.lang.Script in project gremlin by tinkerpop.
the class GremlinGroovyScriptEngine method eval.
Object eval(final Class scriptClass, final ScriptContext context) throws ScriptException {
this.checkClearCache();
context.setAttribute("context", context, ScriptContext.ENGINE_SCOPE);
java.io.Writer writer = context.getWriter();
context.setAttribute("out", writer instanceof PrintWriter ? writer : new PrintWriter(writer), ScriptContext.ENGINE_SCOPE);
Binding binding = new Binding() {
public Object getVariable(String name) {
synchronized (context) {
int scope = context.getAttributesScope(name);
if (scope != -1) {
return context.getAttribute(name, scope);
}
throw new MissingPropertyException(name, getClass());
}
}
public void setVariable(String name, Object value) {
synchronized (context) {
int scope = context.getAttributesScope(name);
if (scope == -1) {
scope = ScriptContext.ENGINE_SCOPE;
}
context.setAttribute(name, value, scope);
}
}
};
try {
Script scriptObject = InvokerHelper.createScript(scriptClass, binding);
Method[] methods = scriptClass.getMethods();
Map<String, MethodClosure> closures = new HashMap<String, MethodClosure>();
for (Method m : methods) {
String name = m.getName();
closures.put(name, new MethodClosure(scriptObject, name));
}
globalClosures.putAll(closures);
final MetaClass oldMetaClass = scriptObject.getMetaClass();
scriptObject.setMetaClass(new DelegatingMetaClass(oldMetaClass) {
public Object invokeMethod(Object object, String name, Object args) {
if (args == null) {
return invokeMethod(object, name, MetaClassHelper.EMPTY_ARRAY);
} else if (args instanceof Tuple) {
return invokeMethod(object, name, ((Tuple) args).toArray());
} else if (args instanceof Object[]) {
return invokeMethod(object, name, (Object[]) args);
} else {
return invokeMethod(object, name, new Object[] { args });
}
}
public Object invokeMethod(Object object, String name, Object[] args) {
try {
return super.invokeMethod(object, name, args);
} catch (MissingMethodException mme) {
return callGlobal(name, args, context);
}
}
public Object invokeStaticMethod(Object object, String name, Object[] args) {
try {
return super.invokeStaticMethod(object, name, args);
} catch (MissingMethodException mme) {
return callGlobal(name, args, context);
}
}
});
return scriptObject.run();
} catch (Exception e) {
throw new ScriptException(e);
}
}
use of groovy.lang.Script in project groovy by apache.
the class InvokerHelperTest method testCreateScriptWithNullClass.
public void testCreateScriptWithNullClass() {
Script script = InvokerHelper.createScript(null, new Binding(bindingVariables));
assertEquals(bindingVariables, script.getBinding().getVariables());
}
use of groovy.lang.Script in project groovy by apache.
the class GroovyTestSuite method loadTestSuite.
public void loadTestSuite() throws Exception {
String fileName = System.getProperty("test", file);
if (fileName == null) {
throw new RuntimeException("No filename given in the 'test' system property so cannot run a Groovy unit test");
}
System.out.println("Compiling: " + fileName);
Class type = compile(fileName);
String[] args = {};
if (!Test.class.isAssignableFrom(type) && Script.class.isAssignableFrom(type)) {
// let's treat the script as a Test
addTest(new ScriptTestAdapter(type, args));
} else {
addTestSuite(type);
}
}
use of groovy.lang.Script in project intellij-community by JetBrains.
the class GroovyScriptMacro method runIt.
private static Object runIt(Expression[] params, ExpressionContext context) {
try {
Result result = params[0].calculateResult(context);
if (result == null)
return result;
String text = result.toString();
GroovyShell shell = new GroovyShell();
File possibleFile = new File(text);
Script script = possibleFile.exists() ? shell.parse(possibleFile) : shell.parse(text);
Binding binding = new Binding();
for (int i = 1; i < params.length; ++i) {
Result paramResult = params[i].calculateResult(context);
Object value = null;
if (paramResult instanceof ListResult) {
value = ContainerUtil.map2List(((ListResult) paramResult).getComponents(), result1 -> result1.toString());
} else if (paramResult != null) {
value = paramResult.toString();
}
binding.setVariable("_" + i, value);
}
binding.setVariable("_editor", context.getEditor());
script.setBinding(binding);
Object o = script.run();
return o != null ? StringUtil.convertLineSeparators(o.toString()) : null;
} catch (Exception e) {
return new TextResult(StringUtil.convertLineSeparators(e.getLocalizedMessage()));
}
}
Aggregations