<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~  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.
  -->

<!-- Using Ruby scripts for mediation -->
<definitions xmlns="http://ws.apache.org/ns/synapse">

    <localEntry key="stockquoteScript"
                src="file:repository/conf/sample/resources/script/stockquoteTransform.rb"/>

    <sequence name="main">
        <in>
            <!-- transform the custom quote request into a standard quote request expected by the service -->
            <script language="rb" key="stockquoteScript" function="transformRequest"/>

            <!-- send message to real endpoint referenced by name "stockquote" and stop -->
            <send>
                <endpoint name="stockquote">
                    <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                </endpoint>
            </send>
        </in>
        <out>
            <!-- transform the standard response back into the custom format the client expects -->
            <script language="rb" key="stockquoteScript" function="transformResponse"/>
            <send/>
        </out>
    </sequence>

</definitions>
