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

    - #### getCurrentTime

          protected long getCurrentTime()