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