<?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:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:beans="http://www.springframework.org/schema/beans"
  xmlns:cxf-beans="http://cxf.apache.org/configuration/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  targetNamespace="http://cxf.apache.org/core"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"  >

  <xsd:import namespace="http://www.springframework.org/schema/beans" schemaLocation="http://www.springframework.org/schema/beans/spring-beans.xsd"/>
  <xsd:import namespace="http://cxf.apache.org/configuration/beans" schemaLocation="cxf-beans.xsd"/>

  <xsd:annotation>
    <xsd:documentation>
      This schema defines beans representing the CXF bus and its core features.
    </xsd:documentation>
  </xsd:annotation>

  <xsd:element name="logging">
    <xsd:annotation>
      <xsd:documentation>
        The logging feature enables you to log the content of inbound and outbound messages and faults.
        The content is logged by all log handlers configured in your java.util.logging configuration file,
        provided the log level for classes org.apache.cxf.interceptor.LoggingInInterceptor and
        org.apache.cxf.interceptor.LoggingOutInterceptor is at least INFO.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:sequence />
      <xsd:attribute name="limit" type="xsd:int" use="optional" default="102400"/>
      <xsd:attribute name="id" type="xsd:string" use="optional"/>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="fastinfoset">
    <xsd:annotation>
      <xsd:documentation>
        The fastinfoset feature enables you to turn on using fastinfoset encoding of
        xml payloads.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexType>
      <xsd:sequence />
      <xsd:attribute name="force" type="xsd:boolean" use="optional" default="false"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="bus">
    <xsd:complexType>
      <xsd:all>
        <xsd:element name="features" type="xsd:anyType" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation>
                The list of features that are applied to the bus.
                Child elements of this element must be beans whose bean class extends
                org.apache.cxf.AbstractFeature, or references to such beans.
            </xsd:documentation>
        </xsd:annotation>
        </xsd:element>
        <xsd:element name="inInterceptors" type="xsd:anyType" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation>
                The list of interceptors that the bus contributes to all inbound message interceptor chains.
                Child elements of this element must be beans whose bean class implements
                org.apache.cxf.Interceptor, or references to such beans.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="inFaultInterceptors" type="xsd:anyType" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation>
                The list of interceptors that the bus contributes to all inbound fault interceptor chains.
                Child elements of this element must be beans whose bean class implements
                org.apache.cxf.Interceptor, or references to such beans.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="outInterceptors" type="xsd:anyType" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation>
                The list of interceptors that the bus contributes to all outbound message interceptor chains.
                Child elements of this element must be beans whose bean class implements
                org.apache.cxf.Interceptor, or references to such beans.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0">
          <xsd:annotation>
            <xsd:documentation>
                The list of interceptors that the bus contributes to all outbound fault interceptor chains.
                Child elements of this element must be beans whose bean class implements
                org.apache.cxf.Interceptor, or references to such beans.
            </xsd:documentation>
          </xsd:annotation>
        </xsd:element>
        <xsd:element name="properties" type="beans:mapType" minOccurs="0">
            <xsd:annotation>
                <xsd:documentation>Specifies a map of properties that are passed to the bus.</xsd:documentation>
            </xsd:annotation>
        </xsd:element>
      </xsd:all>
      <xsd:attributeGroup ref="cxf-beans:beanAttributes"/>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
