org.red5.server.script.groovy
Class GroovyScriptFactory

java.lang.Object
  extended by org.red5.server.script.groovy.GroovyScriptFactory
All Implemented Interfaces:
org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.scripting.ScriptFactory

public class GroovyScriptFactory
extends Object
implements org.springframework.scripting.ScriptFactory, org.springframework.beans.factory.BeanClassLoaderAware

ScriptFactory implementation for a Groovy script.

Typically used in combination with a org.springframework.scripting.support.ScriptFactoryPostProcessor; see the latter's Javadoc for a configuration example.

Since:
2.0
Author:
Juergen Hoeller, Rob Harrop
See Also:
org.springframework.scripting.support.ScriptFactoryPostProcessor, GroovyClassLoader

Constructor Summary
GroovyScriptFactory(String scriptSourceLocator)
          Create a new GroovyScriptFactory for the given script source.
GroovyScriptFactory(String scriptSourceLocator, Class[] scriptInterfaces)
           
GroovyScriptFactory(String scriptSourceLocator, org.springframework.scripting.groovy.GroovyObjectCustomizer groovyObjectCustomizer)
          Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.
 
Method Summary
protected  Object executeScript(Class scriptClass)
          Instantiate the given Groovy script class and run it if necessary.
 Object getScriptedObject(org.springframework.scripting.ScriptSource scriptSource, Class[] actualInterfaces)
          Loads and parses the Groovy script via the GroovyClassLoader.
 Class getScriptedObjectType(org.springframework.scripting.ScriptSource scriptSource)
           
 Class[] getScriptInterfaces()
          Groovy scripts determine their interfaces themselves, hence we don't need to explicitly expose interfaces here.
 String getScriptSourceLocator()
           
 boolean requiresConfigInterface()
          Groovy scripts do not need a config interface, since they expose their setters as public methods.
 void setBeanClassLoader(ClassLoader classLoader)
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

GroovyScriptFactory

public GroovyScriptFactory(String scriptSourceLocator)
Create a new GroovyScriptFactory for the given script source.

We don't need to specify script interfaces here, since a Groovy script defines its Java interfaces itself.

Parameters:
scriptSourceLocator - a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.

GroovyScriptFactory

public GroovyScriptFactory(String scriptSourceLocator,
                           org.springframework.scripting.groovy.GroovyObjectCustomizer groovyObjectCustomizer)
Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.

We don't need to specify script interfaces here, since a Groovy script defines its Java interfaces itself.

Parameters:
scriptSourceLocator - a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
groovyObjectCustomizer - a customizer that can set a custom metaclass or make other changes to the GroovyObject created by this factory (may be null)

GroovyScriptFactory

public GroovyScriptFactory(String scriptSourceLocator,
                           Class[] scriptInterfaces)
Method Detail

setBeanClassLoader

public void setBeanClassLoader(ClassLoader classLoader)
Specified by:
setBeanClassLoader in interface org.springframework.beans.factory.BeanClassLoaderAware

getScriptSourceLocator

public String getScriptSourceLocator()
Specified by:
getScriptSourceLocator in interface org.springframework.scripting.ScriptFactory

getScriptInterfaces

public Class[] getScriptInterfaces()
Groovy scripts determine their interfaces themselves, hence we don't need to explicitly expose interfaces here.

Specified by:
getScriptInterfaces in interface org.springframework.scripting.ScriptFactory
Returns:
null always

requiresConfigInterface

public boolean requiresConfigInterface()
Groovy scripts do not need a config interface, since they expose their setters as public methods.

Specified by:
requiresConfigInterface in interface org.springframework.scripting.ScriptFactory

getScriptedObject

public Object getScriptedObject(org.springframework.scripting.ScriptSource scriptSource,
                                Class[] actualInterfaces)
                         throws IOException,
                                org.springframework.scripting.ScriptCompilationException
Loads and parses the Groovy script via the GroovyClassLoader.

Specified by:
getScriptedObject in interface org.springframework.scripting.ScriptFactory
Throws:
IOException
org.springframework.scripting.ScriptCompilationException
See Also:
GroovyClassLoader

getScriptedObjectType

public Class getScriptedObjectType(org.springframework.scripting.ScriptSource scriptSource)
                            throws IOException,
                                   org.springframework.scripting.ScriptCompilationException
Specified by:
getScriptedObjectType in interface org.springframework.scripting.ScriptFactory
Throws:
IOException
org.springframework.scripting.ScriptCompilationException

executeScript

protected Object executeScript(Class scriptClass)
                        throws org.springframework.scripting.ScriptCompilationException
Instantiate the given Groovy script class and run it if necessary.

Parameters:
scriptClass - the Groovy script class
Returns:
the result object (either an instance of the script class or the result of running the script instance)
Throws:
org.springframework.scripting.ScriptCompilationException - in case of instantiation failure

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2006-2007 the Red5 project.