Using variables in an embedded Groovy script

Jochen Wiedmann <[email protected]>
Newsgroups gmane.comp.lang.groovy.user
Message-ID <CAF8HOZ+JU9jKfSN_W+onyvfmY-z546w_mwW7xV4k-KgqZr9mkQ@mail.gmail.com>
Hi,

can anyone advise me, what is wrong with the following code: I'd
expect it to write out the word "Okay". Instead, it throws the
exception "Unexpected result: Hello, !"

final String scriptStr = "return \"Hello, $name!\";";
final GroovyShell gs = new GroovyShell();
final Script script = gs.parse(new StringReader(scriptStr));

final Binding binding = new Binding();
binding.setProperty("name", "world");
script.setBinding(binding);

final GStringImpl gsi = (GStringImpl) script.run();
final String[] gsArray = gsi.getStrings();
final String result;

if (gsArray == null || gsArray.length == 0) {
    result = null;
} else {
    result = String.join("", gsArray);
}

if (!"Hello, world!".equals(result)) {
    throw new IllegalStateException("Unexpected result: " + result);
}
System.out.println("Okay.");



-- 
The woman was born in a full-blown thunderstorm. She probably told it
to be quiet. It probably did. (Robert Jordan, Winter's heart)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.