Package 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.
-
-
Constructor Summary
Constructors Constructor 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 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 theClassLoader
that will serve as the parent ClassLoader of theGroovyClassLoader
in which scripts will be executed.java.net.URLConnection
getResourceConnection(java.lang.String resourceName)
Get a resource connection as aURLConnection
to retrieve a script from theResourceConnector
.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
-
-
-
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 aURLConnection
to retrieve a script from theResourceConnector
.- Specified by:
getResourceConnection
in interfaceResourceConnector
- Parameters:
resourceName
- name of the resource to be retrieved- Returns:
- a URLConnection to the resource
- Throws:
ResourceException
-
getParentClassLoader
public java.lang.ClassLoader getParentClassLoader()
Get theClassLoader
that will serve as the parent ClassLoader of theGroovyClassLoader
in which scripts will be executed. By default, this is the ClassLoader that loaded theGroovyScriptEngine
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 scriptScriptException
- 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 runargument
- a single argument passed as a variable namedarg
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 scriptScriptException
- 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 runbinding
- the binding to pass to the script- Returns:
- an object
- Throws:
ResourceException
- if there is a problem accessing the scriptScriptException
- 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 runbinding
- the binding to pass to the script- Returns:
- the script object
- Throws:
ResourceException
- if there is a problem accessing the scriptScriptException
- 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()
-
-