<!--
  ~  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">

    <!-- using custom sequences for incoming and outgoing message mediation with proxy services -->
    <definitions>
        <set-property name="proxy_wsdl" src="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>

        <sequence name="proxy_1">
            <send>
                <endpoint address="http://localhost:9000/axis2/services/SimpleStockQuoteService"/>
            </send>
        </sequence>

        <endpoint name="proxy_2_endpoint" address="http://localhost:9000/axis2/services/SimpleStockQuoteService"/>

    </definitions>

    <proxies>
        <proxy name="StockQuoteProxy1">
            <wsdl key="proxy_wsdl"/>
            <target inSequence="proxy_1"/>
        </proxy>

        <proxy name="StockQuoteProxy2">
            <wsdl key="proxy_wsdl"/>
            <target endpoint="proxy_2_endpoint"/>
        </proxy>
    </proxies>

    <rules>
        <send/>
    </rules>

</synapse>