Package groovy.util

Class 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 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,
                                  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
      • 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
      • 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()