public class

JRubyScriptFactory

extends Object
implements BeanClassLoaderAware ScriptFactory
java.lang.Object
   ↳ org.springframework.scripting.jruby.JRubyScriptFactory

Class Overview

ScriptFactory implementation for a JRuby script.

Typically used in combination with a ScriptFactoryPostProcessor; see the latter's javadoc for a configuration example.

Summary

Public Constructors
JRubyScriptFactory(String scriptSourceLocator, Class[] scriptInterfaces)
Create a new JRubyScriptFactory for the given script source.
Public Methods
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.
Object getScriptedObject(ScriptSource scriptSource, Class[] actualInterfaces)
Load and parse the JRuby script via JRubyScriptUtils.
Class getScriptedObjectType(ScriptSource scriptSource)
Determine the type of the scripted Java object.
boolean requiresConfigInterface()
JRuby scripts do require a config interface.
boolean requiresScriptedObjectRefresh(ScriptSource scriptSource)
Determine whether a refresh is required (e.g.
void setBeanClassLoader(ClassLoader classLoader)
Callback that supplies the bean class loader to a bean instance.
String toString()
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.springframework.beans.factory.BeanClassLoaderAware
From interface org.springframework.scripting.ScriptFactory

Public Constructors

public JRubyScriptFactory (String scriptSourceLocator, Class[] scriptInterfaces)

Create a new JRubyScriptFactory 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

Public Methods

public 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

public 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

public Object getScriptedObject (ScriptSource scriptSource, Class[] actualInterfaces)

Load and parse the JRuby script via JRubyScriptUtils.

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

public Class getScriptedObjectType (ScriptSource scriptSource)

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

public boolean requiresConfigInterface ()

JRuby scripts do require a config interface.

Returns
  • whether the script requires a generated config interface

public 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

public void setBeanClassLoader (ClassLoader classLoader)

Callback that supplies the bean class loader to a bean instance.

Invoked after the population of normal bean properties but before an initialization callback such as InitializingBean's afterPropertiesSet() method or a custom init-method.

Parameters
classLoader the owning class loader; may be null in which case a default ClassLoader must be used, for example the ClassLoader obtained via getDefaultClassLoader()

public String toString ()