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
Scriptthat performs method invocations and property access likeClosuredoes.DelegatingScriptis a convenient basis for loading a custom-defined DSL as aScript, 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 = ...;DelegatingScriptdoes this by delegating property access and method invocation to the delegate object.More formally speaking, given the following script:
a = 1; b(2);
Using
DelegatingScriptas the base class, the code will run as:delegate.a = 1; delegate.b(2);
... whereas in plainScript, 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.ObjectgetDelegate()java.lang.ObjectgetProperty(java.lang.String property)Retrieves a property value.java.lang.ObjectinvokeMethod(java.lang.String name, java.lang.Object args)Invoke a method (or closure in the binding) defined.voidsetDelegate(java.lang.Object delegate)Sets the delegation target.voidsetProperty(java.lang.String property, java.lang.Object newValue)Sets the given property to the new value.- 
Methods inherited from class groovy.lang.Script
evaluate, evaluate, getBinding, print, printf, printf, println, println, run, run, setBinding 
- 
Methods inherited from class groovy.lang.GroovyObjectSupport
getMetaClass, setMetaClass 
 - 
 
 - 
 
- 
- 
Constructor Detail
- 
DelegatingScript
protected DelegatingScript()
 
- 
DelegatingScript
protected DelegatingScript(Binding binding)
 
 - 
 
- 
Method Detail
- 
setDelegate
public void setDelegate(java.lang.Object delegate)
Sets the delegation target. 
- 
invokeMethod
public java.lang.Object invokeMethod(java.lang.String name, java.lang.Object args)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
public java.lang.Object getProperty(java.lang.String property)
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
public void setProperty(java.lang.String property, java.lang.Object newValue)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
public java.lang.Object getDelegate()
 
 - 
 
 -