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">
            (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

    All Methods Instance Methods Concrete Methods
    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, getAspectConfiguration, getCommentsList, getDescription, getInputType, getLastSequenceFaultHandler, getLog, getMediatorName, getMediatorPosition, getOutputType, getRegisteredMediationFlowPoint, getShortDescription, getTraceState, getType, handleException, handleException, isBreakPoint, isContentAware, isSkipEnabled, isStatisticsEnable, isTraceOn, isTraceOrDebugOn, isTracingEnabled, registerMediationFlowPoint, reportCloseStatistics, reportCloseStatisticsWithError, reportOpenStatistics, setBreakPoint, setCommentsList, setComponentStatisticsId, setDescription, setEffectiveTraceState, 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 Detail

    - #### 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 Detail

    - #### 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 Detail

    - #### 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()