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.
  Author:
    sam, Marc Palmer, Guillaume Laforge, Jochen Theodorou

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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Script` | `createScript(String scriptName, Binding binding)` Creates a Script with a given scriptName and binding.
    `CompilerConfiguration` | `getConfig()`
    `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.
    `Class` | `loadScriptByName(String scriptName, ClassLoader parentClassLoader)` Deprecated.
    `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
    `void` | `setParentClassLoader(ClassLoader parentClassLoader)` Deprecated.

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

    - #### setParentClassLoader

          public void setParentClassLoader(ClassLoader parentClassLoader)

      Deprecated.
      Parameters:
        `parentClassLoader` - ClassLoader to be used as the parent ClassLoader for scripts executed by the engine

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

    - #### loadScriptByName

          public Class loadScriptByName(String scriptName,
                               ClassLoader parentClassLoader)
                                 throws ResourceException,
                                        ScriptException

      Deprecated.
      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
        `parentClassLoader` - the class loader to use when loading 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)
                                   throws ResourceException

      Throws:
        `ResourceException`

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