public class

GroovyScriptFactory

extends Object
implements BeanClassLoaderAware BeanFactoryAware ScriptFactory
java.lang.Object
   ↳ org.springframework.scripting.groovy.GroovyScriptFactory

Class Overview

ScriptFactory implementation for a Groovy script.

Typically used in combination with a ScriptFactoryPostProcessor; see the latter's javadoc} for a configuration example.

See Also

Summary

Public Constructors
GroovyScriptFactory(String scriptSourceLocator)
Create a new GroovyScriptFactory for the given script source.
GroovyScriptFactory(String scriptSourceLocator, GroovyObjectCustomizer groovyObjectCustomizer)
Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.
Public Methods
GroovyClassLoader getGroovyClassLoader()
Return the GroovyClassLoader used by this script factory.
Class[] getScriptInterfaces()
Groovy scripts determine their interfaces themselves, hence we don't need to explicitly expose interfaces here.
String getScriptSourceLocator()
Return a locator that points to the source of the script.
Object getScriptedObject(ScriptSource scriptSource, Class[] actualInterfaces)
Loads and parses the Groovy script via the GroovyClassLoader.
Class getScriptedObjectType(ScriptSource scriptSource)
Determine the type of the scripted Java object.
boolean requiresConfigInterface()
Groovy scripts do not need a config interface, since they expose their setters as public methods.
boolean requiresScriptedObjectRefresh(ScriptSource scriptSource)
Determine whether a refresh is required (e.g.
void setBeanClassLoader(ClassLoader classLoader)
Callback that supplies the bean class loader to a bean instance.
void setBeanFactory(BeanFactory beanFactory)
Callback that supplies the owning factory to a bean instance.
String toString()
Protected Methods
Object executeScript(ScriptSource scriptSource, Class scriptClass)
Instantiate the given Groovy script class and run it if necessary.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.springframework.beans.factory.BeanClassLoaderAware
From interface org.springframework.beans.factory.BeanFactoryAware
From interface org.springframework.scripting.ScriptFactory

Public Constructors

public GroovyScriptFactory (String scriptSourceLocator)

Create a new GroovyScriptFactory for the given script source.

We don't need to specify script interfaces here, since a Groovy script defines its Java interfaces itself.

Parameters
scriptSourceLocator a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.

public GroovyScriptFactory (String scriptSourceLocator, GroovyObjectCustomizer groovyObjectCustomizer)

Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.

We don't need to specify script interfaces here, since a Groovy script defines its Java interfaces itself.

Parameters
scriptSourceLocator a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
groovyObjectCustomizer a customizer that can set a custom metaclass or make other changes to the GroovyObject created by this factory (may be null)

Public Methods

public GroovyClassLoader getGroovyClassLoader ()

Return the GroovyClassLoader used by this script factory.

public Class[] getScriptInterfaces ()

Groovy scripts determine their interfaces themselves, hence we don't need to explicitly expose interfaces here.

Returns
  • null always

public String getScriptSourceLocator ()

Return a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.

Typical supported locators are Spring resource locations (such as "file:C:/myScript.bsh" or "classpath:myPackage/myScript.bsh") and inline scripts ("inline:myScriptText...").

Returns
  • the script source locator

public Object getScriptedObject (ScriptSource scriptSource, Class[] actualInterfaces)

Loads and parses the Groovy script via the GroovyClassLoader.

Parameters
scriptSource the actual ScriptSource to retrieve the script source text from (never null)
actualInterfaces the actual interfaces to expose, including script interfaces as well as a generated config interface (if applicable; may be null)
Returns
  • the scripted Java object
See Also
  • groovy.lang.GroovyClassLoader

public Class getScriptedObjectType (ScriptSource scriptSource)

Determine the type of the scripted Java object.

Implementations are encouraged to cache script metadata such as a generated script class. Note that this method may be invoked concurrently and must be implemented in a thread-safe fashion.

Parameters
scriptSource the actual ScriptSource to retrieve the script source text from (never null)
Returns
  • the type of the scripted Java object, or null if none could be determined

public boolean requiresConfigInterface ()

Groovy scripts do not need a config interface, since they expose their setters as public methods.

Returns
  • whether the script requires a generated config interface

public boolean requiresScriptedObjectRefresh (ScriptSource scriptSource)

Determine whether a refresh is required (e.g. through ScriptSource's isModified() method).

Parameters
scriptSource the actual ScriptSource to retrieve the script source text from (never null)
Returns

public void setBeanClassLoader (ClassLoader classLoader)

Callback that supplies the bean class loader to a bean instance.

Invoked after the population of normal bean properties but before an initialization callback such as InitializingBean's afterPropertiesSet() method or a custom init-method.

Parameters
classLoader the owning class loader; may be null in which case a default ClassLoader must be used, for example the ClassLoader obtained via getDefaultClassLoader()

public void setBeanFactory (BeanFactory beanFactory)

Callback that supplies the owning factory to a bean instance.

Invoked after the population of normal bean properties but before an initialization callback such as afterPropertiesSet() or a custom init-method.

Parameters
beanFactory owning BeanFactory (never null). The bean can immediately call methods on the factory.

public String toString ()

Protected Methods

protected Object executeScript (ScriptSource scriptSource, Class scriptClass)

Instantiate the given Groovy script class and run it if necessary.

Parameters
scriptSource the source for the underlying script
scriptClass the Groovy script class
Returns
  • the result object (either an instance of the script class or the result of running the script instance)
Throws
ScriptCompilationException in case of instantiation failure