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 SummaryConstructors Modifier Constructor Description protectedDelegatingScript()protectedDelegatingScript(Binding binding)
- 
Method SummaryModifier 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.Scriptevaluate, evaluate, getBinding, print, printf, printf, println, println, run, run, setBindingMethods inherited from class groovy.lang.GroovyObjectSupportgetMetaClass, setMetaClassMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
- 
Constructor Details- 
DelegatingScriptprotected DelegatingScript()
- 
DelegatingScript
 
- 
- 
Method Details- 
setDelegatepublic void setDelegate(java.lang.Object delegate)Sets the delegation target.
- 
invokeMethodpublic 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 interface- GroovyObject
- Overrides:
- invokeMethodin class- Script
- Parameters:
- name- method to call
- args- arguments to pass to the method
- Returns:
- value
 
- 
getPropertypublic java.lang.Object getProperty(java.lang.String property)Description copied from interface:GroovyObjectRetrieves a property value.- Specified by:
- getPropertyin interface- GroovyObject
- Overrides:
- getPropertyin class- Script
- Parameters:
- property- the name of the property of interest
- Returns:
- the given property
 
- 
setPropertypublic 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 interface- GroovyObject
- Overrides:
- setPropertyin class- Script
- Parameters:
- property- the name of the property of interest
- newValue- the new value for the property
 
- 
getDelegatepublic java.lang.Object getDelegate()
 
-