## org.red5.server.script.groovy
Class GroovyScriptFactory

    java.lang.Object
      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