Package: groovy.util

## [Java] Class GroovyScriptEngine

- groovy.util.GroovyScriptEngine

- All Implemented Interfaces and Traits:
    ResourceConnector

      public class GroovyScriptEngine
      extends Object
      implements ResourceConnector

  Specific script engine able to reload modified scripts as well as dealing properly with dependent scripts.

- - ### Constructor Summary

    Constructors
    Constructor and description
    `GroovyScriptEngine(URL[] roots)`
    `GroovyScriptEngine(URL[] roots, ClassLoader parentClassLoader)`
    `GroovyScriptEngine(String[] urls)`
    `GroovyScriptEngine(String[] urls, ClassLoader parentClassLoader)`
    `GroovyScriptEngine(String url)`
    `GroovyScriptEngine(String url, ClassLoader parentClassLoader)`
    `GroovyScriptEngine(ResourceConnector rc)`
    `GroovyScriptEngine(ResourceConnector rc, ClassLoader parentClassLoader)`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public Script` | `createScript(String scriptName, Binding binding)` Creates a Script with a given scriptName and binding.
    `` | `public CompilerConfiguration` | `getConfig()` Returns: a non null compiler configuration
    `` | `protected long` | `getCurrentTime()`
    `` | `public GroovyClassLoader` | `getGroovyClassLoader()` Returns the GroovyClassLoader associated with this script engine instance.
    `` | `public ClassLoader` | `getParentClassLoader()` Get the `ClassLoader` that will serve as the parent ClassLoader of the GroovyClassLoader in which scripts will be executed.
    `` | `public URLConnection` | `getResourceConnection(String resourceName)` Get a resource connection as a `URLConnection` to retrieve a script from the `ResourceConnector`.
    `` | `protected boolean` | `isSourceNewer(ScriptCacheEntry entry)`
    `` | `public Class` | `loadScriptByName(String scriptName)` Get the class of the scriptName in question, so that you can instantiate Groovy objects with caching and reloading.
    `` | `public static void` | `main(String[] urls)` Simple testing harness for the GSE.
    `` | `public String` | `run(String scriptName, String argument)` Run a script identified by name with a single argument.
    `` | `public Object` | `run(String scriptName, Binding binding)` Run a script identified by name with a given binding.
    `` | `public void` | `setConfig(CompilerConfiguration config)` sets a compiler configuration

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Constructor Detail

    - #### public GroovyScriptEngine(URL[] roots)

    - #### public GroovyScriptEngine(URL[] roots, ClassLoader parentClassLoader)

    - #### public GroovyScriptEngine(String[] urls)

    - #### public GroovyScriptEngine(String[] urls, ClassLoader parentClassLoader)

    - #### public GroovyScriptEngine(String url)

    - #### public GroovyScriptEngine(String url, ClassLoader parentClassLoader)

    - #### public GroovyScriptEngine(ResourceConnector rc)

    - #### public GroovyScriptEngine(ResourceConnector rc, ClassLoader parentClassLoader)

  - ### Method Detail

    - #### public Script createScript(String scriptName, Binding binding)

      Creates a Script with a given scriptName and binding.

      throws:
        ResourceException if there is a problem accessing the script
      throws:
        ScriptException if there is a problem parsing the script
      Parameters:
        `scriptName` - name of the script to run
        `binding` - the binding to pass to the script
      Returns:
        the script object

    - #### public CompilerConfiguration getConfig()

      Returns:
        a non null compiler configuration

    - #### protected long getCurrentTime()

    - #### public GroovyClassLoader getGroovyClassLoader()

      Returns the GroovyClassLoader associated with this script engine instance. Useful if you need to pass the class loader to another library.

      Returns:
        the GroovyClassLoader

    - #### public ClassLoader getParentClassLoader()

      Get the `ClassLoader` that will serve as the parent ClassLoader of the GroovyClassLoader in which scripts will be executed. By default, this is the ClassLoader that loaded the `GroovyScriptEngine` class.

      Returns:
        the parent classloader used to load scripts

    - #### @Override
      public URLConnection getResourceConnection(String resourceName)

      Get a resource connection as a `URLConnection` to retrieve a script from the `ResourceConnector`.

      throws:
        ResourceException
      Parameters:
        `resourceName` - name of the resource to be retrieved
      Returns:
        a URLConnection to the resource

    - #### protected boolean isSourceNewer(ScriptCacheEntry entry)

    - #### public Class loadScriptByName(String scriptName)

      Get the class of the scriptName in question, so that you can instantiate Groovy objects with caching and reloading.

      throws:
        ResourceException if there is a problem accessing the script
      throws:
        ScriptException if there is a problem parsing the script
      Parameters:
        `scriptName` - resource name pointing to the script
      Returns:
        the loaded scriptName as a compiled class

    - #### public static void main(String[] urls)

      Simple testing harness for the GSE. Enter script roots as arguments and then input script names to run them.

      throws:
        Exception if something goes wrong
      Parameters:
        `urls` - an array of URLs

    - #### public String run(String scriptName, String argument)

      Run a script identified by name with a single argument.

      throws:
        ResourceException if there is a problem accessing the script
      throws:
        ScriptException if there is a problem parsing the script
      Parameters:
        `scriptName` - name of the script to run
        `argument` - a single argument passed as a variable named `arg` in the binding
      Returns:
        a `toString()` representation of the result of the execution of the script

    - #### public Object run(String scriptName, Binding binding)

      Run a script identified by name with a given binding.

      throws:
        ResourceException if there is a problem accessing the script
      throws:
        ScriptException if there is a problem parsing the script
      Parameters:
        `scriptName` - name of the script to run
        `binding` - the binding to pass to the script
      Returns:
        an object

    - #### public void setConfig(CompilerConfiguration config)

      sets a compiler configuration

      throws:
        NullPointerException if config is null
      Parameters:
        `config` - - the compiler configuration