org.red5.server.script.groovy
Class GroovyScriptFactory

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

public class GroovyScriptFactory
extends Object
implements ScriptFactory, BeanClassLoaderAware

ScriptFactory implementation for a Groovy 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:
ScriptFactoryPostProcessor, GroovyClassLoader

Constructor Summary
GroovyScriptFactory(String scriptSourceLocator)
          Create a new GroovyScriptFactory for the given script source.
GroovyScriptFactory(String scriptSourceLocator, Class[] scriptInterfaces)
           
GroovyScriptFactory(String scriptSourceLocator, 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(ScriptSource scriptSource, Class[] actualInterfaces)
          Loads and parses the Groovy script via the GroovyClassLoader.
 Class<?> getScriptedObjectType(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.
 boolean requiresScriptedObjectRefresh(ScriptSource src)
           
 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,
                           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 BeanClassLoaderAware

getScriptSourceLocator

public String getScriptSourceLocator()
Specified by:
getScriptSourceLocator in interface 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 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 ScriptFactory

getScriptedObject

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

Specified by:
getScriptedObject in interface ScriptFactory
Throws:
IOException
ScriptCompilationException
See Also:
GroovyClassLoader

getScriptedObjectType

public Class<?> getScriptedObjectType(ScriptSource scriptSource)
                               throws IOException,
                                      ScriptCompilationException
Specified by:
getScriptedObjectType in interface ScriptFactory
Throws:
IOException
ScriptCompilationException

executeScript

protected Object executeScript(Class<?> scriptClass)
                        throws 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:
ScriptCompilationException - in case of instantiation failure

requiresScriptedObjectRefresh

public boolean requiresScriptedObjectRefresh(ScriptSource src)
Specified by:
requiresScriptedObjectRefresh in interface ScriptFactory

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2006-2010 The Red5 Project