<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<xsd:schema xmlns="http://cxf.apache.org/blueprint/simple"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:beans="http://www.osgi.org/xmlns/blueprint/v1.0.0"
  xmlns:cxf-beans="http://cxf.apache.org/configuration/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  targetNamespace="http://cxf.apache.org/blueprint/simple" 
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"  >

  <xsd:import namespace="http://www.osgi.org/xmlns/blueprint/v1.0.0" schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"/>
  <xsd:import namespace="http://cxf.apache.org/configuration/beans" schemaLocation="http://cxf.apache.org/schemas/configuration/cxf-beans.xsd"/>

  <xsd:element name="server" type="serverType">
    <xsd:annotation>
      <xsd:documentation>Configures a server implemented using the Simple front-end.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  
  <xsd:complexType name="serverType">
    <xsd:complexContent>
      <xsd:extension base="beans:Tcomponent">
        <xsd:all>
          <xsd:element name="binding" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Configures the message binding used by the endpoint. Message bindings are configured using implementations of the 
                  org.apache.cxf.binding.BindingFactory interface. The SOAP binding is configured using the soap:soapBinding bean.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="dataBinding" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Configures the data binding used by the endpoint.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="executor" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Configures a Java executor to handle the service.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="features" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a list of beans that configure advanced features.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>          
          <xsd:element name="inInterceptors" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a list of interceptors to process incoming requests.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="inFaultInterceptors" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a list of interceptors to process incoming fault messages.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="invoker" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies an implementation of the org.apache.cxf.service.Invoker interface to be used by the service. The Invoker 
                  implementation controls how a service is invoked. For example, it controls if each request is handled by a new instance of the 
                  service implementation or if state is preserved across invocations.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="outInterceptors" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a list of interceptors to process outgoing responses.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a list of interceptors to process outgoing fault messages.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="properties" type="beans:Tmap" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a map of properties that are passed to the endpoint.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="schemaLocations" type="schemasType" minOccurs="0"/>
          <xsd:element name="serviceBean" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Configures the bean implementing the service. If this child is used you should not use the serviceBean attribute.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="serviceFactory" type="xsd:anyType" minOccurs="0"/>
        </xsd:all>
        <!--xsd:attributeGroup ref="cxf-beans:beanAttributes"/-->
        <xsd:attribute name="address" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies the HTTP address of the endpoint. This value will override the value specified in the services 
                contract.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="bindingId" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies the ID of the data binding the service will use. The ID is the namespace of the WSDL extensions used to configure the
                binding.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="bus" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies the ID of the Spring bean configuring the bus managing the endpoint.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="serviceClass" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies the name of the class implementing the service. This attribute is useful when you specify the implementor 
                with the ref bean which is wrapped by using Spring AOP.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="serviceBean" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies the class implementing the service. You can specify the implementation class using either the class 
                name or an ID reference to a Spring bean configuring the implementation class. This class needs to be on the 
                classpath.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="start" type="xsd:boolean" default="true">
            <xsd:annotation>
              <xsd:documentation>Specifies if the service should be automatically published.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="transportId" type="xsd:string">
        	<xsd:annotation>
              <xsd:documentation>Specifies the transportId that endpoint will use, it will override the transport which is defined in the wsdl.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="wsdlLocation" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies the location of the endpoint's WSDL contract. The WSDL contract's location is relative to the folder 
                from which the service is deployed.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="endpointName" type="xsd:QName">
            <xsd:annotation>
              <xsd:documentation>Specifies the value of the service's WSDL port element's name attribute.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="serviceName" type="xsd:QName">
            <xsd:annotation>
              <xsd:documentation>Specifies the value of the service's WSDL service element's name attribute.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:element name="client" type="clientType">
    <xsd:annotation>
      <xsd:documentation>Configures a client implemented using the Simple front-end.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  
  <xsd:complexType name="clientType">
    <xsd:complexContent>
      <xsd:extension base="beans:Tcomponent">
        <xsd:all>
          <xsd:element name="binding" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Configures the message binding used by the endpoint. Message bindings are configured using implementations of the 
                  org.apache.cxf.binding.BindingFactory interface. The SOAP binding is configured using the soap:soapBinding bean.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="conduitSelector" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a org.apache.cxf.endpoint.ConduitSelector implementation. ConduitSelector implementations override the 
                  strategy used to select the Conduit used to process outgoing messages.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="dataBinding" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Configures the data binding used by the endpoint.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="features" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a list of beans that configure advanced features like WS-RM.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="inInterceptors" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a list of interceptors to process incoming responses.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="inFaultInterceptors" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a list of interceptors to process incoming fault messages.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="outInterceptors" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a list of interceptors to process outgoing requests.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a list of interceptors to process outgoing fault messages.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
          <xsd:element name="properties" type="beans:Tmap" minOccurs="0">
              <xsd:annotation>
                <xsd:documentation>Specifies a map of properties that are passed to the endpoint.</xsd:documentation>
              </xsd:annotation>
          </xsd:element>
        </xsd:all>
        <!-- xsd:attributeGroup ref="cxf-beans:beanAttributes"/-->
        <xsd:attribute name="address" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies the HTTP address of the endpoint on which the client makes requests. This value will override the value 
                specified in the services contract.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="bindingId" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies the ID of the data binding the client will use. The ID is the namespace of the WSDL extensions used to 
                configure the binding.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="bus" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies the ID of the Spring bean configuring the bus managing the endpoint.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="endpointName" type="xsd:QName">
            <xsd:annotation>
              <xsd:documentation>Specifies the value of the WSDL port element's name attribute for the service on which the client is making 
                requests.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="password" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies a password that is used for simple username/password authentication.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="serviceClass" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies the name of the class implementing the client.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="serviceName" type="xsd:QName">
            <xsd:annotation>
              <xsd:documentation>Specifies the value of the WSDL service element's name attribute for the service on which the client is making 
                requests.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="username" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies a password that is used for simple username/password authentication.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
        <xsd:attribute name="transportId" type="xsd:string">
        	<xsd:annotation>
              <xsd:documentation>Specifies the transportId that endpoint will use, it will override the transport which is defined in the wsdl.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>        
        <xsd:attribute name="wsdlLocation" type="xsd:string">
            <xsd:annotation>
              <xsd:documentation>Specifies the location of the endpoint's WSDL contract. The WSDL contract's location is relative to the folder 
                from which the client is deployed.</xsd:documentation>
            </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <xsd:complexType name="schemasType">
    <xsd:sequence>
      <xsd:element name="schemaLocation" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
  
</xsd:schema>