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 likeClosure
does.DelegatingScript
is 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 = ...;
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 plainScript
, this will be run as:binding.setProperty("a",1); ((Closure)binding.getProperty("b")).call(2);
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
DelegatingScript()
protected
DelegatingScript(Binding binding)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Object
getDelegate()
Object
getProperty(String property)
Retrieves a property value.Object
invokeMethod(String name, Object args)
Invoke a method (or closure in the binding) defined.void
setDelegate(Object delegate)
Sets the delegation target.void
setProperty(String property, 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(Object delegate)
Sets the delegation target.
-
invokeMethod
public Object invokeMethod(String name, Object args)
Description copied from class:Script
Invoke a method (or closure in the binding) defined.- Specified by:
invokeMethod
in interfaceGroovyObject
- Overrides:
invokeMethod
in classScript
- Parameters:
name
- method to callargs
- arguments to pass to the method- Returns:
- value
-
getProperty
public Object getProperty(String property)
Description copied from interface:GroovyObject
Retrieves a property value.- Specified by:
getProperty
in interfaceGroovyObject
- Overrides:
getProperty
in classScript
- Parameters:
property
- the name of the property of interest- Returns:
- the given property
-
setProperty
public void setProperty(String property, Object newValue)
Description copied from interface:GroovyObject
Sets the given property to the new value.- Specified by:
setProperty
in interfaceGroovyObject
- Overrides:
setProperty
in classScript
- Parameters:
property
- the name of the property of interestnewValue
- the new value for the property
-
getDelegate
public Object getDelegate()
-
-