Class 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 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()
      • setLoader

        public void setLoader​(ClassLoader loader)
      • 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()