Package groovy.util
Class DelegatingScript
java.lang.Object
groovy.lang.GroovyObjectSupport
groovy.lang.Script
groovy.util.DelegatingScript
- All Implemented Interfaces:
GroovyObject
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.getName());
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
Constructors Modifier Constructor Description protectedDelegatingScript()protectedDelegatingScript(Binding binding) -
Method Summary
Modifier and Type Method Description ObjectgetDelegate()ObjectgetProperty(String property)Retrieves a property value.ObjectinvokeMethod(String name, Object args)Invoke a method (or closure in the binding) defined.voidsetDelegate(Object delegate)Sets the delegation target.voidsetProperty(String property, Object newValue)Sets the given property to the new value.
-
Constructor Details
-
DelegatingScript
protected DelegatingScript() -
DelegatingScript
-
-
Method Details
-
setDelegate
Sets the delegation target. -
invokeMethod
Description copied from class:ScriptInvoke a method (or closure in the binding) defined.- Specified by:
invokeMethodin interfaceGroovyObject- Overrides:
invokeMethodin classScript- Parameters:
name- method to callargs- arguments to pass to the method- Returns:
- value
-
getProperty
Description copied from interface:GroovyObjectRetrieves a property value.- Specified by:
getPropertyin interfaceGroovyObject- Overrides:
getPropertyin classScript- Parameters:
property- the name of the property of interest- Returns:
- the given property
-
setProperty
Description copied from interface:GroovyObjectSets the given property to the new value.- Specified by:
setPropertyin interfaceGroovyObject- Overrides:
setPropertyin classScript- Parameters:
property- the name of the property of interestnewValue- the new value for the property
-
getDelegate
-