Groovy Answer to my embedding question
Andrew Oliver <[email protected]> Tue, 19 Jul 2011 09:17:01 -0400
| Newsgroups | gmane.org.user-groups.trijug.juglist |
|---|---|
| Message-ID | <CAF9=+5OmRbdY-koFCEAwiT5WCHHQBL6KXSo+Xt8iPfWi3XBJgQ@mail.gmail.com> |
http://groovy.codehaus.org/Embedding+Groovy
There appear to be two main ways to pass data between the embedded
groovy and Java
Binding
// call groovy expressions from Java code
Binding binding = new Binding();
binding.setVariable("foo", new Integer(2));
GroovyShell shell = new GroovyShell(binding);
Object value = shell.evaluate("println 'Hello World!'; x = 123; return
foo * 10");
assert value.equals(new Integer(20));
assert binding.getVariable("x").equals(new Integer(123));
or with the GroovyClassLoader:
ClassLoader parent = getClass().getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class groovyClass = loader.parseClass(new
File("src/test/groovy/script/HelloWorld.groovy"));
// let's call some method on an instance
GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
Object[] args = {};
groovyObject.invokeMethod("run", args);
It appears that the variables would be passed in and wrapped.
-Andy