<?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.
  -->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
           targetNamespace="http://ws.apache.org/ns/synapse"
           xmlns="http://ws.apache.org/ns/synapse">

    <xs:include schemaLocation="misc/target.xsd"/>
    <xs:include schemaLocation="misc/common.xsd"/>

    <xs:element name="proxy" type="Proxy">
        <xs:annotation>
            <xs:documentation source="description">
                Proxy Service element in the Synapse Configuration
            </xs:documentation>
        </xs:annotation>
    </xs:element>

    <xs:complexType name="Proxy">
        <xs:annotation>
            <xs:documentation source="description">
                This is the element type representing the proxy services
                in the Synapse Configuration
            </xs:documentation>
        </xs:annotation>
        <xs:choice maxOccurs="unbounded">
            <xs:element name="target" type="ProxyTarget" minOccurs="1" maxOccurs="1"/>
            <xs:element name="publishWSDL" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation source="description">
                        This is used to specify the WSDL of the proxy
                    </xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <!-- TODO : this needs to be altered in the configuration to support correctly -->
                    <xs:sequence>
                        <xs:group ref="inlineWsdl" minOccurs="0" maxOccurs="1"/>
                        <xs:element ref="resource" minOccurs="0" maxOccurs="unbounded"/>
                    </xs:sequence>
                    <xs:attribute name="uri" type="xs:anyURI" use="optional"/>
                    <xs:attribute name="key" type="xs:string" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="enableAddressing" minOccurs="0" maxOccurs="1"/>
            <xs:element name="enableSec" minOccurs="0" maxOccurs="1"/>
            <xs:element name="enableRM" minOccurs="0" maxOccurs="1"/>
            <xs:element name="policy" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:attribute name="key" type="xs:string" use="required"/>
                    <xs:attribute name="type" use="optional">
                        <xs:simpleType>
                            <xs:restriction>
                                <xs:enumeration value="in"/>
                                <xs:enumeration value="out"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                </xs:complexType>
            </xs:element>
            <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
        <xs:attributeGroup ref="monitoringAspect"/>
        <xs:attribute name="name" type="xs:string" use="required"/>
        <xs:attribute name="transports" type="xs:string" use="optional"/>
        <xs:attribute name="pinnedServers" type="xs:string" use="optional"/>
        <xs:attribute name="startOnLoad" type="xs:boolean" use="optional"/>
    </xs:complexType>

</xs:schema>