Package: groovy.util

## [Java] Class DelegatingScript

- groovy.util.DelegatingScript

- 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);

  Authors:
    Kohsuke Kawaguchi

- - ### Properties Summary

    Properties
    Type | Name and description
    --- | ---
    `Object` | `delegate`
    `Object` | `property`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `protected DelegatingScript ()`
    `protected DelegatingScript (Binding binding)`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `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)`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Script` | `evaluate, evaluate, getBinding, getProperty, invokeMethod, print, printf, printf, println, println, run, run, setBinding, setProperty`
    `class GroovyObjectSupport` | `getMetaClass, getProperty, invokeMethod, setMetaClass, setProperty`
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Property Detail

    - #### Object delegate

    - #### Object property

  - ### 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)