Groovy 2.2.0

groovy.util
[Java] Class DelegatingScript

java.lang.Object
  groovy.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);
 
Authors:
Kohsuke Kawaguchi


Constructor Summary
protected DelegatingScript()

protected DelegatingScript(Binding binding)

 
Method Summary
Object getDelegate()

Object getProperty(String property)

Object invokeMethod(String name, Object args)

void setDelegate(Object delegate)

Sets the delegation target.

void setProperty(String property, 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 Object
wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll
 

Constructor Detail

DelegatingScript

protected DelegatingScript()


DelegatingScript

protected DelegatingScript(Binding binding)


 
Method Detail

getDelegate

public Object getDelegate()


getProperty

@Override
public Object getProperty(String property)


invokeMethod

@Override
public Object invokeMethod(String name, Object args)


setDelegate

public void setDelegate(Object delegate)
Sets the delegation target.


setProperty

@Override
public void setProperty(String property, Object newValue)


 

Copyright © 2003-2013 The Codehaus. All rights reserved.