org.red5.server.script.groovy

## Class GroovyScriptFactory

- java.lang.Object
- - org.red5.server.script.groovy.GroovyScriptFactory

All Implemented Interfaces:
  org.springframework.beans.factory.Aware, 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

Constructors
Constructor and Description
`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

Methods
`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.
`boolean` `requiresScriptedObjectRefresh(org.springframework.scripting.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,
                       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

#### requiresScriptedObjectRefresh

    public boolean requiresScriptedObjectRefresh(org.springframework.scripting.ScriptSource src)

Specified by:
  `requiresScriptedObjectRefresh` in interface `org.springframework.scripting.ScriptFactory`

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`