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.

Author:
  sam, Marc Palmer, Guillaume Laforge, Jochen Theodorou, Mattias Reichel

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