This documentation is for WSO2 Enterprise Service Bus version 4.7.0 . View documentation for the latest release.

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Table of Contents


This sample demonstrates the functionality of Switch-Case Mediator. A message is passed through the ESB using the Smart Client mode. The ESB acts as a gateway to accept all messages, write and read local properties on a message instance and then perform mediation based on message properties or content.


For a list of prerequisites, see the Prerequisites section in ESB Samples Setup.

Building the Sample

1. Start the ESB with sample 2 configuration using the instructions given in Starting Sample ESB Configurations.

2. A message should appear in the command or text Linux console stating the server started successfully.

3. The synapse configuration in the ESB used for message mediation in this sample is provided in <ESB_HOME>/repository/samples/synapse_sample_2.xml as shown below:

Code Block
 <definitions xmlns="">
    <sequence name="main">
            <switch source="//m0:getQuote/m0:request/m0:symbol" xmlns:m0="http://services.samples">
                <case regex="IBM">
                    <!-- the property mediator sets a local property on the *current* message -->
                    <property name="symbol" value="Great stock - IBM"/>
                <case regex="MSFT">
                    <property name="symbol" value="Are you sure? - MSFT"/>
                    <!-- it is possible to assign the result of an XPath expression as well -->
                    <property name="symbol"
                              expression="fn:concat('Normal Stock - ', //m0:getQuote/m0:request/m0:symbol)"
            <log level="custom">
                <!-- the get-property() XPath extension function allows the lookup of local message properties
                    as well as properties from the Axis2 or Transport contexts (i.e. transport headers) -->
                <property name="symbol" expression="get-property('symbol')"/>
                <!-- the get-property() function supports the implicit message headers To/From/Action/FaultTo/ReplyTo -->
                <property name="epr" expression="get-property('To')"/>
            <!-- Send the messages where they are destined to (i.e. the 'To' EPR of the message) -->

4. Deploy the back-end service 'SimpleStockQuoteService' and start the Axis2 server using the instructions given in section Starting Sample Back-End Services.

5. Now you have a running ESB instance and a back-end service deployed. In the next section, we will send a message to the back-end service through the ESB using a sample client.

Executing the Sample

1. The sample client used here is 'Stock Quote Client' which can operate in several modes. For instructions on this sample client and its operation modes, refer to Stock Quote Client.

Smart Client Mode

Run each of the following ant commands from <ESB_HOME>/samples/axis2Client directory in the smart client mode, specifying "IBM," "MSFT" and "SUN" as the stock symbols.

Code Block
ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=IBM

2. When the symbol IBM is requested, note in the mediation logs in the ESB start-up console that the case statements' first case for "IBM" is executed and a local property named "symbol" is set to "Great stock - IBM." Subsequently, this local property value is looked up by the Log Mediator and logged using the get-property()XPath extension function.

Code Block
INFO LogMediator - symbol = Great stock - IBM, epr = http://localhost:9000/axis2/services/SimpleStockQuoteService

3. Again execute the smart client as follows:

Code Block
ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=MSFT

4. The mediation log will be displayed as follows in the ESB start-up console:

Code Block
INFO LogMediator - symbol = Are you sure? - MSFT, epr = http://localhost:9000/axis2/services/SimpleStockQuoteService

Example of message mediation in WSO2 ESB.