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/.
Sample 441: Converting JSON to XML Using JavaScript
Note that WSO2 EI is shipped with the following changes to what is mentioned in this documentation:
<PRODUCT_HOME>/
repository/samples/
directory that includes all Integration profile samples is changed to<EI_HOME>/
samples/service-bus/
.<PRODUCT_HOME>/
repository/samples/resources/
directory that includes all artifacts related to the Integration profile samples is changed to<EI_HOME>/
samples/service-bus/resources/
.
Objective:Â Demonstrate the ability to expose a SOAP service over JSON by switching between JSON and XML/SOAP message formats using JavaScript and the Script mediator.
<definitions xmlns="http://ws.apache.org/ns/synapse"> <proxy name="JSONProxy" transports="http https"> <target> <endpoint> <address uri="http://localhost:9000/services/SimpleStockQuoteService" format="soap11"/> </endpoint> <inSequence> <!-- transform the custom quote request into a standard quote requst expected by the service --> <script language="js"><![CDATA[ var symbol = mc.getPayloadJSON().symbol.toString(); mc.setPayloadXML( <m:getQuote xmlns:m="http://services.samples"> <m:request> <m:symbol>{symbol}</m:symbol> </m:request> </m:getQuote>); ]]></script> <header name="Action" value="urn:getQuote"/> </inSequence> <outSequence> <script language="js"><![CDATA[ var symbol = mc.getPayloadXML()..*::symbol.toString(); var price = parseFloat(mc.getPayloadXML()..*::last); mc.setPayloadJSON( { "Quote" : { "Code" : symbol, "Price" : price, "Current" : { "High" : parseFloat(mc.getPayloadXML()..*::high), "Last" : parseFloat(mc.getPayloadXML()..*::last) } }, "Status" : (price >= 100 ? "OK" : "NOT-OK") });]]></script> <property name="messageType" scope="axis2" value="application/json"/> <send/> </outSequence> </target> </proxy> </definitions>
The JavaScript specified by the Script mediator found in the inSequence performs the JSON to SOAP (XML) transformation as the SimpleStockQuoteService endpoint accepts SOAP. Similarly, the Script mediator in the outSequece performs the SOAP to JSON transformation.
1. Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000.
2. Start WSO2 ESB with the sample configuration 441 (i.e., wso2esb-samples -sn 441
).
Invoke the above proxy service with following request:
curl -v -X POST \ -H "Content-Type:application/json" \ -d '{"symbol":"WSO2", "ID":"StockQuote"}' \ "http://localhost:8280/services/JSONProxy"
If the invocation is successful, you will see a response similar to the following:
{ "Quote":{ "Current":{ "High":-61.53602401623976, "Last":62.32682938796667 }, "Code":"WSO2", "Price":62.32682938796667 }, "Status":"NOT-OK" }
For more information about using JSON with the ESB, see JSON Support. To see an example of converting JSON to XML using XSLT instead of JavaScript, see Sample 440: Converting JSON to XML Using XSLT. For additional examples of the Script mediator, see Using Scripts in Mediation (Script Mediator).
Â