[Java] Class DelegatingScript
- 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.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 Summary
Constructor and description |
---|
protected DelegatingScript
() |
protected DelegatingScript
(Binding binding) |
Methods Summary
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) |
Inherited Methods Summary
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 |
Constructor Detail
protected DelegatingScript()
protected DelegatingScript(Binding binding)
Method Detail
public Object getDelegate()
@Override public Object getProperty(String property)
@Override public Object invokeMethod(String name, Object args)
public void setDelegate(Object delegate)
Sets the delegation target.
@Override public void setProperty(String property, Object newValue)
© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/3.0.7/html/gapi/groovy/util/DelegatingScript.html