This documentation is for WSO2 ESB version 4.5.1. View documentation for the latest release.

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 »

Objective: Introduction to Message Copying and Content Enriching with Enrich Mediator

<definitions xmlns="http://synapse.apache.org/ns/2010/04/configuration">
    <sequence name="main">
        <in>
            <enrich>
                <source type="custom"
                        xpath="//m0:getQuote/m0:request/m0:symbol/text()"
                        xmlns:m0="http://services.samples"/>
                <target type="property" property="ORIGINAL_REQ"/>
            </enrich>
            <enrich>
                <source type="body"/>
                <target type="property" property="REQUEST_PAYLOAD"/>
            </enrich>
            <enrich>
                <source type="inline" key="init_req"/>
                <target xmlns:m0="http://services.samples"
                        xpath="//m0:getQuote/m0:request/m0:symbol/text()"/>
            </enrich>
            <send>
                <endpoint>
                    <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                </endpoint>
            </send>
            <drop/>
        </in>
        <out>
            <header xmlns:urn="http://synapse.apache.org" name="urn:lastTradeTimestamp" value="foo"/>
            <enrich>
                <source type="custom"
                        xpath="//ns:getQuoteResponse/ns:return/ax21:lastTradeTimestamp"
                        xmlns:ns="http://services.samples"
                        xmlns:ax21="http://services.samples/xsd"/>
                <target xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                        xmlns:urn="http://synapse.apache.org"
                        xpath="/soapenv:Envelope/soapenv:Header/urn:lastTradeTimestamp"/>
            </enrich>
             <log level="full"/>
            <log>
                <property name="Original Request Symbol" expression="get-property('ORIGINAL_REQ')"/>
                <property name="Request Payload" expression="get-property('REQUEST_PAYLOAD')"/>
            </log>
            <send/>
        </out>
    </sequence>
    <localEntry key="init_req">MSFT</localEntry>
    <localEntry key="price_req">
        <m0:symbol xmlns:m0="http://services.samples">MSFT</m0:symbol>
    </localEntry>
</definitions>

Prerequisites:

  • Start the Synapse configuration numbered 15: wso2esb-samples.sh -sn 15 
  • Start the Axis2 server and deploy the SimpleStockQuoteService if not already done
./axis2server.sh

This sample demonstrate the various capabilities of Enrich Mediator. Inside the in-sequence we store/copy different parts of the message to properties and just before sending the message to the StockQuoteService, we modify the request value 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.

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

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

 

 

 

  • No labels