Class StandardScriptFactory
- All Implemented Interfaces:
- Aware,- BeanClassLoaderAware,- ScriptFactory
ScriptFactory implementation based
 on the JSR-223 script engine abstraction (as included in Java).
 Supports JavaScript, Groovy, JRuby, and other JSR-223 compliant engines.
 Typically used in combination with a
 ScriptFactoryPostProcessor;
 see the latter's javadoc for a configuration example.
- Since:
- 4.2
- Author:
- Juergen Hoeller
- See Also:
- 
Constructor SummaryConstructorsConstructorDescriptionStandardScriptFactory(String scriptSourceLocator) Create a new StandardScriptFactory for the given script source.StandardScriptFactory(String scriptSourceLocator, Class<?>... scriptInterfaces) Create a new StandardScriptFactory for the given script source.StandardScriptFactory(String scriptEngineName, String scriptSourceLocator) Create a new StandardScriptFactory for the given script source.StandardScriptFactory(String scriptEngineName, String scriptSourceLocator, Class<?>... scriptInterfaces) Create a new StandardScriptFactory for the given script source.
- 
Method SummaryModifier and TypeMethodDescriptionprotected ObjectadaptToInterfaces(Object script, ScriptSource scriptSource, Class<?>... actualInterfaces) protected ObjectevaluateScript(ScriptSource scriptSource) getScriptedObject(ScriptSource scriptSource, Class<?>... actualInterfaces) Load and parse the script via JSR-223's ScriptEngine.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.booleanReturn whether the script requires a config interface to be generated for it.booleanrequiresScriptedObjectRefresh(ScriptSource scriptSource) Determine whether a refresh is required (for example, through ScriptSource'sisModified()method).protected ScriptEngineretrieveScriptEngine(ScriptSource scriptSource) voidsetBeanClassLoader(ClassLoader classLoader) Callback that supplies the beanclass loaderto a bean instance.toString()
- 
Constructor Details- 
StandardScriptFactoryCreate a new StandardScriptFactory for the given script source.- Parameters:
- scriptSourceLocator- a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
 
- 
StandardScriptFactoryCreate a new StandardScriptFactory for the given script source.- 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
 
- 
StandardScriptFactoryCreate a new StandardScriptFactory for the given script source.- Parameters:
- scriptEngineName- the name of the JSR-223 ScriptEngine to use (explicitly given instead of inferred from the script source)
- scriptSourceLocator- a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
 
- 
StandardScriptFactorypublic StandardScriptFactory(@Nullable String scriptEngineName, String scriptSourceLocator, @Nullable Class<?>... scriptInterfaces) Create a new StandardScriptFactory for the given script source.- Parameters:
- scriptEngineName- the name of the JSR-223 ScriptEngine to use (explicitly given instead of inferred from the script source)
- 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
 
 
- 
- 
Method Details- 
setBeanClassLoaderDescription 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 interface- BeanClassLoaderAware
- Parameters:
- classLoader- the owning class loader
 
- 
getScriptSourceLocatorDescription 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 interface- ScriptFactory
- Returns:
- the script source locator
- See Also:
 
- 
getScriptInterfacesDescription 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 interface- ScriptFactory
- Returns:
- the interfaces for the script
 
- 
requiresConfigInterfacepublic boolean requiresConfigInterface()Description copied from interface:ScriptFactoryReturn 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 ingetScriptInterfaces().- Specified by:
- requiresConfigInterfacein interface- ScriptFactory
- 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 script via JSR-223's ScriptEngine.- Specified by:
- getScriptedObjectin interface- ScriptFactory
- 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
 
- 
evaluateScript
- 
retrieveScriptEngine
- 
adaptToInterfaces
- 
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 interface- ScriptFactory
- Parameters:
- scriptSource- the actual ScriptSource to retrieve the script source text from (never- null)
- Returns:
- the type of the scripted Java object, or nullif none could be determined
- Throws:
- IOException- if script retrieval failed
- ScriptCompilationException- if script compilation failed
 
- 
requiresScriptedObjectRefreshDescription copied from interface:ScriptFactoryDetermine whether a refresh is required (for example, through ScriptSource'sisModified()method).- Specified by:
- requiresScriptedObjectRefreshin interface- ScriptFactory
- Parameters:
- scriptSource- the actual ScriptSource to retrieve the script source text from (never- null)
- Returns:
- whether a fresh ScriptFactory.getScriptedObject(org.springframework.scripting.ScriptSource, java.lang.Class<?>...)call is required
- See Also:
 
- 
toString
 
-