|
Groovy Documentation | |||||||
| FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
java.lang.Objectgroovy.lang.GroovyObjectSupport
groovy.lang.Script
groovy.util.DelegatingScript
public abstract class DelegatingScript extends Script
Script that performs method invocations and property access like Closure does.
DelegatingScript is a convenient basis for loading a custom-defined DSL as a Script, then execute it. The following sample code illustrates how to do it:
class MyDSL {
public void foo(int x, int y, Closure z) { ... }
public void setBar(String a) { ... }
}
CompilerConfiguration cc = new CompilerConfiguration();
cc.setScriptBaseClass(DelegatingScript.class);
GroovyShell sh = new GroovyShell(cl,new Binding(),cc);
DelegatingScript script = (DelegatingScript)sh.parse(new File("my.dsl"))
script.setDelegate(new MyDSL());
script.run();
my.dsl can look like this:
foo(1,2) {
....
}
bar = ...;
DelegatingScript does this by delegating property access and method invocation to the delegate object.
More formally speaking, given the following script:
a = 1; b(2);
Using DelegatingScript as the base class, the code will run as:
delegate.a = 1; delegate.b(2);... whereas in plain Script, this will be run as:
binding.setProperty("a",1);
((Closure)binding.getProperty("b")).call(2);
| Constructor Summary | |
protected DelegatingScript()
|
|
protected DelegatingScript(Binding binding)
|
|
| Method Summary | |
|---|---|
java.lang.Object
|
getDelegate()
|
java.lang.Object
|
getProperty(java.lang.String property)
|
java.lang.Object
|
invokeMethod(java.lang.String name, java.lang.Object args)
|
void
|
setDelegate(java.lang.Object delegate)
Sets the delegation target. |
void
|
setProperty(java.lang.String property, java.lang.Object newValue)
|
| Methods inherited from class Script | |
|---|---|
| evaluate, evaluate, getBinding, getProperty, invokeMethod, print, printf, printf, println, println, run, run, setBinding, setProperty |
| Methods inherited from class GroovyObjectSupport | |
|---|---|
| getMetaClass, getProperty, invokeMethod, setMetaClass, setProperty |
| Methods inherited from class java.lang.Object | |
|---|---|
| java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
| Constructor Detail |
|---|
protected DelegatingScript()
protected DelegatingScript(Binding binding)
| Method Detail |
|---|
public java.lang.Object getDelegate()
@java.lang.Override public java.lang.Object getProperty(java.lang.String property)
@java.lang.Override public java.lang.Object invokeMethod(java.lang.String name, java.lang.Object args)
public void setDelegate(java.lang.Object delegate)
@java.lang.Override public void setProperty(java.lang.String property, java.lang.Object newValue)
Groovy Documentation