blob: e9c67a537d68e37caabcee40bfdce916b1bd2a9b [file] [log] [blame]
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<synapse xmlns="http://ws.apache.org/ns/synapse">
<!-- Introduction to the script mediator using in-line scripts -->
<definitions>
<!-- define a reuseable endpoint definition and use it within config -->
<endpoint name="stockquote" address="http://localhost:9000/axis2/services/SimpleStockQuoteService"/>
</definitions>
<rules>
<in>
<!-- transform the custom quote request into a standard quote requst expected by the service -->
<script.js><![CDATA[
var symbol = mc.getPayloadXML()..*::Code.toString();
mc.setPayloadXML(
<m:getQuote xmlns:m="http://services.samples/xsd">
<m:request>
<m:symbol>{symbol}</m:symbol>
</m:request>
</m:getQuote>);
]]></script.js>
<!-- send message to real endpoint referenced by name "stockquote" and stop -->
<send>
<endpoint ref="stockquote"/>
</send>
</in>
<out>
<!-- transform the standard response back into the custom format the client expects -->
<script.js><![CDATA[
var symbol = mc.getPayloadXML()..*::symbol.toString();
var price = mc.getPayloadXML()..*::last.toString();
mc.setPayloadXML(
<m:CheckPriceResponse xmlns:m="http://www.apache-synapse.org/test">
<m:Code>{symbol}</m:Code>
<m:Price>{price}</m:Price>
</m:CheckPriceResponse>);
]]></script.js>
<!-- now send the custom response back to the client and stop -->
<send/>
</out>
</rules>
</synapse>