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
ConstructorsConstructorDescriptionBshScriptFactory(String scriptSourceLocator) Create a new BshScriptFactory for the given script source.BshScriptFactory(String scriptSourceLocator, Class<?>... scriptInterfaces) Create a new BshScriptFactory for the given script source. - 
Method Summary
Modifier and TypeMethodDescriptiongetScriptedObject(ScriptSource scriptSource, Class<?>... actualInterfaces) Load and parse the BeanShell script viaBshScriptUtils.Class<?>getScriptedObjectType(ScriptSource scriptSource) Determine the type of the scripted Java object.Class<?>[]Return the business interfaces that the script is supposed to implement.Return a locator that points to the source of the script.booleanBeanShell scripts do require a config interface.booleanrequiresScriptedObjectRefresh(ScriptSource scriptSource) Determine whether a refresh is required (e.g.voidsetBeanClassLoader(ClassLoader classLoader) Callback that supplies the beanclass loaderto a bean instance.toString() 
- 
Constructor Details
- 
BshScriptFactory
Create a new BshScriptFactory for the given script source.With this
BshScriptFactoryvariant, 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:BeanClassLoaderAwareCallback that supplies the beanclass loaderto a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean'sInitializingBean.afterPropertiesSet()method or a custom init-method.- Specified by:
 setBeanClassLoaderin interfaceBeanClassLoaderAware- Parameters:
 classLoader- the owning class loader
 - 
getScriptSourceLocator
Description copied from interface:ScriptFactoryReturn 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:
 getScriptSourceLocatorin interfaceScriptFactory- Returns:
 - the script source locator
 - See Also:
 
 - 
getScriptInterfaces
Description copied from interface:ScriptFactoryReturn the business interfaces that the script is supposed to implement.Can return
nullif the script itself determines its Java interfaces (such as in the case of Groovy).- Specified by:
 getScriptInterfacesin interfaceScriptFactory- Returns:
 - the interfaces for the script
 
 - 
requiresConfigInterface
public boolean requiresConfigInterface()BeanShell scripts do require a config interface.- Specified by:
 requiresConfigInterfacein interfaceScriptFactory- Returns:
 - whether the script requires a generated config interface
 - See Also:
 
 - 
getScriptedObject
@Nullable public Object getScriptedObject(ScriptSource scriptSource, @Nullable Class<?>... actualInterfaces) throws IOException, ScriptCompilationException Load and parse the BeanShell script viaBshScriptUtils.- Specified by:
 getScriptedObjectin 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
@Nullable public Class<?> getScriptedObjectType(ScriptSource scriptSource) throws IOException, ScriptCompilationException Description copied from interface:ScriptFactoryDetermine 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:
 getScriptedObjectTypein interfaceScriptFactory- Parameters:
 scriptSource- the actual ScriptSource to retrieve the script source text from (nevernull)- Returns:
 - the type of the scripted Java object, or 
nullif none could be determined - Throws:
 IOException- if script retrieval failedScriptCompilationException- if script compilation failed
 - 
requiresScriptedObjectRefresh
Description copied from interface:ScriptFactoryDetermine whether a refresh is required (e.g. through ScriptSource'sisModified()method).- Specified by:
 requiresScriptedObjectRefreshin 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
 
 -