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 and description | 
|---|
| protected DelegatingScript() | 
| protected DelegatingScript(Binding binding) | 
| Type Params | Return Type | Name and description | 
|---|---|---|
|  | public Object | getDelegate() | 
|  | public Object | getProperty(String property) | 
|  | public Object | invokeMethod(String name, Object args) | 
|  | public void | setDelegate(Object delegate)Sets the delegation target. | 
|  | public void | setProperty(String property, Object newValue) | 
| Methods inherited from class | Name | 
|---|---|
| class Script | evaluate, evaluate, getBinding, getProperty, invokeMethod, print, printf, printf, println, println, run, run, setBinding, setProperty | 
| class GroovyObjectSupport | getMetaClass, setMetaClass | 
Copyright © 2003-2025 The Apache Software Foundation. All rights reserved.