groovy.util

## Class GroovyScriptEngine

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

- All Implemented Interfaces:
    ResourceConnector

      public class GroovyScriptEngine
      extends java.lang.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, Mattias Reichel

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `GroovyScriptEngine(ResourceConnector rc)`
    `GroovyScriptEngine(ResourceConnector rc, java.lang.ClassLoader parentClassLoader)`
    `GroovyScriptEngine(java.lang.String url)`
    `GroovyScriptEngine(java.lang.String[] urls)`
    `GroovyScriptEngine(java.lang.String[] urls, java.lang.ClassLoader parentClassLoader)`
    `GroovyScriptEngine(java.lang.String url, java.lang.ClassLoader parentClassLoader)`
    `GroovyScriptEngine(java.net.URL[] roots)`
    `GroovyScriptEngine(java.net.URL[] roots, java.lang.ClassLoader parentClassLoader)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Script` | `createScript(java.lang.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.
    `java.lang.ClassLoader` | `getParentClassLoader()` Get the `ClassLoader` that will serve as the parent ClassLoader of the `GroovyClassLoader` in which scripts will be executed.
    `java.net.URLConnection` | `getResourceConnection(java.lang.String resourceName)` Get a resource connection as a `URLConnection` to retrieve a script from the `ResourceConnector`.
    `protected boolean` | `isSourceNewer(groovy.util.GroovyScriptEngine.ScriptCacheEntry entry)`
    `java.lang.Class` | `loadScriptByName(java.lang.String scriptName)` Get the class of the scriptName in question, so that you can instantiate Groovy objects with caching and reloading.
    `static void` | `main(java.lang.String[] urls)` Simple testing harness for the GSE.
    `java.lang.Object` | `run(java.lang.String scriptName, Binding binding)` Run a script identified by name with a given binding.
    `java.lang.String` | `run(java.lang.String scriptName, java.lang.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(java.net.URL[] roots)

    - #### GroovyScriptEngine

          public GroovyScriptEngine(java.net.URL[] roots,
                                    java.lang.ClassLoader parentClassLoader)

    - #### GroovyScriptEngine

          public GroovyScriptEngine(java.lang.String[] urls)
                             throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### GroovyScriptEngine

          public GroovyScriptEngine(java.lang.String[] urls,
                                    java.lang.ClassLoader parentClassLoader)
                             throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### GroovyScriptEngine

          public GroovyScriptEngine(java.lang.String url)
                             throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### GroovyScriptEngine

          public GroovyScriptEngine(java.lang.String url,
                                    java.lang.ClassLoader parentClassLoader)
                             throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### GroovyScriptEngine

          public GroovyScriptEngine(ResourceConnector rc)

    - #### GroovyScriptEngine

          public GroovyScriptEngine(ResourceConnector rc,
                                    java.lang.ClassLoader parentClassLoader)

  - ### Method Detail

    - #### main

          public static void main(java.lang.String[] urls)
                           throws java.lang.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:
        `java.lang.Exception` - if something goes wrong

    - #### getResourceConnection

          public java.net.URLConnection getResourceConnection(java.lang.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 java.lang.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 java.lang.Class loadScriptByName(java.lang.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 java.lang.String run(java.lang.String scriptName,
                                      java.lang.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 java.lang.Object run(java.lang.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(java.lang.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:
        `java.lang.NullPointerException` - if config is null

    - #### getCurrentTime

          protected long getCurrentTime()