Package org.springframework.scripting

# Interface ScriptFactory

All Known Implementing Classes:
  `BshScriptFactory`, `GroovyScriptFactory`, `StandardScriptFactory`

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

Modifier and Type
Method
Description
`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 (for example, through ScriptSource's `isModified()` method).

## Method Details

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

@Nullable 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

@Nullable Object getScriptedObject(ScriptSource scriptSource, @Nullable 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

@Nullable 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 (for example, 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()`