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 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()  
      org.apache.synapse.mediators.Value getKey()  
      String getLanguage()  
      ClassLoader getLoader()  
      ScriptEngineWrapper getNewScriptEngine()  
      String getScriptSrc()  
      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 setLoader​(ClassLoader loader)  
      • 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, reportOpenStatistics, setBreakPoint, setCommentsList, setComponentStatisticsId, setDescription, setEffectiveTraceState, setMediatorPosition, setShortDescription, setSkipEnabled, setTraceState, shouldCaptureTracing, shouldTrace, shouldTrace, traceOrDebug, traceOrDebugWarn, unregisterMediationFlowPoint
    • 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