This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Introduction

This sample demonstrates various capabilities of the Enrich Mediator.

Prerequisites

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

Building the Sample

1. Start the ESB with sample 15 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_15.xml as shown below:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://ws.apache.org/ns/synapse">
   <localEntry key="price_req">
      <m0:symbol xmlns:m0="http://services.samples">MSFT</m0:symbol>
   </localEntry>
   <localEntry key="init_req">MSFT</localEntry>
   <sequence name="fault">
      <log level="full">
         <property name="MESSAGE" value="Executing default &#34;fault&#34; sequence"/>
         <property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
         <property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
      </log>
      <drop/>
   </sequence>
   <sequence name="main">
      <in>
         <enrich>
            <source xmlns:ns="http://org.apache.synapse/xsd"
                    xmlns:m0="http://services.samples"
                    clone="true"
                    xpath="//m0:getQuote/m0:request/m0:symbol/text()"/>
            <target type="property" property="ORIGINAL_REQ"/>
         </enrich>
         <enrich>
            <source type="body" clone="true"/>
            <target type="property" property="REQUEST_PAYLOAD"/>
         </enrich>
         <enrich>
            <source type="inline" clone="true" key="init_req"/>
            <target xmlns:ns="http://org.apache.synapse/xsd"
                    xmlns:m0="http://services.samples"
                    xpath="//m0:getQuote/m0:request/m0:symbol/text()"/>
         </enrich>
         <send>
            <endpoint>
               <address uri="http://localhost:9001/services/SimpleStockQuoteService"/>
            </endpoint>
         </send>
         <drop/>
      </in>
      <out>
         <header xmlns:urn="http://synapse.apache.org"
                 name="urn:lastTradeTimestamp"
                 value="foo"/>
         <enrich>
            <source xmlns:ax21="http://services.samples/xsd"
                    xmlns:ns1="http://services.samples"
                    xmlns:ns="http://org.apache.synapse/xsd"
                    clone="true"
                    xpath="//ns1:getQuoteResponse/ns1:return/ax21:lastTradeTimestamp/text()"/>
            <target xmlns:urn="http://synapse.apache.org"
                    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                    xmlns:ns="http://org.apache.synapse/xsd"
                    xpath="/soapenv:Envelope/soapenv:Header/urn:lastTradeTimestamp/text()"/>
         </enrich>
         <log level="full"/>
         <log>
            <property xmlns:ns="http://org.apache.synapse/xsd"
                      name="Original Request Symbol"
                      expression="get-property('ORIGINAL_REQ')"/>
            <property xmlns:ns="http://org.apache.synapse/xsd"
                      name="Request Payload"
                      expression="get-property('REQUEST_PAYLOAD')"/>
         </log>
         <send/>
      </out>
   </sequence>
</definitions>

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

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

Inside the in-sequence we store/copy different parts of the message to properties. Just before sending the message to the a back-end service the request value is modified based on the local entry 'value-init_req'. Then in the out-sequence, the enrich mediator is used to enrich a soap header based on the 'lastTradeTimestamp' value of the response.

1. Run the following ant command from <ESB_HOME>/samples/axis2Client directory.

ant stockquote -Dtrpurl=http://localhost:8280/services/StockQuote

2. You can try this sample with different local entries as the source with the correct target xpath values.

  • No labels