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