Class BshScriptFactory
- All Implemented Interfaces:
Aware
,BeanClassLoaderAware
,ScriptFactory
ScriptFactory
implementation
for a BeanShell script.
Typically used in combination with a
ScriptFactoryPostProcessor
;
see the latter's javadoc for a configuration example.
- Since:
- 2.0
- Author:
- Juergen Hoeller, Rob Harrop
- See Also:
-
Constructor Summary
ConstructorDescriptionBshScriptFactory
(String scriptSourceLocator) Create a new BshScriptFactory for the given script source.BshScriptFactory
(String scriptSourceLocator, Class<?> @Nullable ... scriptInterfaces) Create a new BshScriptFactory for the given script source. -
Method Summary
Modifier and TypeMethodDescriptiongetScriptedObject
(ScriptSource scriptSource, Class<?> @Nullable ... actualInterfaces) Load and parse the BeanShell script viaBshScriptUtils
.getScriptedObjectType
(ScriptSource scriptSource) Determine the type of the scripted Java object.Return the business interfaces that the script is supposed to implement.Return a locator that points to the source of the script.boolean
BeanShell scripts do require a config interface.boolean
requiresScriptedObjectRefresh
(ScriptSource scriptSource) Determine whether a refresh is required (for example, through ScriptSource'sisModified()
method).void
setBeanClassLoader
(ClassLoader classLoader) Callback that supplies the beanclass loader
to a bean instance.toString()
-
Constructor Details
-
BshScriptFactory
Create a new BshScriptFactory for the given script source.With this
BshScriptFactory
variant, the script needs to declare a full class or return an actual instance of the scripted object.- Parameters:
scriptSourceLocator
- a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
-
BshScriptFactory
Create a new BshScriptFactory for the given script source.The script may either be a simple script that needs a corresponding proxy generated (implementing the specified interfaces), or declare a full class or return an actual instance of the scripted object (in which case the specified interfaces, if any, need to be implemented by that class/instance).
- Parameters:
scriptSourceLocator
- a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.scriptInterfaces
- the Java interfaces that the scripted object is supposed to implement (may benull
)
-
-
Method Details
-
setBeanClassLoader
Description copied from interface:BeanClassLoaderAware
Callback that supplies the beanclass loader
to a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean's
InitializingBean.afterPropertiesSet()
method or a custom init-method.- Specified by:
setBeanClassLoader
in interfaceBeanClassLoaderAware
- Parameters:
classLoader
- the owning class loader
-
getScriptSourceLocator
Description copied from interface:ScriptFactory
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...").
- Specified by:
getScriptSourceLocator
in interfaceScriptFactory
- Returns:
- the script source locator
- See Also:
-
getScriptInterfaces
Description copied from interface:ScriptFactory
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).- Specified by:
getScriptInterfaces
in interfaceScriptFactory
- Returns:
- the interfaces for the script
-
requiresConfigInterface
public boolean requiresConfigInterface()BeanShell scripts do require a config interface.- Specified by:
requiresConfigInterface
in interfaceScriptFactory
- Returns:
- whether the script requires a generated config interface
- See Also:
-
getScriptedObject
public @Nullable Object getScriptedObject(ScriptSource scriptSource, Class<?> @Nullable ... actualInterfaces) throws IOException, ScriptCompilationException Load and parse the BeanShell script viaBshScriptUtils
.- Specified by:
getScriptedObject
in interfaceScriptFactory
- Parameters:
scriptSource
- the actual ScriptSource to retrieve the script source text from (nevernull
)actualInterfaces
- the actual interfaces to expose, including script interfaces as well as a generated config interface (if applicable; may benull
)- Returns:
- the scripted Java object
- Throws:
IOException
- if script retrieval failedScriptCompilationException
- if script compilation failed- See Also:
-
getScriptedObjectType
public @Nullable Class<?> getScriptedObjectType(ScriptSource scriptSource) throws IOException, ScriptCompilationException Description copied from interface:ScriptFactory
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.
- Specified by:
getScriptedObjectType
in interfaceScriptFactory
- Parameters:
scriptSource
- the actual ScriptSource to retrieve the script source text from (nevernull
)- Returns:
- the type of the scripted Java object, or
null
if none could be determined - Throws:
IOException
- if script retrieval failedScriptCompilationException
- if script compilation failed
-
requiresScriptedObjectRefresh
Description copied from interface:ScriptFactory
Determine whether a refresh is required (for example, through ScriptSource'sisModified()
method).- Specified by:
requiresScriptedObjectRefresh
in interfaceScriptFactory
- Parameters:
scriptSource
- the actual ScriptSource to retrieve the script source text from (nevernull
)- Returns:
- whether a fresh
ScriptFactory.getScriptedObject(org.springframework.scripting.ScriptSource, java.lang.Class<?>...)
call is required - See Also:
-
toString
-