blob: 98d49f7a631e3d594af3f59fb1b9cbab918288a6 [file] [log] [blame]
<?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/common.xsd"/>
<xs:element name="endpoint" type="NamedEndpoint">
<xs:annotation>
<xs:documentation source="description">
&lt;endpoint&gt; declarations for the synapse configuration
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="NamedEndpoint">
<xs:annotation>
<xs:documentation source="description">
This is a named endpoint which will come on the top level synapse configuration
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="Endpoint">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Endpoint">
<xs:annotation>
<xs:documentation source="description">
This is a representation of an endpoint
</xs:documentation>
</xs:annotation>
<xs:choice minOccurs="1">
<xs:group ref="leafEndpoints" minOccurs="0" maxOccurs="1"/>
<xs:group ref="aggregatedEndpoints" minOccurs="0" maxOccurs="1"/>
<xs:group ref="dynamicLB" minOccurs="0" maxOccurs="1"/>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="optional"/>
<xs:attribute name="key" type="xs:string" use="optional"/>
</xs:complexType>
<xs:group name="leafEndpoints">
<xs:annotation>
<xs:documentation source="description">
This group represents the set of leaf level endpoints
</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element name="default" type="DefaultEndpoint"/>
<xs:element name="address">
<xs:complexType>
<xs:complexContent>
<xs:extension base="DefaultEndpoint">
<xs:attribute name="uri" type="xs:anyURI" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="wsdl">
<xs:complexType>
<xs:complexContent>
<xs:extension base="DefaultEndpoint">
<xs:group ref="inlineWsdl" minOccurs="0" maxOccurs="1"/>
<!-- TODO : fix the schema complication by changing the config -->
<xs:attribute name="uri" type="xs:anyURI" use="optional"/>
<xs:attribute name="service" type="xs:string" use="required"/>
<xs:attribute name="port" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:group>
<xs:group name="aggregatedEndpoints">
<xs:annotation>
<xs:documentation source="description">
This group represents the secondary endpoints like load balance and fail over
</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:group ref="lbEndpoints"/>
<xs:group ref="failoverEndpoints"/>
</xs:choice>
</xs:group>
<xs:group name="lbEndpoints">
<xs:annotation>
<xs:documentation source="description">
This group represents the secondary load balance endpoints
</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="session" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="type" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="simpleClientSession"/>
<!-- TODO : add other possible values -->
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="loadbalance" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="endpoint" minOccurs="2" maxOccurs="unbounded">
<xs:complexType>
<xs:choice>
<xs:group ref="leafEndpoints" minOccurs="0" maxOccurs="1"/>
<xs:group ref="failoverEndpoints" minOccurs="0" maxOccurs="1"/>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="optional"/>
<xs:attribute name="key" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="member" minOccurs="2" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="hostName" type="xs:string" use="optional"/>
<xs:attribute name="httpPort" type="xs:string" use="optional"/>
<xs:attribute name="httpsPort" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute name="algorithm" type="xs:string" default="org.apache.synapse.endpoints.algorithms.RoundRobin" use="optional"/>
<xs:attribute name="failover" type="xs:boolean" default="true" use="optional"/>
</xs:complexType>
</xs:element>
</xs:all>
</xs:group>
<xs:group name="failoverEndpoints">
<xs:annotation>
<xs:documentation source="description">
This group represents the secondary fail over endpoints
</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="failover" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="endpoint" minOccurs="2" maxOccurs="unbounded">
<xs:complexType>
<xs:choice>
<xs:group ref="leafEndpoints" minOccurs="0" maxOccurs="1"/>
<xs:group ref="lbEndpoints" minOccurs="0" maxOccurs="1"/>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="optional"/>
<xs:attribute name="key" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:group>
<xs:group name="dynamicLB">
<xs:annotation>
<xs:documentation source="description">
This group represents the dynamic loadbalance endpoint
</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="dynamicLoadbalance" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="membershipHandler" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="property" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="class" type="xs:string" use="optional" default="org.apache.synapse.core.axis2.Axis2LoadBalanceMembershipHandler"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="algorithm" type="xs:string" use="optional" default="org.apache.synapse.endpoints.algorithms.RoundRobin"/>
<xs:attribute name="failover" type="xs:boolean" use="optional" default="true"/>
</xs:complexType>
</xs:element>
</xs:all>
</xs:group>
<xs:complexType name="DefaultEndpoint">
<xs:annotation>
<xs:documentation source="description">
This is the type declaration of the default endpoint
</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="enableRM" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="policy" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="enableSec" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="policy" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="enableAddressing" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="version" use="optional" default="final">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="final"/>
<xs:enumeration value="submission"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="separateListener" use="optional" type="xs:boolean" default="false"/>
</xs:complexType>
</xs:element>
<xs:element name="timeout" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:all>
<xs:element name="duration" minOccurs="0" maxOccurs="1" type="xs:long"/>
<xs:element name="responseAction" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="discard"/>
<xs:enumeration value="fault"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="markForSuspension" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:all>
<xs:element name="errorCodes" minOccurs="0" maxOccurs="1" type="xs:string"/>
<xs:element name="retriesBeforeSuspension" minOccurs="0" maxOccurs="1" type="xs:integer"/>
<xs:element name="retryDelay" minOccurs="0" maxOccurs="1" type="xs:long"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="suspendOnFailure" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:all>
<xs:element name="errorCodes" minOccurs="0" maxOccurs="1" type="xs:string"/>
<xs:element name="initialDuration" minOccurs="0" maxOccurs="1" type="xs:long"/>
<xs:element name="progressionFactor" minOccurs="0" maxOccurs="1" type="xs:integer"/>
<xs:element name="maximumDuration" minOccurs="0" maxOccurs="1" type="xs:long"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="suspendDurationOnFailure" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation source="description">
This is deprecated, please use the suspendOnFailure
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
<xs:attributeGroup ref="commonEndpoint"/>
</xs:complexType>
<xs:attributeGroup name="commonEndpoint">
<xs:annotation>
<xs:documentation source="description">
This group of attributes represents the common endpoint attribute set
</xs:documentation>
</xs:annotation>
<xs:attribute name="format" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="soap11"/>
<xs:enumeration value="soap12"/>
<xs:enumeration value="pox"/>
<xs:enumeration value="get"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="optimize" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="mtom"/>
<xs:enumeration value="swa"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="encoding" type="xs:string" use="optional"/>
<xs:attributeGroup ref="monitoringAspect"/>
</xs:attributeGroup>
</xs:schema>