Package org.apache.synapse.mediators.bsf

# Class ScriptMediator

java.lang.Object
org.apache.synapse.mediators.AbstractMediator
org.apache.synapse.mediators.bsf.ScriptMediator

All Implemented Interfaces:
  `org.apache.synapse.aspects.AspectConfigurable`, `org.apache.synapse.Mediator`, `org.apache.synapse.SynapseArtifact`

public class ScriptMediator extends org.apache.synapse.mediators.AbstractMediator
A Synapse mediator that calls a function in any scripting language supported by the BSF. The ScriptMediator supports scripts specified in-line or those loaded through a registry

        <script [key="entry-key"]
          [function="script-function-name"] language="nashornJs|javascript|groovy|ruby"invalid input: '&gt'
          (text | xml)?
        </script>

The function is an optional attribute defining the name of the script function to call, if not specified it defaults to a function named 'mediate'. The function takes a single parameter which is the Synapse MessageContext. The function may return a boolean, if it does not then true is assumed.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected ScriptEngine`
  `jsEngine`
  The BSF engine created to validate each JSON payload
  `protected ScriptEngine`
  `scriptEngine`
  The BSF engine created to process each message through the script

  ### Fields inherited from class org.apache.synapse.mediators.AbstractMediator

  `log, trace, traceState`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ScriptMediator(String language, String scriptSourceCode, ClassLoader classLoader)`
  Create a script mediator for the given language and given script source.
  `ScriptMediator(String language, Map<org.apache.synapse.mediators.Value,Object> includeKeysMap, org.apache.synapse.mediators.Value key, String function, ClassLoader classLoader)`
  Create a script mediator for the given language and given script entry key and function.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `getFunction()`
  `Map<org.apache.synapse.mediators.Value,Object>`
  `getIncludeMap()`
  `Map<String,org.apache.synapse.mediators.v2.ext.InputArgument>`
  `getInputArgumentList()`
  `org.apache.synapse.mediators.Value`
  `getKey()`
  `String`
  `getLanguage()`
  `ClassLoader`
  `getLoader()`
  `ScriptEngineWrapper`
  `getNewScriptEngine()`
  `String`
  `getResultTarget()`
  `String`
  `getScriptSrc()`
  `String`
  `getVariableName()`
  `protected void`
  `initInlineScript()`
  Initialise the Mediator for the inline script
  `protected void`
  `initScriptEngine()`
  `boolean`
  `isContentAltering()`
  `boolean`
  `mediate(org.apache.synapse.MessageContext synCtx)`
  Perform Script mediation.
  `protected ScriptEngineWrapper`
  `prepareExternalScript(org.apache.synapse.MessageContext synCtx)`
  Prepares the mediator for the invocation of an external script
  `void`
  `setInputArgumentMap(Map<String,org.apache.synapse.mediators.v2.ext.InputArgument> inputArgumentMap)`
  `void`
  `setLoader(ClassLoader loader)`
  `void`
  `setResultTarget(String resultTarget)`
  `void`
  `setVariableName(String variableName)`

  ### Methods inherited from class org.apache.synapse.mediators.AbstractMediator

  `auditLog, auditWarn, configure, disableStatistics, disableTracing, divertMediationRoute, enableStatistics, enableTracing, getArtifactIdentifier, getAspectConfiguration, getCommentsList, getDescription, getInputType, getLastSequenceFaultHandler, getLog, getMediatorId, getMediatorName, getMediatorPosition, getOutputType, getRegisteredMediationFlowPoint, getShortDescription, getTraceState, getType, handleException, handleException, isBreakPoint, isContentAware, isSkipEnabled, isStatisticsEnable, isTraceOn, isTraceOrDebugOn, isTracingEnabled, registerMediationFlowPoint, reportCloseStatistics, reportCloseStatisticsWithError, reportOpenStatistics, setArtifactIdentifier, setBreakPoint, setCommentsList, setComponentStatisticsId, setDescription, setEffectiveTraceState, setMediatorId, setMediatorPosition, setShortDescription, setSkipEnabled, setTraceState, shouldCaptureTracing, shouldTrace, shouldTrace, traceOrDebug, traceOrDebugWarn, unregisterMediationFlowPoint`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### scriptEngine

    protected ScriptEngine scriptEngine
    The BSF engine created to process each message through the script

  - ### jsEngine

    protected ScriptEngine jsEngine
    The BSF engine created to validate each JSON payload

- ## Constructor Details

  - ### ScriptMediator

    public ScriptMediator(String language, String scriptSourceCode, ClassLoader classLoader)
    Create a script mediator for the given language and given script source.
    Parameters:
      `language` - the BSF language
      `scriptSourceCode` - the source code of the script

  - ### ScriptMediator

    public ScriptMediator(String language, Map<org.apache.synapse.mediators.Value,Object> includeKeysMap, org.apache.synapse.mediators.Value key, String function, ClassLoader classLoader)
    Create a script mediator for the given language and given script entry key and function.
    Parameters:
      `language` - the BSF language
      `includeKeysMap` - Include script keys
      `key` - the registry entry key to load the script
      `function` - the function to be invoked

- ## Method Details

  - ### mediate

    public boolean mediate(org.apache.synapse.MessageContext synCtx)
    Perform Script mediation.
    Parameters:
      `synCtx` - the Synapse message context
    Returns:
      the boolean result from the script invocation

  - ### initInlineScript

    protected void initInlineScript()
    Initialise the Mediator for the inline script

  - ### prepareExternalScript

    protected ScriptEngineWrapper prepareExternalScript(org.apache.synapse.MessageContext synCtx) throws ScriptException
    Prepares the mediator for the invocation of an external script
    Parameters:
      `synCtx` - MessageContext script
    Throws:
      `ScriptException` - For any errors , when compile the script

  - ### initScriptEngine

    protected void initScriptEngine()

  - ### getLanguage

    public String getLanguage()

  - ### getKey

    public org.apache.synapse.mediators.Value getKey()

  - ### getFunction

    public String getFunction()

  - ### getScriptSrc

    public String getScriptSrc()

  - ### getIncludeMap

    public Map<org.apache.synapse.mediators.Value,Object> getIncludeMap()

  - ### getLoader

    public ClassLoader getLoader()

  - ### setLoader

    public void setLoader(ClassLoader loader)

  - ### getNewScriptEngine

    public ScriptEngineWrapper getNewScriptEngine()

  - ### isContentAltering

    public boolean isContentAltering()
    Specified by:
      `isContentAltering` in interface `org.apache.synapse.Mediator`
    Overrides:
      `isContentAltering` in class `org.apache.synapse.mediators.AbstractMediator`

  - ### setInputArgumentMap

    public void setInputArgumentMap(Map<String,org.apache.synapse.mediators.v2.ext.InputArgument> inputArgumentMap)

  - ### getInputArgumentList

    public Map<String,org.apache.synapse.mediators.v2.ext.InputArgument> getInputArgumentList()

  - ### setResultTarget

    public void setResultTarget(String resultTarget)

  - ### getResultTarget

    public String getResultTarget()

  - ### setVariableName

    public void setVariableName(String variableName)

  - ### getVariableName

    public String getVariableName()