<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--
  ~  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.
  -->

<document>
    <properties>
        <title>Apache Synapse - Sample 390</title>
    </properties>
    <body>
        <section name="Sample 390: Introduction to the XQuery Mediator">
            <div class="xmlConf"><![CDATA[<definitions xmlns="http://ws.apache.org/ns/synapse">

    <!-- the SimpleURLRegistry allows access to a URL based registry (e.g. file:/// or http://) -->
    <registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
        <!-- the root property of the simple URL registry helps resolve a resource URL as root + key -->
        <parameter name="root">file:repository/conf/sample/resources/</parameter>
        <!-- all resources loaded from the URL registry would be cached for this number of milli seconds -->
        <parameter name="cachableDuration">15000</parameter>
    </registry>

    <localEntry key="xquery-key-req"
                src="file:repository/conf/sample/resources/xquery/xquery_req.xq"/>

    <proxy name="StockQuoteProxy">
        <target>
            <inSequence>
                <property name="body" expression="$body/child::*[position()=1]"/>
                <xquery key="xquery-key-req">
                    <variable name="payload" type="ELEMENT"/>
                </xquery>
                <send>
                    <endpoint>
                        <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                    </endpoint>
                </send>
            </inSequence>
            <outSequence>
                <out>
                    <xquery key="xquery/xquery_res.xq">
                        <variable name="payload" type="ELEMENT"/>
                        <variable xmlns:m0="http://services.samples"
                                  name="code" type="STRING"
                                  expression="self::node()//m0:return/m0:symbol/child::text()"/>
                        <variable xmlns:m0="http://services.samples"
                                  name="price" type="DOUBLE"
                                  expression="self::node()//m0:return/m0:last/child::text()"/>
                    </xquery>
                    <send/>
                </out>
            </outSequence>
        </target>
        <publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    </proxy>

</definitions>]]></div>
            <subsection name="Objective">
                <p>
                    Demonstrate how to use the XQuery mediator for message content transformations
                </p>
            </subsection>
            <subsection name="Pre-requisites">
                <p>
                    <ul>
                        <li>
                            Deploy the SimpleStockQuoteService in the sample Axis2 server and start Axis2
                        </li>
                        <li>
                            Start Synapse using the configuration numbered 390 (repository/conf/sample/synapse_sample_390.xml)
                            <div class="command">
                                Unix/Linux: sh synapse.sh -sample 390<br/>
                                Windows: synapse.bat -sample 390
                            </div>
                        </li>
                    </ul>
                </p>
            </subsection>
            <subsection name="Executing the Client">
                <p>
                    This example uses the XQuery mediator to perform transformations. This sample
                    behaves the same as <a href="sample8.html">sample 8</a> and the only difference
                    is that this sample uses XQuery instead of XSLT for transformation.
                </p>
                <p>
                    Send a custom quote request to Synapse as follows.
                </p>
                <div class="command">ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy -Dmode=customquote</div>
                <p>
                    Request is transformed into a standard stock quote request by the XPery mediator.
                    The XQuery definition is loaded through a local entry. The response from Axis2
                    is transformed back to a custom quote response. In this case the XQuery definition
                    is loaded from the registry.
                </p>
            </subsection>
        </section>
        <p><a href="../samples.html">Back to Catalog</a></p>        
    </body>
</document>