org.springframework.scripting
Interface ScriptFactory

All Known Implementing Classes:
BshScriptFactory, GroovyScriptFactory, JRubyScriptFactory

public interface ScriptFactory

Script definition interface, encapsulating the configuration of a specific script as well as a factory method for creating the actual scripted Java Object.

Since:
2.0
Author:
Juergen Hoeller, Rob Harrop
See Also:
getScriptSourceLocator(), getScriptedObject(org.springframework.scripting.ScriptSource, java.lang.Class[])

Method Summary
 Object getScriptedObject(ScriptSource scriptSource, Class[] actualInterfaces)
          Factory method for creating the scripted Java object.
 Class getScriptedObjectType(ScriptSource scriptSource)
          Determine the type of the scripted Java object.
 Class[] getScriptInterfaces()
          Return the business interfaces that the script is supposed to implement.
 String getScriptSourceLocator()
          Return a locator that points to the source of the script.
 boolean requiresConfigInterface()
          Return whether the script requires a config interface to be generated for it.
 boolean requiresScriptedObjectRefresh(ScriptSource scriptSource)
          Determine whether a refresh is required (e.g.
 

Method Detail

getScriptSourceLocator

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
See Also:
ScriptFactoryPostProcessor.convertToScriptSource(java.lang.String, java.lang.String, org.springframework.core.io.ResourceLoader), ResourceLoader

getScriptInterfaces

Class[] getScriptInterfaces()
Return the business interfaces that the script is supposed to implement.

Can return null if the script itself determines its Java interfaces (such as in the case of Groovy).

Returns:
the interfaces for the script

requiresConfigInterface

boolean requiresConfigInterface()
Return whether the script requires a config interface to be generated for it. This is typically the case for scripts that do not determine Java signatures themselves, with no appropriate config interface specified in getScriptInterfaces().

Returns:
whether the script requires a generated config interface
See Also:
getScriptInterfaces()

getScriptedObject

Object getScriptedObject(ScriptSource scriptSource,
                         Class[] actualInterfaces)
                         throws IOException,
                                ScriptCompilationException
Factory method for creating 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)
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
Throws:
IOException - if script retrieval failed
ScriptCompilationException - if script compilation failed

getScriptedObjectType

Class getScriptedObjectType(ScriptSource scriptSource)
                            throws IOException,
                                   ScriptCompilationException
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
Throws:
IOException - if script retrieval failed
ScriptCompilationException - if script compilation failed
Since:
2.0.3

requiresScriptedObjectRefresh

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:
whether a fresh getScriptedObject(org.springframework.scripting.ScriptSource, java.lang.Class[]) call is required
Since:
2.5.2
See Also:
ScriptSource.isModified()