groovy.util

## Class GroovyScriptEngine

- java.lang.Object
- - groovy.util.GroovyScriptEngine

- All Implemented Interfaces:
    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(ResourceConnector rc)`
    `GroovyScriptEngine(ResourceConnector rc, ClassLoader parentClassLoader)`
    `GroovyScriptEngine(String url)`
    `GroovyScriptEngine(String[] urls)`
    `GroovyScriptEngine(String[] urls, ClassLoader parentClassLoader)`
    `GroovyScriptEngine(String url, ClassLoader parentClassLoader)`
    `GroovyScriptEngine(URL[] roots)`
    `GroovyScriptEngine(URL[] roots, ClassLoader parentClassLoader)`

  - ### Method Summary

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

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### GroovyScriptEngine

          public GroovyScriptEngine(URL[] roots)

    - #### GroovyScriptEngine

          public GroovyScriptEngine(URL[] roots,
                                    ClassLoader parentClassLoader)

    - #### GroovyScriptEngine

          public GroovyScriptEngine(String[] urls)
                             throws IOException

      Throws:
        `IOException`

    - #### GroovyScriptEngine

          public GroovyScriptEngine(String[] urls,
                                    ClassLoader parentClassLoader)
                             throws IOException

      Throws:
        `IOException`

    - #### GroovyScriptEngine

          public GroovyScriptEngine(String url)
                             throws IOException

      Throws:
        `IOException`

    - #### GroovyScriptEngine

          public GroovyScriptEngine(String url,
                                    ClassLoader parentClassLoader)
                             throws IOException

      Throws:
        `IOException`

    - #### GroovyScriptEngine

          public GroovyScriptEngine(ResourceConnector rc)

    - #### GroovyScriptEngine

          public GroovyScriptEngine(ResourceConnector rc,
                                    ClassLoader parentClassLoader)

  - ### Method Detail

    - #### main

          public static void main(String[] urls)
                           throws Exception

      Simple testing harness for the GSE. Enter script roots as arguments and then input script names to run them.
      Parameters:
        `urls` - an array of URLs
      Throws:
        `Exception` - if something goes wrong

    - #### getResourceConnection

          public URLConnection getResourceConnection(String resourceName)
                                              throws ResourceException

      Get a resource connection as a `URLConnection` to retrieve a script from the `ResourceConnector`.
      Specified by:
        `getResourceConnection` in interface `ResourceConnector`
      Parameters:
        `resourceName` - name of the resource to be retrieved
      Returns:
        a URLConnection to the resource
      Throws:
        `ResourceException`

    - #### getParentClassLoader

          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

    - #### loadScriptByName

          public Class loadScriptByName(String scriptName)
                                 throws ResourceException,
                                        ScriptException

      Get the class of the scriptName in question, so that you can instantiate Groovy objects with caching and reloading.
      Parameters:
        `scriptName` - resource name pointing to the script
      Returns:
        the loaded scriptName as a compiled class
      Throws:
        `ResourceException` - if there is a problem accessing the script
        `ScriptException` - if there is a problem parsing the script

    - #### run

          public String run(String scriptName,
                            String argument)
                     throws ResourceException,
                            ScriptException

      Run a script identified by name with a single argument.
      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
      Throws:
        `ResourceException` - if there is a problem accessing the script
        `ScriptException` - if there is a problem parsing the script

    - #### run

          public Object run(String scriptName,
                            Binding binding)
                     throws ResourceException,
                            ScriptException

      Run a script identified by name with a given binding.
      Parameters:
        `scriptName` - name of the script to run
        `binding` - the binding to pass to the script
      Returns:
        an object
      Throws:
        `ResourceException` - if there is a problem accessing the script
        `ScriptException` - if there is a problem parsing the script

    - #### createScript

          public Script createScript(String scriptName,
                                     Binding binding)
                              throws ResourceException,
                                     ScriptException

      Creates a Script with a given scriptName and binding.
      Parameters:
        `scriptName` - name of the script to run
        `binding` - the binding to pass to the script
      Returns:
        the script object
      Throws:
        `ResourceException` - if there is a problem accessing the script
        `ScriptException` - if there is a problem parsing the script

    - #### isSourceNewer

          protected boolean isSourceNewer(groovy.util.GroovyScriptEngine.ScriptCacheEntry entry)

    - #### getGroovyClassLoader

          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

    - #### getConfig

          public CompilerConfiguration getConfig()

      Returns:
        a non null compiler configuration

    - #### setConfig

          public void setConfig(CompilerConfiguration config)

      sets a compiler configuration
      Parameters:
        `config` - - the compiler configuration
      Throws:
        `NullPointerException` - if config is null

    - #### getCurrentTime

          protected long getCurrentTime()