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