<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~  Copyright (c) 2017, WSO2 Inc. (http://wso2.com) All Rights Reserved.
  ~
  ~  WSO2 Inc. 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.
  ~
  -->

<definitions xmlns="http://ws.apache.org/ns/synapse">
    <proxy name="xsltTransformPropertyTestProxy" transports="https http"
           startOnLoad="true" trace="disable">
        <description/>
        <target>
            <inSequence>
                <log level="custom">
                    <property name="text" value="---------Request Message------------"/>
                </log>
                <property name="REQUEST_SYMBOL" value="WSO2" scope="default"/>
                <log level="full"/>
                <xslt key="xsltTransformRequestWithProperty">
                    <property xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
                              xmlns:ns="http://org.apache.synapse/xsd" name="REQUEST_SYMBOL"
                              expression="get-property('REQUEST_SYMBOL')"/>
                </xslt>
                <log level="custom">
                    <property name="text" value="---------Transformed Request Message------------"/>
                </log>
                <log level="full"/>
                <send>
                    <endpoint key="StockQuote_9000_EP"/>
                </send>
            </inSequence>
            <outSequence>
                <log level="custom">
                    <property name="text" value="---------Response Message------------"/>
                </log>
                <log level="full"/>
                <property name="LAST_PRICE" value="37.50"/>
                <xslt key="xsltTransformResponseWithProperty">
                    <property name="LAST_PRICE" value="37.50"/>
                </xslt>
                <log level="custom">
                    <property name="text" value="---------Transformed Response Message------------"/>
                </log>
                <log level="full"/>
                <send/>
            </outSequence>
            <faultSequence>
                <makefault>
                    <code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
                    <reason xmlns:ns3="http://org.apache.synapse/xsd"
                            expression="get-property('ERROR_MESSAGE')"/>
                </makefault>
                <header name="To" expression="get-property('ReplyTo')"/>
                <send/>
            </faultSequence>
        </target>
    </proxy>
    <localEntry key="xsltTransformRequestWithProperty">
        <xsl:stylesheet version="2.0"
                        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                        xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
                        xmlns:m0="http://services.samples"
                        exclude-result-prefixes="m0 fn">
            <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
            <xsl:param name="REQUEST_SYMBOL"/>
            <xsl:template match="/">
                <xsl:apply-templates select="//m0:CheckPriceRequest"/>
            </xsl:template>

            <xsl:template match="m0:CheckPriceRequest">

                <m:getQuote xmlns:m="http://services.samples">
                    <m:request>
                        <m:symbol>
                            <xsl:value-of select="$REQUEST_SYMBOL"/>
                        </m:symbol>
                    </m:request>
                </m:getQuote>

            </xsl:template>
        </xsl:stylesheet>
    </localEntry>
    <localEntry key="xsltTransformResponseWithProperty">
        <xsl:stylesheet version="2.0"
                        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                        xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
                        xmlns:m0="http://services.samples"
                        xmlns:ax21="http://services.samples/xsd"
                        exclude-result-prefixes="m0 ax21 fn">
            <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
            <xsl:param name="LAST_PRICE"/>
            <xsl:template match="/">
                <xsl:apply-templates select="//m0:return"/>
            </xsl:template>

            <xsl:template match="m0:return">
                <m:CheckPriceResponse xmlns:m="http://services.samples/xsd">
                    <m:Code>
                        <xsl:value-of select="ax21:symbol"/>
                    </m:Code>
                    <m:Price>
                        <xsl:value-of select="$LAST_PRICE"/>
                    </m:Price>
                </m:CheckPriceResponse>
            </xsl:template>
        </xsl:stylesheet>
    </localEntry>
    <endpoint name="StockQuote_9000_EP">
        <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
    </endpoint>
</definitions>