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

  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 Details

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

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